GW2 MCP服务器
A. 模型上下文协议 服务器,让克劳德访问《激战2》游戏数据——交易站价格、账户信息、制作食谱、维基查找等。
建于 FastMCP python跑过 标准,专为克劳德桌面和克劳德代码设计。
特性
交易站
| 工具 | 说明 |
|---|---|
search_item | 按名称模糊搜索项(支持 en, fr, de, es, zh) |
get_item_price | 商品的当前买入/卖出价格 |
get_item_listings | 订单深度(前N个买卖列表) |
calculate_flip | 15%TP税后的盈利能力(利润率、投资回报率) |
get_trading_history | 您的未结订单和交易历史 |
物品与工艺
| 工具 | 说明 |
|---|---|
get_item_details | 完整的商品元数据(统计数据、稀有性、类型、描述) |
get_recipe | 用配料和估计成本制作食谱 |
get_item_bulk | 批量将多达200个项目ID解析为名称和详细信息 |
维基
| 工具 | 说明 |
|---|---|
search_wiki | 搜索GW2维基 |
get_wiki_page | 以纯文本形式检索wiki页面内容 |
帐户(需要API密钥)
| 工具 | 说明 |
|---|---|
get_account_info | 账户名称、世界、公会、创建日期、扩展名 |
get_bank_contents | 已解析项目名称的银行内容 |
get_material_storage | 材料储存库存 |
get_characters | 所有带有详细信息的字符 |
get_wallet | 钱包货币(黄金、因果报应、宝石等) |
get_achievement_progress | 具体成就的进展 |
每日新闻与活动
| 工具 | 说明 |
|---|---|
get_daily_worldbosses | 当今世界的老板(如果设置了API密钥,则标记已完成的老板) |
get_daily_crafting | 每日可加工项目(如果设置了API键,则标记已完成的项目) |
资源
LLM可以参考的只读数据:
gw2://tp/tax-info--交易税后结构(5%上市+10%交易)gw2://currencies--所有GW2货币gw2://worlds--服务器/世界列表gw2://professions--专业化的职业
提示模板
链接多个工具的预构建工作流:
market_analysis--商品的完整市场报告(价格、订单簿、翻转分析)crafting_cost--手工与购买与配料定价的比较daily_checklist--每日世界老板和制作活动跟踪器
先决条件
- Python 3.11+
- 紫外线 (推荐)或pip
设置
1.克隆存储库
git clone https://github.com/your-username/gw2-mcp-server.git
cd gw2-mcp-server2.创建配置
cp .env.example .env3.获取GW2 API密钥
- 首选 https://account.arena.net/applications
- 使用以下权限创建新的API密钥:
- account - characters - inventories - tradingpost - progression - wallet
- 将密钥粘贴到您的
.env文件:
GW2_API_KEY=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
GW2_LANG=en
LOG_LEVEL=INFOAPI密钥是可选的。没有它,与帐户相关的工具不可用,但其他一切都能正常工作(交易站、维基、项目、事件)。
4.安装依赖项
uv sync5.本地测试
uv run python -m gw2_mcp.server使用Claude Desktop
将服务器添加到Claude Desktop配置中(claude_desktop_config.json):
{
"mcpServers": {
"gw2": {
"command": "uv",
"args": [
"run",
"--directory", "/absolute/path/to/gw2-mcp-server",
"python", "-m", "gw2_mcp.server"
]
}
}
}使用Claude代码
将服务器添加到您的Claude Code设置中(.claude/settings.json):
{
"mcpServers": {
"gw2": {
"command": "uv",
"args": [
"run",
"--directory", "/absolute/path/to/gw2-mcp-server",
"python", "-m", "gw2_mcp.server"
]
}
}
}配置
所有配置都是通过 .env 文件:
| 变量 | 默认值 | 描述 |
|---|---|---|
GW2_API_KEY | *(无)* | 您的ArenaNet API密钥。可选--帐户工具需要它 |
GW2_LANG | en | 项目名称和描述的语言(en, fr, de, es, zh) |
GW2_CACHE_DIR | ~/.cache/gw2-mcp | 持久项索引缓存的目录 |
LOG_LEVEL | INFO | 日志记录级别(DEBUG, INFO, WARNING, ERROR) |
建筑
gw2_mcp/
├── server.py # FastMCP entry point, wires everything together
├── config.py # .env loading and validation
├── cache.py # In-memory TTL cache manager
├── item_index.py # Persistent item name index (~90k items, disk JSON)
├── clients/
│ ├── gw2_api.py # GW2 API v2 async client (rate limiting, retry, caching)
│ └── wiki.py # GW2 Wiki MediaWiki client (wikitext cleanup)
├── tools/
│ ├── commerce.py # Trading Post tools
│ ├── items.py # Item & recipe tools
│ ├── account.py # Account-authenticated tools
│ ├── events.py # World bosses, dailies
│ └── wiki.py # Wiki search & retrieval
├── resources/
│ └── static.py # Read-only data resources
├── prompts/
│ └── templates.py # Prompt templates
└── utils/
├── converters.py # Copper to gold/silver/copper conversion
└── validators.py # Input validation关键设计决策
- 异步优先:所有API调用都使用
httpx.AsyncClient随着asyncio.gather用于批量操作。 - 双缓存:在内存中,API响应为TTL(5分钟至24小时),磁盘上的项目索引为持久JSON。
- 速率限制:内部上限为300 req/min,429/5xx错误呈指数回退。
- 优雅降级:在没有API密钥的情况下工作(帐户工具返回描述性错误而不是崩溃)。
- 重新验证时失效:对于API错误,返回过期的缓存数据并发出警告,而不是失败。
发展
# Install dev dependencies
uv sync
# Run tests
uv run pytest
# Run with debug logging
LOG_LEVEL=DEBUG uv run python -m gw2_mcp.server许可证
麻省理工学院
