pokemon-gen3-calc-mcp
An MCP server that enables accurate status and damage calculations for third-generation Pokémon games, including support for complex factors like weather, abilities, and items. It also provides tools for calculating optimal effort value (EV) distributions through brute-force damage matrix simulations.
README
pokemon-gen3-calc-mcp
ポケモン第三世代(ルビー・サファイア・エメラルド・ファイアレッド・リーフグリーン)のステータスとダメージ計算を行う MCP(Model Context Protocol)サーバーです。
概要
このプロジェクトは、LLM がポケモンの計算を正確に行うための外部ツールとして機能します。MCP サーバーとして実装されており、Claude Desktop などの MCP クライアントから利用できます。
主な機能
-
ステータス計算 (
calculate_status): 種族値、個体値、努力値、せいかくを考慮した正確な実数値計算 -
ダメージ計算 (
calculate_damage): 以下の要素を考慮した総合的なダメージ計算- タイプ相性
- タイプ一致補正
- とくせい効果(もうか、げきりゅう、しんりょくなど)
- もちもの効果(こだわりハチマキ、タイプ強化アイテムなど)
- 天候効果(はれ、あめ、すなあらし、あられ)
- 場の状態(リフレクター、ひかりのかべ、どろあそび、みずあそび)
- 能力ランク補正(-6〜+6)
- 急所判定
- 特殊な技の処理(ウェザーボール、けたぐり、ソーラービーム、じばく・だいばくはつ)
-
攻撃側努力値総当たり計算 (
calculate_damage_matrix_varying_attack):- 防御側の努力値を固定し、攻撃側の努力値を総当たりしてダメージ行列を計算
- 相手を確実に倒すための最小限の攻撃努力値を見つける際に有用
-
防御側努力値総当たり計算 (
calculate_damage_matrix_varying_defense):- 攻撃側の努力値を固定し、防御側の努力値を総当たりしてダメージ行列を計算
- 特定の攻撃を耐えるために必要な防御努力値配分を検討する際に有用
必要な環境
- Node.js(Volta 経由でのインストールを推奨)
- npm
インストール
# リポジトリのクローン
git clone https://github.com/ptrst102/pokemon-gen3-calc-mcp.git
cd pokemon-gen3-calc-mcp
# 依存関係のインストール
npm install
使い方
MCP クライアントとの連携
- ビルドを実行して dist ディレクトリにファイルを生成:
npm run build
- MCP クライアント(Claude Desktop など)の設定ファイルに以下を追加:
{
"mcpServers": {
"pokemon-gen3-calc": {
"command": "node",
"args": ["path/to/pokemon-gen3-calc-mcp/dist/index.js"]
}
}
}
特殊な技の処理
この MCP サーバーは以下の特殊な技の処理に対応しています:
ウェザーボール
- 天候によってタイプと威力が変化
- はれ: ほのおタイプ、威力 100
- あめ: みずタイプ、威力 100
- あられ: こおりタイプ、威力 100
- すなあらし: いわタイプ、威力 100
けたぐり
- 相手のポケモンの体重によって威力が変化
- 体重に応じて 20〜120 の威力
ソーラービーム
- あめ、すなあらし、あられの場合、ダメージが半減
じばく・だいばくはつ
- 相手の防御を半分として計算
開発者向け
スキーマの生成
npm run schemagen
このプロジェクトでは、Zod スキーマから MCP(Model Context Protocol)用の JSON スキーマを自動生成する仕組みを採用しています。
src/tools/*/handlers/schemas/ 内の Zod スキーマを変更したのち、
npm run schemagen を実行すると
src/tools/*/generated/inputSchema.ts が自動生成されます。
開発サーバーの起動
npm run dev
結合テスト
開発サーバーが正しく動作しているか確認するために、結合テストスクリプトを用意しています:
# MCPサーバーへの実際のリクエストをテスト
npm run test:integration
結合テストでは以下を検証します:
- サーバーへの接続
calculate_statusツールによるステータス計算calculate_damageツールによるダメージ計算calculate_damage_matrix_varying_attackツールによる攻撃側努力値総当たり計算calculate_damage_matrix_varying_defenseツールによる防御側努力値総当たり計算- エラーハンドリング
推奨開発環境
このプロジェクトの開発には以下のツールの利用を推奨します:
GitHub CLI (gh)
GitHub との連携を効率化するため、GitHub CLI の導入を強く推奨します。
公式のインストール手順を参考にしてください。
Claude Code
AI 支援開発ツール Claude Code の活用を推奨します。このプロジェクトは CLAUDE.md による開発ガイドラインが整備されているため、Claude Code を使用することでコード生成が容易になります。
開発コマンド
# 型チェック
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
プロジェクト構造
主要なディレクトリ構成:
src/
├── data/ # ポケモンデータ(種族値、わざ、もちもの等)
├── tools/ # MCPツール定義とハンドラ
│ ├── calculateStatus/
│ ├── calculateDamage/
│ ├── calculateDamageMatrixVaryingAttack/
│ └── calculateDamageMatrixVaryingDefense/
├── types/ # 共通型定義
└── utils/ # 共通ユーティリティ
├── adjustSpecialMoves/ # 特殊な技の処理
├── calculateDamageCore/ # ダメージ計算コアロジック
└── error/ # エラーハンドリング
技術スタック
- TypeScript (ESNext, ESM)
- Model Context Protocol SDK
- Zod (バリデーション)
- Vitest (テスト)
- Biome (リンター/フォーマッター)
- esbuild (ビルド)
ライセンス
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。