README
🚀 godoc-mcp-server
本项目能够从 pkg.go.dev 搜索 Go 语言包及其文档,并将相关信息提供给大语言模型(LLM),作为 MCP 服务器发挥作用。
🚀 快速开始
本项目可直接使用,只需使用客户端发起请求,它基于标准输入输出运行。
📦 安装指南
你可以通过以下两种方式安装本项目:
- 方式一:下载预编译二进制文件 你可以从 发布页面 下载预编译的二进制文件。
- 方式二:从源码安装并自行编译 执行以下命令从源码进行安装和编译:
go install github.com/yikakia/godoc-mcp-server/cmd/godoc-mcp-server@latest
✨ 主要特性
已完成功能
- 本地缓存:使用本地缓存以避免每次搜索(来自 Reddit 用户)。
- 搜索包信息:可查询某个包被多少个其他包导入。
- 发布功能:使用 GitHub Actions 来为多个平台发布。
待完成功能
- 获取示例:在
getPackageInfo功能中实现获取示例的功能。
💻 使用示例
本项目使用简单,只需使用客户端发起请求,其基于标准输入输出运行。
📚 详细文档
开发经验
在开发过程中,参数描述非常重要,描述参数时应告知客户端如何使用一个工具的输出来更改另一个工具的输入格式。
例如,searchPackage 的输出包含子包名称,但不包含包名称。因此,如果要让 LLM 使用 getPackageInfo 来获取子包信息,packageName 参数的描述如下:
搜索包的名称。如果你之前使用过
searchPackages,并且用户希望获取子包的信息,你应该将它们组合起来。例如,当用户查询 mcp 时,它返回packageName: github.com/mark3labs/mcp-go/mcp 和子包client,那么如果用户希望获取client的信息,你应该将packageName设置为 github.com/mark3labs/mcp-go/mcp/client 而不是client。
使用这个详细描述后,LLM 将会识别一些子包的名称。你可以直接告知它要获取哪个包的信息,或者要获取哪个包及其子包的信息,然后它会组合这些信息并调用 getPackageInfo 来获取详细信息。
因此,也许我们应该让用户配置这个描述,以使工具更加有用和高效。
库的使用
此模块导出的 Go API 目前应被视为不稳定,并且可能会有破坏性更改。未来我们可能会提供稳定性;请通过提交问题来反馈你的用例。
📄 许可证
该项目根据 MIT 开源许可协议授权。完整的条款请参阅 MIT。
Scan to join WeChat group