Pokemon Gen3 Calculator

Uma calculadora de dano e status para Pokémon Geração 3.

Documentação

pokemon-gen3-calc-mcp

Servidor MCP (Model Context Protocol) para cálculo de status e dano da terceira geração de Pokémon (Ruby, Sapphire, Emerald, FireRed, LeafGreen).

Visão geral

Este projeto funciona como uma ferramenta externa para que LLMs realizem cálculos precisos de Pokémon. Implementado como servidor MCP, pode ser utilizado a partir de clientes MCP como o Claude Desktop.

Principais funcionalidades

  • Cálculo de status (calculate_status): cálculo preciso dos valores reais considerando base stats, IVs, EVs e natureza

  • Cálculo de dano (calculate_damage): cálculo abrangente de dano considerando os seguintes fatores:

    • Compatibilidade de tipos
    • Bônus de mesmo tipo (STAB)
    • Efeitos de habilidades (Blaze, Torrent, Overgrow, etc.)
    • Efeitos de itens (Choice Band, itens de aumento de tipo, etc.)
    • Efeitos climáticos (sol, chuva, tempestade de areia, granizo)
    • Condições de campo (Reflect, Light Screen, Mud Sport, Water Sport)
    • Modificadores de rank de atributos (-6 a +6)
    • Determinação de golpe crítico
    • Tratamento de movimentos especiais (Weather Ball, Low Kick, Solar Beam, Self-Destruct/Explosion)
  • Cálculo exaustivo de EVs do lado atacante (calculate_damage_matrix_varying_attack):

    • Fixa os EVs do defensor e calcula a matriz de dano testando todas as combinações de EVs do atacante
    • Útil para encontrar o mínimo de EVs de ataque necessário para derrotar o oponente com certeza
  • Cálculo exaustivo de EVs do lado defensor (calculate_damage_matrix_varying_defense):

    • Fixa os EVs do atacante e calcula a matriz de dano testando todas as combinações de EVs do defensor
    • Útil para avaliar a distribuição de EVs defensivos necessária para sobreviver a ataques específicos

Requisitos

  • Node.js (recomenda-se instalação via Volta)
  • npm

Instalação

# リポジトリのクローン
git clone https://github.com/ptrst102/pokemon-gen3-calc-mcp.git
cd pokemon-gen3-calc-mcp

# 依存関係のインストール
npm install

Como usar

Integração com clientes MCP

  1. Execute o build para gerar os arquivos no diretório dist:
npm run build
  1. Adicione o seguinte ao arquivo de configuração do cliente MCP (como o Claude Desktop):
{
  "mcpServers": {
    "pokemon-gen3-calc": {
      "command": "node",
      "args": ["path/to/pokemon-gen3-calc-mcp/dist/index.js"]
    }
  }
}

Tratamento de movimentos especiais

Este servidor MCP suporta o tratamento dos seguintes movimentos especiais:

Weather Ball

  • O tipo e o poder mudam de acordo com o clima
  • Sol: tipo Fogo, poder 100
  • Chuva: tipo Água, poder 100
  • Granizo: tipo Gelo, poder 100
  • Tempestade de areia: tipo Pedra, poder 100

Low Kick

  • O poder muda de acordo com o peso do Pokémon adversário
  • Poder de 20 a 120 dependendo do peso

Solar Beam

  • O dano é reduzido pela metade em chuva, tempestade de areia ou granizo

Self-Destruct/Explosion

  • Calcula considerando a Defesa do oponente pela metade

Para desenvolvedores

Geração de esquemas

npm run schemagen

Este projeto adota um mecanismo de geração automática de esquemas JSON para MCP (Model Context Protocol) a partir de esquemas Zod.

Após modificar os esquemas Zod em src/tools/*/handlers/schemas/, execute npm run schemagen para gerar automaticamente src/tools/*/generated/inputSchema.ts.

Iniciando o servidor de desenvolvimento

npm run dev

Testes de integração

Para verificar se o servidor de desenvolvimento está funcionando corretamente, fornecemos um script de teste de integração:

# MCPサーバーへの実際のリクエストをテスト
npm run test:integration

O teste de integração verifica o seguinte:

  • Conexão com o servidor
  • Cálculo de status pela ferramenta calculate_status
  • Cálculo de dano pela ferramenta calculate_damage
  • Cálculo exaustivo de EVs do atacante pela ferramenta calculate_damage_matrix_varying_attack
  • Cálculo exaustivo de EVs do defensor pela ferramenta calculate_damage_matrix_varying_defense
  • Tratamento de erros

Ambiente de desenvolvimento recomendado

Para o desenvolvimento deste projeto, recomendamos o uso das seguintes ferramentas:

GitHub CLI (gh)

Recomendamos fortemente a instalação do GitHub CLI para agilizar a integração com o GitHub.

Consulte as instruções oficiais de instalação.

Claude Code

Recomendamos o uso da ferramenta de desenvolvimento assistida por IA Claude Code. Como este projeto possui diretrizes de desenvolvimento definidas em CLAUDE.md, o uso do Claude Code facilita a geração de código.

Comandos de desenvolvimento

# 型チェック
npm run typecheck

# テスト実行
npm run test                    # 全テスト実行
npm run test -- --watch         # ウォッチモードでテスト実行
npm run test -- src/tools/calculateDamage  # 特定ディレクトリのテスト
npm run test -- src/utils/adjustSpecialMoves/adjustSpecialMoves.spec.ts  # 特定ファイルのテスト

# テストカバレッジ測定
npm run test:coverage           # カバレッジ付きでテスト実行
# カバレッジレポート:
# - コンソールに概要が表示されます
# - HTMLレポートは coverage/index.html で確認できます

# リント・フォーマット
npm run lint    # チェックのみ
npm run format  # 自動修正

# 全チェック(型チェック + リント + テスト)
npm run check

# 結合テスト(MCPサーバーへの実際のリクエストをテスト)
npm run test:integration

# スキーマ生成(ZodスキーマからMCP用JSONスキーマを生成)
# src/tools/*/handlers/schemas/ 内のZodスキーマを変更した後に実行
npm run schemagen

# ビルド(dist/ディレクトリに出力)
npm run build

Estrutura do projeto

Estrutura principal de diretórios:

src/
├── data/          # ポケモンデータ(種族値、わざ、もちもの等)
├── tools/         # MCPツール定義とハンドラ
│   ├── calculateStatus/
│   ├── calculateDamage/
│   ├── calculateDamageMatrixVaryingAttack/
│   └── calculateDamageMatrixVaryingDefense/
├── types/         # 共通型定義
└── utils/         # 共通ユーティリティ
    ├── adjustSpecialMoves/     # 特殊な技の処理
    ├── calculateDamageCore/    # ダメージ計算コアロジック
    └── error/                  # エラーハンドリング

Stack tecnológico

  • TypeScript (ESNext, ESM)
  • Model Context Protocol SDK
  • Zod (validação)
  • Vitest (testes)
  • Biome (linter/formatter)
  • esbuild (build)

Licença

MIT