用途
godoc-mcp 是面向 AI 编程智能体的工具,用于在 Go 语言开发中提供更省 token 的文档访问方式。传统文件读取方式要求大语言模型(LLM)处理整个源文件,有时需要读取许多文件才能理解单个包;godoc-mcp 则只返回必要的文档内容。
主要能力
- Token 效率:只返回核心文档,显著减少 token 消耗。
- 结构化信息:以一致、规范的结构提供官方包文档。
- 项目导航:智能处理项目结构,帮助 LLM 理解多包项目。
- 集成就绪:可与其他 MCP 服务器协同工作,兼顾高层与细粒度代码分析。
- 性能:内置缓存与优化的 token 使用。
- 本地化:访问文档无需联网。
LLM 可按不同详细程度获取信息,包括:单个导出符号的文档、单个符号的完整源码、所有导出符号列表(精简文档)、包含未导出符号的完整符号列表、包的完整文档、包的完整源码。
服务器行为:
- 含 Go 文件的目录:返回包文档。
- 不含 Go 文件的目录:列出子目录中可用的 Go 包。
- 导入路径:返回标准库或第三方包文档。
使用方式
灵活的路径支持:
- 本地文件路径(例如 "/full/path/to/mypackage")
- 导入路径(例如 "io"、"github.com/user/repo")
自动模块上下文:按需创建临时 Go 项目;为外部包自动设置模块上下文;任何包的文档都无需手动配置模块;自动清理临时项目。
模块感知:通过工作目录上下文支持第三方包文档(即从工作目录运行 go doc)。
性能优化:内置响应缓存;通过聚焦式文档检索实现高效 token 使用;提供响应大小元数据;智能区分标准库与外部包。
传输模式:
- stdio(默认):标准输入/输出,用于 Claude Desktop 等本地 MCP 客户端。
- sse:基于 HTTP 的 Server-Sent Events,用于网页端 MCP 客户端。
- http:Streamable HTTP,MCP 规范推荐的 HTTP 传输方式。
Docker MCP Gateway 配置示例(添加到 MCP 配置):
{
"mcpServers": {
"godoc-mcp": {
"command": "docker",
"args": ["run", "-i", "--rm", "mrjoshuak/godoc-mcp"]
}
}
}
访问本地项目文档时,挂载项目目录并使用 /workspace 作为 working_dir 参数。
SSE 传输方式的 Docker 运行示例:
docker run -p 8080:8080 mrjoshuak/godoc-mcp --transport sse --addr :8080
添加到 Claude 桌面应用时,编辑 MCP 配置。
如果 go doc 找不到 Go 安装,请添加环境变量:GOPATH 和 GOMODCACHE。
提供的两个工具:
-
获取 Go 包、类型、函数或方法的文档。
- path(必填):包导入路径(如 io、github.com/user/repo)或本地文件路径。
- target(可选):要生成文档的具体符号(函数、类型等)。
- cmd_flags(可选):附加 go doc 标志(允许:-all、-src、-u、-short、-c)。
- working_dir(可选):模块上下文的工作目录(相对路径必需)。
- page(可选):分页页码(默认 1)。
- page_size(可选):每页行数,100–5000(默认 1000)。
-
列出 Go 包路径下的所有子包。用于发现子包的正确导入路径,而非猜测。
- path(必填):根包导入路径(如 net、github.com/user/repo)。
适用场景
除了编码任务中提供文档外,godoc-mcp 也可用于探索 Go 项目和包。示例提示:
- "我在看 /path/to/some/project 的 Go 项目。它包含哪些包,分别做什么?"
- "io 包提供哪些接口?我特别关注与读取相关的内容。"
- "我需要实现 io.Reader 接口。给我看它的文档以及应该了解的相关类型。"
- "给我看 /path/to/some/project 中 Resource 类型的文档。我需要了解如何创建和使用它。"
- "我在 /path/to/some/project,它使用了 github.com/gorilla/mux。给我看 Router 类型的文档。"
- "http.Request 类型有哪些方法?我在用标准库 HTTP handler。"
- "解释如何配置 /path/to/project/server 包中的 Server 类型。"
- "我在一个新的 Go 项目目录,看到多个包。能分别说明它们做什么吗?"
限制
- 本地路径需包含 Go 源文件,或指向包含 Go 包的目录。
- 若出现模块相关错误,需确保 MCP 服务器配置中的 GOPATH 和 GOMODCACHE 环境变量设置正确。
- 服务器会自动为外部包处理模块上下文,特殊情况下仍可提供特定 working_dir。
本项目采用 MIT 许可证,详见 LICENSE 文件。