ai-rotom
by nonz250
README.md
# ai-rotom
ポケモンバトルアドバイザー。
Claude Code, Codex などの AI Agent から MCP ツールとして呼び出し、 ポケモンの種族値・技データ・タイプ相性・ダメージ計算・パーティ分析・選出判断に利用できます。
## 著作権・商標
本プロジェクトはポケモンの**ファンメイドツール**です。
**ポケモンに関する著作権・商標権はすべて権利者に帰属します。**
- © Nintendo / Creatures Inc. / GAME FREAK Inc.
- © Pokémon.
- 「ポケットモンスター」「ポケモン」「Pokémon」および関連する名称・ロゴは、任天堂株式会社、株式会社クリーチャーズ、株式会社ゲームフリーク、株式会社ポケモンの商標または登録商標です。
- 「ポケモンチャンピオンズ」および本ツールが対象とするゲームタイトルは上記権利者の著作物です。
### 本プロジェクトの位置付け
- 本プロジェクトは**ファンメイド作品** であり、ポケモンの**公式商品ではありません**。
- 任天堂株式会社、株式会社ポケモン、株式会社クリーチャーズ、株式会社ゲームフリークは、本プロジェクトに関与していません。
- 本プロジェクトは対戦研究・個人利用を目的としており、**商用を目的とするものではありません**。
### ライセンスと権利尊重について
本プロジェクトのソースコードは下記「ライセンス」セクションのとおり MIT License で配布されますが、**利用・改変・再配布に際してはポケモンに関する著作権・商標権を最大限尊重してください**。
具体的には以下の行為を避けてください:
- ポケモンの公式ツール・公式サービスであるかのように誤認させる表示
- ポケモン関連の著作物(ゲーム画像・音声・ロゴ等)を権利者の許諾なく本プロジェクトに同梱すること
- 権利者の利益を損なう形での商用利用
権利者から連絡をいただいた場合は、速やかに対応します。
## ライセンス
本プロジェクトのソースコードは [MIT License](./LICENSE) で提供されます。
ただし前述のとおり、ポケモンに関する権利は MIT License の対象ではなく、各権利者に帰属します。
## クイックスタート
### 前提
- Node.js >= 24
### 動作確認
```bash
npx -y @nonz250/ai-rotom
```
標準入出力で MCP プロトコルが動くため、実運用は下記の MCP クライアント経由で行います。
## MCP クライアント設定
### Claude Code
プロジェクトまたはユーザー設定に追加。
```bash
claude mcp add ai-rotom -- npx -y @nonz250/ai-rotom
```
### Codex
プロジェクトまたはユーザー設定に追加。
```bash
codex mcp add ai-rotom -- npx -y @nonz250/ai-rotom
```
## 利用可能な MCP ツール
プロンプトに入力する言語は日本語・英語どちらでも可能です。
### 情報取得系
| ツール | 概要 |
|---|---|
| `get_pokemon_info` | ポケモンの基本情報(種族値・タイプ・特性) |
| `get_pokemon_summary` | ポケモンの総合プロファイル(防御相性・覚える技の集計・実数値) |
| `get_move_info` | 技の情報 |
| `get_ability_info` | 特性の情報 |
| `get_item_info` | 持ち物の情報 |
| `get_nature_info` | 性格の plus/minus |
| `get_type_info` | タイプ相性(攻撃時・受け時) |
| `get_condition_info` | 天候/フィールド/状態異常/壁 |
| `get_learnset` | 覚える技一覧 |
### 検索系
| ツール | 概要 |
|---|---|
| `search_pokemon` | タイプ・種族値条件で検索 |
| `search_pokemon_by_move` | 技を覚えるポケモン逆引き |
| `search_pokemon_by_ability` | 特性を持つポケモン逆引き |
| `search_pokemon_by_type_effectiveness` | タイプ相性条件で逆引き |
### 計算系
| ツール | 概要 |
|---|---|
| `calculate_stats` | 実数値計算 |
| `calculate_damage_single` | 1 対 1 の 1 技ダメ計 |
| `calculate_damage_all_moves` | 1 対 1 の全技ダメ計 |
| `calculate_damage_party_matchup` | 6v6 ダメ計 |
| `list_speed_tiers` | 素早さライン一覧 |
| `analyze_damage_range` | ダメ計+耐久逆計算(最小 SP 配分探索) |
### 分析系
| ツール | 概要 |
|---|---|
| `analyze_matchup` | 2 体対面分析 |
| `analyze_party_weakness` | パーティ弱点分析 |
| `analyze_party_coverage` | パーティ攻撃カバレッジ分析 |
| `analyze_selection` | 6v6 選出判断一括分析 |
| `find_counters` | 対策候補の双方向ダメ計・素早さ・タイプ相性 |
### パーティ永続化
自分のパーティ構築を `~/.ai-rotom/parties.json` に保存し、セッションをまたいで再利用できる。
| ツール | 概要 |
|---|---|
| `save_party` | パーティを保存 (同名は上書き) |
| `load_party` | 保存済みパーティを 1 件取得 |
| `list_parties` | 保存済みパーティのサマリ一覧 |
| `delete_party` | 保存済みパーティを削除 |
## 使用例
AI クライアントに以下のように聞くと、内部でツールが自動で呼ばれます。
> 「カバルドンの対策候補を教えて」
e.g.) `find_counters` が呼ばれ、カバルドンの弱点タイプ(みず/くさ/こおり)を攻撃できるポケモン候補と、各候補の双方向ダメ計(候補→カバルドン / カバルドン→候補の全技)・素早さ比較・タイプ相性を返します。受け型か速攻型かといった対策方針の判断は AI が行う前提です。必要に応じてカバルドンの行動をプロンプトに入力し、あくび受けループに対する対策の検討をしてください。
> 「リザードン、ギャラドス、ピカチュウの 3 体パーティに足りないタイプ耐性は?」
e.g.) `analyze_party_weakness` が呼ばれ、各タイプを弱点に持つメンバー数(`teamWeaknesses`)と抜群を取れないタイプ(`uncoveredTypes`)を返します。致命性の判断は AI が文脈で行います。
## 既知の制限
- **一部ポケモン未登録**: ゲーム本編に登場するポケモンのうち、データとして未登録のものがあります(例: 一部の伝説・地域フォルム等)。順次対応予定。
- **一部の特性はダメージ計算に反映されません**: 計算エンジンが未対応の特性があり、効果がダメージ計算結果に含まれません。get_ability_info で効果を確認したうえで結果を解釈してください。
- **一部の持ち物はダメージ計算に反映されません**: 計算エンジンが未対応の持ち物があります。get_item_info で効果を確認したうえで結果を解釈してください。
- **型推定は未対応**: 相手の型(性格・持ち物・SP 配分)は明示指定するか、複数型を試行して検証する形になります。
- **メタゲーム情報は持ちません**: 使用率・流行型等の統計データは扱わないため、AI クライアント側の知識と組み合わせたり、WEB検索をさせて利用してください。
## 開発者向け
開発・コントリビュート方法・データ編集指針は [`CLAUDE.md`](./CLAUDE.md) を参照してください。
### コントリビュート
- バグ修正・機能追加の PR 大歓迎です
- データの追加・修正も歓迎します
## トラブルシューティング
### 入力エラー: 「ポケモン「XXX」が見つかりません」
- 日本語名の表記ゆれ(半角/全角)が原因の可能性があります
- エラーメッセージに表示される類似候補を参考にしてください
- フォルム違い(例: メガリザードンX / Y)は正式名称で指定してください
### 「能力ポイント(SP)は各ステータス 32 以下です」
- 従来の EV(252 等)を渡していないか確認してください
- ポケモンチャンピオンズ仕様では **各ステ 0-32 / 合計 0-66** です
This server cannot be deployed
Maintenance
ActivityActive
ResponsivenessResponsive