使用说明
口袋妖怪MCP服务器
一组 模型上下文协议(MCP) 用于通过Claude Desktop、Cursor和其他MCP客户端等人工智能助手访问口袋妖怪数据的服务器。
快速开始
先决条件
- Python 3.12+ 随着 紫外线 包管理器
- Docker 桌面版 (适用于Evolutions服务器/Neo4j)
- Node.js (用于MCP检验员测试)
设置
# Clone repository
git clone https://github.com/frabatx/pokemon-mcp-servers.git
cd pokemon-mcp-servers
# Setup a server (e.g. Biography Server)
cd servers/biography-server
uv sync
uv run main.py
# Expected: [READY] Server listening on stdio
# Test with MCP Inspector
npx @modelcontextprotocol/inspector uv run main.py
# Open http://localhost:5173
Neo4j设置(进化服务器)
# From project root
./setup.sh # macOS/Linux
.\setup.ps1 # Windows PowerShell
可用服务器
| 服务器 | 描述 | 数据源 | 工具 |
|---|---|---|---|
| 传记服务器 | 详细的口袋妖怪传记 | biographies.json (809口袋妖怪) |
4个工具 |
| 统计服务器 | 战斗统计、类型分析、比较 | statistics.csv (41列) |
16个工具 |
| 进化服务器 | 进化链和类型关系 | Neo4j图形数据库 | 2个工具 |
项目架构
pokemon-mcp-servers/
├── data/ # Shared data
│ ├── biographies.json
│ ├── statistics.csv
│ └── pokemon.cypher
├── docs/ # Documentation
│ ├── registry-pattern.md # Design pattern deep dive
│ └── new-server-guide.md # How to create a new server
├── servers/ # Independent MCP servers
│ ├── biography-server/
│ ├── statistics-server/
│ └── evolutions-server/
├── docker-compose.yml # Neo4j infrastructure
└── setup.sh / setup.ps1 # One-command Neo4j setup
每个服务器都遵循相同的结构:
my-server/
├── main.py # Entry point (uv run main.py)
├── src/
│ ├── tools/
│ │ ├── __init__.py # Auto-registration
│ │ ├── register.py # Registry pattern
│ │ └── *.py # Tool implementations
│ └── utils/
│ └── load_data.py # Data loading
└── pyproject.toml
注册模式
此项目使用高级 注册模式 用于可扩展的工具管理。添加新工具=创建1个文件。无需更改 main.py.
看 docs/register-pattern.md 进行全深度潜水。
客户端配置
克劳德桌面版
添加 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"pokemon-biography": {
"command": "uv",
"args": ["run", "main.py"],
"cwd": "/absolute/path/to/pokemon-mcp-servers/servers/biography-server"
},
"pokemon-statistics": {
"command": "uv",
"args": ["run", "main.py"],
"cwd": "/absolute/path/to/pokemon-mcp-servers/servers/statistics-server"
},
"pokemon-evolutions": {
"command": "uv",
"args": ["run", "main.py"],
"cwd": "/absolute/path/to/pokemon-mcp-servers/servers/evolutions-server",
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASSWORD": "your_password"
}
}
}
}
光标
添加 .cursor/mcp.json 在项目根目录中:
{
"mcpServers": {
"pokemon-biography": {
"command": "uv",
"args": ["run", "main.py"],
"cwd": "/absolute/path/to/pokemon-mcp-servers/servers/biography-server"
}
}
}
资源
资源提供静态数据,AI助手可以在不调用工具的情况下读取这些数据以获取上下文。
传记服务器
| URI | 描述 |
|---|---|
pokemon://biography/list |
809个口袋妖怪名字的完整列表 |
pokemon://biography/{name} |
特定口袋妖怪的传记(模板) |
统计服务器
| URI | 描述 |
|---|---|
pokemon://stats/types |
所有18种口袋妖怪 |
pokemon://stats/generations |
Pokedex范围和计数的世代 |
pokemon://stats/type-chart |
类型有效性图(弱点、阻力、豁免) |
pokemon://stats/schema |
包含所有列定义的数据集架构 |
提示
提示是预先配置的工作流程,指导人工智能完成多步任务。
传记服务器
| 提示 | 描述 |
|---|---|
pokemon-quiz |
互动问答:从传记摘录中猜出口袋妖怪 |
pokemon-comparison |
两款口袋妖怪的详细比较 |
evolution-story |
关于口袋妖怪进化历程的叙事故事 |
统计服务器
| 提示 | 描述 |
|---|---|
build-team |
组建一支由6人组成的有竞争力的团队,实现均衡的覆盖率 |
type-matchup-analysis |
分析团队的类型匹配和覆盖差距 |
counter-finder |
为对手Pokemon寻找最佳对手 |
工具参考
传记服务器(4个工具)
| 工具 | 说明 |
|---|---|
search_biography |
按名字搜索口袋妖怪传记 |
search_biography_fulltext |
全文搜索所有传记 |
get_random_biography |
获取随机的口袋妖怪传记 |
list_all_pokemon |
列出所有可用的口袋妖怪 |
统计服务器(16个工具)
| 工具 | 说明 |
|---|---|
get_pokemon_stats |
获取口袋妖怪的完整统计数据 |
calculate_type_effectiveness |
计算类型有效性乘数 |
get_resistances_and_weaknesses |
获得口袋妖怪的类型抵抗力/弱点 |
find_pokemon_resistant_to_types |
找到对特定类型有抵抗力的口袋妖怪 |
filter_pokemon_multi_criteria |
按多个条件筛选口袋妖怪 |
get_pokemon_by_stat_range |
在统计范围内找到口袋妖怪 |
get_pokemon_by_type_combination |
按type1/type2组合查找口袋妖怪 |
get_pokemon_by_ability |
通过能力找到口袋妖怪 |
get_pokemon_by_generation |
按世代列出口袋妖怪 |
compare_pokemon_head_to_head |
比较两个口袋妖怪统计数据 |
find_similar_pokemon |
查找统计上相似的口袋妖怪 |
get_top_pokemon_by_stat |
特定统计的前N个口袋妖怪 |
get_extreme_pokemon |
具有最高/最低统计值的口袋妖怪 |
calculate_stat_percentile |
计算统计百分位数排名 |
aggregate_stats_by_type |
按类型汇总统计数据 |
calculate_bst_distribution |
基础统计总分布分析 |
进化服务器(2个工具)
| 工具 | 说明 |
|---|---|
get_pokemon_types |
从图中获取类型信息 |
get_pokemon_evolutions |
从图中获取进化链 |
创建新服务器
看 docs/new-server-guide.md 获取分步指南。
数据模式
传记.json
{"name": "Pikachu", "bio": "Biology [ edit ] Pikachu is..."}
statistics.csv(41列)
主要栏目: name, pokedex_number, hp, attack, defense, sp_attack, sp_defense, speed, base_total, type1, type2, abilities, against_* (18个类型有效性栏), height_m, weight_kg, generation, is_legendary
故障排除
| 问题 | 解决方案 |
|---|---|
| 工具未注册 | 签入 src/tools/__init__.py |
get_all_tools() 返回空 |
导入注册表后导入工具.py |
| 找不到模块 | 运行 uv sync |
| 检查员无法连接 | 所有打印件必须连接到 stderr,不 stdout |
| 导入错误 | 验证 src/ 有 __init__.py 文件 |
资源
许可证
MIT许可证-请参阅 许可证 了解详情。
作者
弗朗西斯科·巴蒂斯塔 - @frabatx