返回市场
Godoc-MCP

Godoc-MCP

作者:mrjoshuak90 星标更新:2025-06-25

项目介绍

godoc-mcp

Go 报告卡 GoDoc 许可证

概述

godoc-mcp 是一个提供高效访问 Go 文档的 Model Context Protocol (MCP) 服务器。它通过直接提供包文档,帮助大型语言模型(LLMs)理解 Go 项目,而无需读取整个源文件。godoc-mcp 可以显著提高使用 LLM 进行 Go 开发的性能,大幅减少理解并利用 Go 包所需的标记数量。

快速开始

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

为什么使用 godoc-mcp?

一句话总结:godoc-mcp 提供了一种更高效的标记方式,让 LLM 更好地理解 Go 项目。

传统的文件阅读方法需要 LLM 处理整个源文件,通常需要处理多个文件来理解单个包。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 中 Resource 类型的文档。我需要了解如何创建和使用它。”

库探索

“我在 /path/to/some/project,它使用了 github.com/gorilla/mux。请显示 Router 类型的文档。”

方法发现

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

集中学习

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

包浏览

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

使用

要添加到 Claude 桌面应用:

{
  "mcpServers": {
    # 其他 MCP 服务器...
    "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 环境变量。
  • 该服务器会自动处理外部包的模块上下文,但在特殊情况下,您仍然可以提供特定的工作目录。

许可证

本项目根据 MIT 许可证发布 - 详情见 LICENSE 文件。