Skip to main content
Glama

godoc-mcp

围棋成绩单 GoDoc执照

概述

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

Related MCP server: Filesystem MCP Server

入门

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

为什么要使用 godoc-mcp?

一句话概括: godoc-mcp

传统的文件读取方法需要 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

Resources

Looking for Admin?

Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mrjoshuak/godoc-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server