魔兽世界维基mcp
MCP服务器,允许LLM实时访问 warcraft.wiki.gg API文档-WoW API行为说明、限制和补丁历史的社区维护源。
为什么是这个服务器?
- WoW API的LLM训练数据经常出错。 函数被重命名、弃用或更改补丁之间的行为。训练数据滞后数月或数年。
- 仅凭API签名是不够的。 知道这一点
C_Spell.GetSpellCooldown()回报{ startTime, duration, ... }没告诉你startTime和duration是12.0.x中的秘密值,不能在Lua算法中使用。这种关键的行为背景存在于维基上。 - 没有工具就无法验证API。 如果没有实时查找,LLM将使用弃用或不存在的API自信地生成代码。
此服务器按需查询wiki,并返回干净的文本和结构化字段,而不是原始HTML:
- 说明、参数文档、返回值和代码示例
- 行为细节和使用陷阱
- 弃用通知
- 事件有效载荷部分
- 维基上出现的限制和兼容性说明
- 补丁历史记录
- 供代理使用的结构化参数/返回/有效载荷项
- 当wiki公开元数据时,明确弃用和替换元数据
- 当弃用的横幅和补丁历史不一致时,会发出冲突信号
- 在突发代理查找下更安全的重试/限制行为
- 更安全的传统页面解析,更喜欢干净的文本而不是误导性的虚假结构
- 当广泛查询不明确时,搜索排名偏向于当前的命名空间API
它补充了API结构工具(如 哇api mcp 它提供类型签名、枚举和事件定义)以及仅用于wiki文档的行为层。
服务器的范围是有意的API和密切相关的技术文档。它不是为一般的魔兽维基文章浏览而设计的。
工具
| 工具 | 目的 | 示例输入 |
|---|---|---|
wiki_lookup | 获取特定的API函数、事件或确切的技术文档页面 | C_Spell.GetSpellCooldown, SPELL_UPDATE_COOLDOWN |
wiki_search | 仅搜索API/事件/技术文档页面 | "spell cooldown", "unit aura tracking" |
wiki_namespace | 列出命名空间前缀下的所有页面 | C_Spell, C_Item, GetSpell |
wiki_lookup
获取特定的API函数、事件或确切的技术页面,并返回可读文本和结构化内容。
- 自动检测: 函数名获取
API_wiki页面标题的前缀(C_Spell.GetSpellCooldown->API_C_Spell.GetSpellCooldown).ALL_CAPS中的事件名称按原样使用(SPELL_UPDATE_COOLDOWN). - 分段过滤: 可选的
section参数将响应范围缩小为:description,arguments,returns,payload,details,example,patch_changes,see_also,fields,members,values,related_events,或all(默认)。 - 弃用通知: 自动提取并在出现时显示。
- 结构化输出: 包括规范化字段,例如
pageKind,description,payload,patchChanges,relatedEvents,availableSections,deprecationInfo,以及结构化的部分数据,如argumentsData,returnsData,以及payloadData. - 冲突感知弃用元数据:
deprecationInfo现在包括hasConflict,conflictDetails,以及recommendedState因此,呼叫者可以检测到横幅文本和补丁历史记录何时不一致。 - 精益部门重点: 当
section提供,响应还包括selectedSection,selectedSectionText,以及selectedSectionData.
维基搜索
仅搜索魔兽维基技术文档。一般游戏和随机维基文章被过滤掉,这样代理就可以专注于API、事件、菜单、小部件和密切相关的技术页面。返回最多20个筛选结果,包括标题、页面类型、URL和文本片段。
wiki_namespace
列出与命名空间前缀匹配的所有wiki页面。通过在后面附加一个后缀来处理C_命名空间作用域 . --所以 C_Spell 火柴 C_Spell.GetSpellCooldown 但不是 C_SpellBook.IsSpellKnown。支持最多1000个结果的分页。
快速开始
要求: Node.js>=18.0.0
git clone https://github.com/Direction6275/warcraft-wiki-mcp.git
cd warcraft-wiki-mcp
npm install没有构建步骤,没有预索引,没有数据文件。服务器实时查询维基。
注册
添加到您的项目 .mcp.json (克劳德代码)或等效的MCP配置:
{
"mcpServers": {
"warcraft-wiki": {
"command": "node",
"args": ["/path/to/warcraft-wiki-mcp/src/index.mjs"]
}
}
}添加配置后重新启动Claude Code。
运作原理
所有数据均来自 warcraft.wiki.gg 通过其MediaWiki API:
| 端点 | 使用者 | 返回内容 |
|---|---|---|
action=parse&page={title} | wiki_lookup | 整页HTML+部分元数据 |
action=query&list=search | wiki_search | 将页面与文本片段进行匹配 |
action=query&list=allpages | wiki_namespace | 所有与标题前缀匹配的页面 |
wiki返回MediaWiki HTML。解析器去除噪声(导航、兼容性元数据表、信息框),提取弃用通知,显示横幅与补丁冲突,挽救遗留的内联部分,在 将边界转换为命名部分,并将HTML转换为干净的文本(代码块变成标记栏,定义列表变成缩进文本,表格变成管道分隔的行)。
src/
index.mjs MCP server entry point, tool definitions, name normalization
wiki-client.mjs HTTP client for warcraft.wiki.gg, in-memory TTL cache
html-parser.mjs MediaWiki HTML -> structured text sections技术细节: 4小时内存缓存(每个条目TTL,重启后无持久性)。每个请求超时10秒。实时wiki调用内置了运行中请求合并、限制和重试/回退功能。对丢失的页面和网络故障进行优雅的错误处理。默认情况下,搜索为API范围。
维护
内容源的维护成本较低,因为它来自wiki,但如果wiki更改了HTML结构,解析器仍需要偶尔进行维护。
测试
使用以下参数运行烟雾测试:
npm test冒烟测试通过SDK客户端启动本地MCP服务器,并根据实时维基数据验证代表性的查找和搜索行为。
| 症状 | 可能原因 | 修复 |
|---|---|---|
| 服务器无法启动 | 缺少依赖项 | 运行 npm install |
| 查找返回乱码文本 | Wiki更改了HTML模板结构 | 更新了部分拆分 html-parser.mjs |
| “获取失败”错误 | Wiki已关闭或网络问题 | 暂时性--稍后重试 |
| 输出中缺少部分 | Wiki页面没有该部分 | 正常-解析器优雅地省略了缺少的部分 |
依赖关系: @modelcontextprotocol/sdk (MCP框架)和 node-html-parser (HTML解析)。
许可证
麻省理工学院
