游戏数据协议服务器

一个为Claude提供《激战2》游戏数据访问的服务器,包括交易市场价格、账户信息、制作配方和维基查询等功能。

  • by BaLaurent
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 BaLaurent/gw2-mcp

使用说明

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 --每日世界老板和制作活动跟踪器

先决条件

设置

1.克隆存储库

git clone https://github.com/your-username/gw2-mcp-server.git
cd gw2-mcp-server

2.创建配置

cp .env.example .env

3.获取GW2 API密钥

  1. 首选 https://account.arena.net/applications
  2. 使用以下权限创建新的API密钥:
    • account
    • characters
    • inventories
    • tradingpost
    • progression
    • wallet
  3. 将密钥粘贴到您的 .env 文件:
GW2_API_KEY=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
GW2_LANG=en
LOG_LEVEL=INFO

API密钥是可选的。没有它,与帐户相关的工具不可用,但其他一切都能正常工作(交易站、维基、项目、事件)。

4.安装依赖项

uv sync

5.本地测试

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

许可证

麻省理工学院