godoc-mcp

local-only server

The server can only run on the client’s local machine because it depends on local resources.

godoc-mcp

概述

godoc-mcp是一个模型上下文协议 (MCP) 服务器,提供高效的 Go 文档访问。它通过提供直接访问包文档的权限,帮助 LLM 理解 Go 项目,而无需阅读整个源文件。godoc godoc-mcp可以显著减少理解和使用 Go 包所需的 token 数量,从而显著提升使用 LLM 进行 Go 开发的性能。

入门

go install github.com/mrjoshuak/godoc-mcp@latest

为什么要使用 godoc-mcp?

一句话概括: godoc-mcp为 LLM 理解 Go 项目提供了一种更高效的方式。

传统的文件读取方法需要 LLM 处理整个源文件(通常需要处理许多文件才能理解单个包)。godoc godoc-mcp提供了几个优点:

  1. 令牌效率:仅返回必要的文档,显著减少令牌使用量
  2. 结构化信息:以一致、结构良好的格式提供官方软件包文档
  3. 项目导航:智能处理项目结构,帮助法学硕士 (LLM) 理解多包项目
  4. 集成就绪:与其他 MCP 服务器协同工作,实现高级和详细的代码分析
  5. 性能:缓存和优化的令牌使用使godoc-mcp成为 Go 开发的快速高效工具
  6. 本地:无需互联网连接即可访问文档

使用godoc-mcp ,LLM 无需阅读整个源文件即可精准获取所需信息。以下是 LLM 可以获得的不同级别的信息细节。

  • 一个导出符号的文档
  • 一个符号的完整来源
  • 所有导出符号的列表(简明文档)
  • 所有符号(包括未导出的符号)的列表
  • 软件包的完整文档
  • 软件包的完整源代码

这使得godoc-mcp成为使用 LLM 的 Go 开发人员必不可少的工具,因为它使 LLM 能够比以前在任何编程语言中更详细地了解上下文。

特征

服务器将:

  1. 对于包含 Go 文件的目录:返回包文档
  2. 对于没有 Go 文件的目录:列出子目录中可用的 Go 包
  3. 对于导入路径:返回标准库或第三方包文档
  • 高效的文档访问:使用最少的令牌检索官方 Go 文档
  • 智能包发现:当指向没有 Go 文件的目录时,列出子目录中可用的 Go 包
  • 灵活路径支持
    • 本地文件路径(例如“/full/path/to/mypackage”)
    • 导入路径(例如“io”,“github.com/user/repo”)
  • 自动模块上下文
    • 在需要时创建临时 Go 项目
    • 自动为外部包设置模块上下文
    • 任何包文档都不需要手动设置模块
    • 处理临时项目的清理
  • 模块感知:通过工作目录上下文支持第三方包的文档(即它将从工作目录运行go doc
  • 性能优化
    • 内置响应缓存
    • 通过集中文档检索实现高效的令牌使用
    • 有关响应大小的元数据
    • 标准库与外部包的智能处理

示例

除了在编写代码时提供文档外, godoc-mcp还可以用来探索 Go 项目和包。以下是一些常用提示的示例:

项目理解

我正在查看 /path/to/some/project 上的 Go 项目。它包含哪些包?它们有什么作用?

包接口理解

“io 包提供了哪些接口?我对任何与阅读相关的东西都特别感兴趣。”

实施指南

我需要实现 io.Reader 接口。请提供它的文档以及我应该了解的所有相关类型。

API 使用

“向我展示 /path/to/some/project 中资源类型的文档。我需要了解如何创建和使用它。”

图书馆探索

“我在 /path/to/some/project 中,它使用了 github.com/gorilla/mux。请给我看一下 Router 类型的文档。”

方法发现

“http.Request 类型上有哪些方法?我正在使用标准库 HTTP 处理程序。”

专注学习

“解释如何在 /path/to/project/server 包中配置服务器类型。”

包浏览

我在一个新的 Go 项目目录中看到了多个包。你能告诉我每个包的作用吗?

用法

要添加到 Claude 桌面应用程序:

{ "mcpServers": { # other MCP servers ... "godoc": { "command": "/path/to/godoc-mcp", "args": [], "env": { "GOPATH": "/path/to/go", "GOMODCACHE": "/path/to/go/pkg/mod" } } } }

当连接到支持 MCP 的 LLM(如 Claude)时,godoc-mcp 为get_doc工具提供以下参数:

  • path :Go 包或文件的路径(导入路径或文件路径)
  • target (可选):要记录的特定符号(功能、类型等)
  • cmd_flags (可选):附加 go doc 命令标志
  • working_dir (可选):模块感知文档的工作目录(如果未提供,则会自动创建一个临时项目)

LLM 可以利用的高级cmd_flags值:

  • -all :显示包的所有文档,不包括未导出的符号
  • -u :显示未导出的符号
  • -src :显示源代码而不是文档

故障排除

  • 对于本地路径,确保它们包含 Go 源文件或指向包含 Go 包的目录
  • 如果您看到与模块相关的错误,请确保在 MCP 服务器配置中正确设置了 GOPATH 和 GOMODCACHE 环境变量
  • 服务器自动处理外部包的模块上下文,但如果特殊情况需要,你仍然可以提供特定的 working_dir

执照

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅LICENSE文件。

-
security - not tested
A
license - permissive license
-
quality - not tested

godoc-mcp是一个模型上下文协议 (MCP) 服务器,提供高效的 Go 文档访问。它允许 LLM 直接访问包文档,而无需阅读整个源文件,从而帮助 LLM 理解 Go 项目。

  1. Overview
    1. Getting Started
      1. Why Use godoc-mcp?
        1. Features
          1. Examples
        2. Usage
          1. Troubleshooting
            1. License
              ID: hh2kf8og63