Go文档 MCP 服务器

项目简介

本项目 'godoc-mcp-server' 是一个基于 Model Context Protocol (MCP) 的服务器实现,旨在为 LLM 客户端提供 Golang 包的文档信息。它通过工具的形式,允许 LLM 查询和获取来自 pkg.go.dev 的 Go 语言包的搜索结果和详细信息,从而增强 LLM 在处理 Golang 代码相关任务时的上下文理解能力。

主要功能点

  • 搜索 Golang 包: 提供根据关键词搜索 Golang 包的功能。LLM 可以使用此工具根据用户query查询相关的 Golang 包,并获取包名、路径和简介等信息。
  • 获取包信息: 提供获取指定 Golang 包详细信息的功能。LLM 可以使用此工具获取包的常量、变量、函数、类型、子包等详细文档信息,帮助理解和使用 Golang 代码。

安装步骤

  1. 下载预编译二进制文件 (推荐): 访问 releases page 下载适用于您操作系统的预编译二进制文件。下载后,将其解压到您希望安装的目录。

  2. 从源代码编译: 确保您已安装 Go 语言环境。打开终端,执行以下命令安装:

    go install github.com/yikakia/godoc-mcp-server/cmd/godoc-mcp-server@latest

    编译后的可执行文件 'godoc-mcp-server' 将位于 '$GOPATH/bin' 目录下 (或者 '$HOME/go/bin',取决于您的 Go 环境配置)。

服务器配置

MCP 客户端需要配置以下信息以连接 'godoc-mcp-server' 服务器。由于该服务器通过标准输入输出 (stdio) 进行通信,配置相对简单。

{
  "serverName": "godoc-mcp-server",
  "command": "godoc-mcp-server",
  "args": [],
  "transport": "stdio"
}

配置参数说明:

  • 'serverName': 服务器名称,可以自定义,例如 "godoc-mcp-server"。
  • 'command': 重要 启动服务器的命令。
    • 如果您下载的是预编译二进制文件,请填写二进制文件的完整路径 (例如:'/path/to/godoc-mcp-server') 或确保该路径已添加到系统的 'PATH' 环境变量中,直接填写 'godoc-mcp-server' 即可。
    • 如果您是从源代码编译安装的,且 '$GOPATH/bin' (或 '$HOME/go/bin') 已经添加到 'PATH' 环境变量,则直接填写 'godoc-mcp-server' 即可。否则,请填写可执行文件的完整路径。
  • 'args': 启动命令的参数。本项目 'godoc-mcp-server' 运行不需要任何启动参数,因此配置为空数组 '[]'。
  • 'transport': 指定传输协议。本项目使用标准输入输出 (stdio),因此配置为 '"stdio"'。

请注意: MCP 客户端需要能够执行 'command' 指定的命令。请确保命令路径配置正确,且客户端有执行权限。

基本使用方法

  1. 启动服务器: MCP 客户端根据上述配置启动 'godoc-mcp-server' 服务器。服务器启动后,会在标准错误输出 (stderr) 打印 "godoc-mcp-server running on stdio..." 表示服务器已准备就绪。

  2. 客户端调用工具: LLM 客户端可以使用 MCP 协议的 'CallTool' 请求来调用服务器提供的工具。

    • 搜索 Golang 包 (searchPackages):

      • 工具名称: 'searchPackages'
      • 参数:
        • 'q': 搜索关键词 (字符串类型,必填)。例如: "json", "http server", "file system"。
      • 客户端发送 'CallTool' 请求,服务器将返回包含搜索结果的 JSON-RPC 响应。响应结果通常是一个 JSON 字符串,包含了搜索到的 Golang 包的列表,每个包包含名称、路径和简介等信息。
    • 获取包信息 (getPackageInfo):

      • 工具名称: 'getPackageInfo'
      • 参数:
        • 'packageName': 要查询的 Golang 包名 (字符串类型,必填)。例如: "fmt", "net/http", "github.com/gin-gonic/gin"。
      • 客户端发送 'CallTool' 请求,服务器将返回包含包详细信息的 JSON-RPC 响应。响应结果通常是一个 JSON 字符串,包含了包的概述、常量、变量、函数、类型和子包等详细文档信息。
  3. 处理响应: LLM 客户端接收到服务器的 JSON-RPC 响应后,解析 'CallToolResult' 中的结果 (通常是 JSON 字符串形式的文本),并将其用于后续的 LLM 推理或任务执行。

示例使用场景:

用户提问: "我想用 Golang 写一个 HTTP 服务器,有哪些库可以使用?"

  1. LLM 客户端可以调用 'searchPackages' 工具,参数 'q' 设置为 "http server"。
  2. 'godoc-mcp-server' 服务器返回搜索结果,包含 'net/http', 'github.com/gin-gonic/gin', 'github.com/gorilla/mux' 等相关 Golang 包。
  3. LLM 客户端解析搜索结果,并将其作为上下文信息,回答用户问题: "你可以使用 Golang 标准库 'net/http',或者流行的第三方库如 'github.com/gin-gonic/gin' 或 'github.com/gorilla/mux' 等。"
  4. 用户继续提问: "gin 框架怎么样?能详细介绍一下吗?"
  5. LLM 客户端可以调用 'getPackageInfo' 工具,参数 'packageName' 设置为 "github.com/gin-gonic/gin"。
  6. 'godoc-mcp-server' 服务器返回 'gin' 框架的详细文档信息,包括概述、主要类型、函数等。
  7. LLM 客户端解析包信息,并根据文档内容,向用户介绍 'gin' 框架的特点和使用方法。

通过以上工具,'godoc-mcp-server' 可以有效地为 LLM 提供 Golang 代码相关的上下文信息,提升 LLM 在代码理解和生成方面的能力。

信息

分类

网页与API