1007 字
5 分钟
Zig Docs MCP:把 Zig 文档变成可查询服务
TIP

该项目已在 Tokisaki-Galaxy/zig-docs-mcp 开源,欢迎去点 star。

TIP

提供公益mcp服务器,但是鼓励自建以减轻服务器压力https://zigdocs.api.tski.uk/mcp

为什么要做 Zig Docs MCP?#

Zig 的官方文档很完整。但它仍然主要是网页。开发时更常见的需求,并不是“读完一整页”,而是直接拿到某个符号的说明、签名、参数和错误集。

并且zig至今还没有稳定版本发布,还在0.x版本快速迭代。AI 编程 (vibe coding) 对于这种快速变化的文档支持不太友好,经常采用训练时候记忆的旧版本文档,很多时候导致回答过时或者不准确。如果agent直接查询本地zig安装的示例/文档,会消耗大量token和上下文。更好的方法是 docs MCP 服务,直接让AI助手直接查询最新版本的文档。

我做 Zig Docs MCP,就是想把这些信息变成一组可以直接调用的工具。这样,AI 助手、编辑器插件和脚本都能像查 API 一样查 Zig 文档。

它解决了什么问题#

日常写 Zig 时,常见的动作其实很琐碎。

  • 查某个 builtin 的定义
  • 搜索标准库里的类型和函数
  • 按版本查看文档
  • 让 AI 直接拿到结构化上下文

如果全靠网页跳转,效率并不高。Zig Docs MCP 做的,是把文档拆成可检索、可调用、可复用的接口。

目前核心工具包括:

  • list_builtin_functions:列出 builtin 函数
  • get_builtin_function:查询 builtin 的签名和说明
  • search_std_lib:搜索标准库符号
  • get_std_lib_item:获取某个条目的完整文档

它的意义不只是“能查”,而是让文档变成可编程资源。这对 IDE 集成、自动补全、AI 辅助问答都很有用。

它是怎么实现的#

这个项目大致分成两层。

1. TypeScript / Bun 层#

mcp/ 目录负责 MCP 服务入口、文档缓存、版本索引、本地预览和 R2 bundle 生成。

这一层更像调度中心,负责把 Zig 侧产出的数据组织成稳定的接口。

2. Zig / WASM 层#

docs/ 目录负责真正的文档解析和 AST 遍历。

它会扫描标准库声明,解析函数、类型、字段和错误集,再生成结构化 Markdown 和搜索索引。 这部分最后会编译成 WASM,供 TS 侧调用。

这样做的好处很直接:Zig 自己来理解 Zig 的语法和 AST,前端和 Worker 侧只负责消费结果。

我最看重的点#

查询路径更短。
以前查 Zig 文档,要在网页、源码和版本文档之间来回切换。现在更像直接向工具要答案。

版本化更实用。
很多项目并不使用最新 Zig,而是固定版本。这个项目支持按版本打包和缓存文档,更适合真实开发环境。

更适合 AI 集成。
MCP 的价值就在这里。客户端可以直接拿到结构化结果,不需要手动把文档复制进提示词。

一个我很喜欢的细节#

这个项目不是简单地做文档镜像。它更像是在做“文档产品化”。

同样是查询 std.hash_map.HashMap,你可以直接拿到:

  • 它是什么类型
  • 怎么初始化
  • 常用方法有哪些
  • 文档、错误和源码入口

这比单纯浏览 HTML 页面更接近“知识接口”。

适合谁#

  • 写 Zig 的开发者
  • 想把 Zig 文档接进 AI 工具的人
  • 想做 MCP 服务示例的人
  • 需要版本化文档和本地缓存的人

结语#

如果说传统文档是给人看的,那么 Zig Docs MCP 更像是给人和工具一起看的。

它把 Zig 文档从网页变成了一个可以检索、可以集成、可以自动化调用的服务。对我来说,这正是 MCP 最实用的地方:让知识从页面里出来,进入工作流里。

Zig Docs MCP:把 Zig 文档变成可查询服务
https://tski.uk/blog/mcp-zig-docs/
作者
Tokisaki Galaxy
发布于
2026-04-24
许可协议
CC BY