使用说明
宝可梦MCP服务器——数据资源+作战模拟工具
概述
该项目实现了一个MCP(模型上下文协议)服务器,该服务器为AI模型提供了两个关键功能:
1-Pokémon数据资源-公开来自公共PokéAPI(https://pokeapi.co/ ).
2-战斗模拟工具-一种模拟任何两个宝可梦之间战斗的工具,包括类型效果、基于统计的伤害、回合顺序和基本状态效果。
该服务器充当人工智能和口袋妖怪世界之间的桥梁,使LLM能够检索知识并交互式模拟战斗。
第1部分:口袋妖怪数据资源
实施
-
连接到公共PokéAPI(https://pokeapi.co/ )
-
公开全面的口袋妖怪信息,包括:
-
基本统计数据:生命值、攻击、防御、特殊攻击、特殊防御、速度
-
类型(例如,火、水、草)
-
能力
-
可用移动及其效果(力量、精度、类型、效果文本)
-
进化信息
MCP资源
- 资源:口袋妖怪://{name}
- 返回JSON,包括统计数据、类型、能力、移动(带效果)和进化链。
- 实现MCP资源设计模式,使LLM可以访问此数据。
交付物
- 带有口袋妖怪数据资源的MCP服务器的代码。
- 描述资源如何公开数据的文档(此README)。
- 示例查询(examples/llm_examples.md)。
第2部分:作战模拟工具
实施
-
工具:simulate_battle(pokemon_a,pokemon_b,max_turns=100,seed=None)
-
使用以下方式模拟任意两个宝可梦之间的战斗:
-
类型有效性计算(例如,水>火)
-
基于属性和移动力的伤害计算
-
基于速度统计的转弯顺序
状态影响:
- 瘫痪——有机会跳过一个转弯
- 烧伤——经常性HP损失
- 毒药——反复出现的生命值损失
- 详细的战斗日志,显示每个回合的行动和结果
- 获胜者决定(第一个Pokemon晕倒,或在最大回合后获得更高的生命值)
MCP工具
- 通过MCP作为可调用工具公开:simulate_battle
- 返回JSON对象,例如:
{
"winner": "blastoise",
"log": [
"--- Turn 1 ---",
"charizard used fire-punch → blastoise lost 14 HP!",
"blastoise is now affected by burn!",
...
]
}
交付物
- 遵循MCP工具规范的作战模拟工具代码
- examples/llm_examples.md中的示例用法
项目包装
提交内容包括一个ZIP文件,其中包含:
- 所有代码(pkmon_core/server.py,pkmon_core/战斗.py)
- 支持文件(requirements.txt、README.md、示例/)
- 测试脚本(test_part1.py)
- 清晰的设置和使用说明
安装和设置
需求
- Python 3.10+
- 推荐虚拟环境
设置
git clone https://github.com/TaifAlsadoon/pokemon-mcp-server.git
cd pokemon-mcp-server
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
运行和测试
运行MCP服务器
python -m pkmon_core.server
注意:服务器在stdio模式下运行,将显示为空闲,等待MCP客户端。按Ctrl+C停止。
Python快速测试
python - << 'PY'
from pkmon_core.server import get_pokemon, simulate_battle
print("Resource sample (pikachu) ->")
print(get_pokemon("pikachu")[:200], "...\n")
print("Battle sample ->")
res = simulate_battle("charizard", "blastoise", seed=42, max_turns=20)
print("Winner:", res["winner"])
print("\n".join(res["log"][:10]))
PY
预期产量:
- 皮卡丘的JSON数据(类型、统计、移动、进化链)
- 战斗日志,包括回合行动和获胜者(例如Blastoise)
LLM使用示例
有关提示示例,请参见examples/llm_examples.md,例如:
- 总结宝可梦的属性、动作和进化
- 模拟战斗并解释获胜者获胜的原因
看 examples/llm_examples.md 以获取快速示例。
备注
- 简化机制:忽略PP、物品、天气等。
- 专注于清晰度和教育性战斗模拟
- 易于扩展以添加更多机制