SuperAPI AI 工具集

godoc-mcp

godoc-mcp 是一个模型上下文协议(MCP)服务器,为 AI 编程智能体提供对 Go 文档的高效访问。它让大语言模型能够直接获取 Go 包的结构化文档,而无需阅读整个源文件,从而大幅降低理解和使用 Go 包所需的 token 数量。该工具支持本地文件路径和导入路径,自动处理模块上下文,内置响应缓存,并支持 stdio、SSE 和 HTTP 三种传输模式。

访问官网

工具介绍

用途

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。

提供的两个工具:

  1. 获取 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)。
  2. 列出 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 文件。