魔兽世界API文档查询服务

一个为LLM提供实时访问魔兽世界API文档的服务,支持查询特定API函数、事件和技术文档页面,并返回结构化内容。

  • by Direction6275
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Direction6275/warcraft-wiki-mcp

使用说明

魔兽世界维基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结构工具(如 哇api mcp 它提供类型签名、枚举和事件定义)以及仅用于wiki文档的行为层。

服务器的范围是有意的API和密切相关的技术文档。它不是为一般的魔兽维基文章浏览而设计的。

工具

工具 目的 示例输入
wiki_lookup 获取特定的API函数、事件或确切的技术文档页面 C_Spell.GetSpellCooldown, SPELL_UPDATE_COOLDOWN
wiki_resolve 通过下一次查找指南,将编码意图转化为排名的API/事件候选 "track spell cooldown", "listen for aura changes"
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, relatedEventsData, warnings, codingNotes, availableSections, deprecationInfo,以及结构化的部分数据,如 argumentsData, returnsData,以及 payloadData.
  • 冲突感知弃用元数据: deprecationInfo 现在包括 hasConflict, conflictDetails,以及 recommendedState 因此,呼叫者可以检测到横幅文本和补丁历史记录何时不一致。
  • 编码指南: 从维基文章中提取警告和信息注释,如弃用的API、nil返回、受限/秘密行为和事件计时陷阱。
  • 相关事件: 从相关事件部分和行为注释中提取事件名称,以便调用者可以发现他们接下来应该检查的事件。
  • 精益部门重点: 当 section 提供,响应还包括 selectedSection, selectedSectionText,以及 selectedSectionData.

wiki_resolve

将面向编码的问题解析为可能的API、事件、枚举、小部件或技术页面的简短列表。

  • 意图清理: 删除常见的编码谓词,如“track”、“listen”和“detect”,以便代理可以搜索实际的API术语。
  • 目标重写: 添加对常见魔兽插件任务的集中搜索,如冷却跟踪和光环更新。
  • 代理交接: 返回置信度、弃用状态、相关事件、警告、编码说明、可用部分和建议的后续行动 wiki_lookup 电话。
  • 范围: 仍限于API和密切相关的技术文件;它不浏览一般的wiki文章。

维基搜索

仅搜索魔兽维基技术文档。一般游戏和随机维基文章被过滤掉,这样代理就可以专注于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=parse&page={title} wiki_resolve 最终排名候选人的详细信息
action=query&list=search wiki_search, wiki_resolve 将页面与文本片段进行匹配
action=query&list=allpages wiki_namespace 所有与标题前缀匹配的页面

wiki返回MediaWiki HTML。解析器去除噪声(导航、兼容性元数据表、信息框),提取弃用通知,显示横幅与补丁冲突,挽救遗留的内联部分,在 <h2> 将边界转换为命名部分,导出相关的事件和编码注释信号,并将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解析)。

许可证

麻省理工学院