mcp-client-go
Golang MCP 客户端 SDK,支持 50+ 外部服务统一接入和多 AI 模型适配
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Golang MCP 客户端 SDK,支持 50+ 外部服务统一接入和多 AI 模型适配
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你训练了一个强大的 AI 助手,它能回答各种问题,但每次问到"帮我查一下今天北京的天气"或"在我的 GitHub 仓库里找一个文件"时,它就只能摊手说"做不到"。这就是 AI 模型的"工具盲区"——它们有强大的推理能力,却缺乏与现实世界交互的手段。
mcp-client-go 正是为了解决这个痛点而生。这是一个用 Golang 编写的 Model Context Protocol(MCP)客户端库,它的核心使命只有一个:让 AI 模型能够统一调用外部工具和服务。无论你要接入高德地图、GitHub API、PostgreSQL 数据库,还是 Slack 消息通知,只需几行代码,AI 模型就能像使用内置函数一样调用它们。
mcp-client-go 由国内开发者 yincongcyincong 创建和维护,项目托管于 GitHub,截至分析时已获得 150 颗星 和 21 个 Fork。项目的诞生背景与 2024-2025 年间 MCP 协议的快速发展密不可分。
MCP(Model Context Protocol)是 Anthropic 在 2024 年底提出的一种标准化协议,旨在解决 AI 模型与外部工具之间的连接问题。在 MCP 出现之前,每个 AI 平台都要为不同的工具写专门的适配代码——接入 GitHub 要一套逻辑,接入数据库又要另一套逻辑。MCP 相当于给 AI 和工具之间制定了一个"通用插头标准",只要工具实现了 MCP 接口,AI 就能即插即用。
作者 yincongcyincong 的项目在 MCP 协议生态中填补了一个重要空白:当时主流的 MCP 客户端以 Python 和 TypeScript 为主,Golang 生态缺乏一个成熟、全面的 MCP 客户端实现。项目从 2024 年中开始维护,持续更新,已支持超过 50 种 MCP 服务的接入。
mcp-client-go 提供了一套完整的 MCP 客户端能力,核心功能可以分为以下几个层次。
项目的核心入口是 clients 包。通过 RegisterMCPClient() 函数,开发者可以批量注册多个 MCP 服务,并发初始化,统一管理。项目使用 Go 的 sync.Map 存储客户端实例,支持运行时动态添加和移除客户端。管理 API 包括:GetMCPClient() 按名称查找、GetMCPClientByToolName() 按工具名反向查找客户端、ClearAllMCPClient() 一键清空所有客户端连接。
// 从配置文件初始化多个 MCP 客户端
params, _ := clients.InitByConfFile("config.json")
clients.RegisterMCPClient(ctx, params)
// 按工具名找到对应的客户端并调用
client, _ := clients.GetMCPClientByToolName("list_commits")
result, _ := client.ExecTools(ctx, "list_commits", map[string]interface{}{
"owner": "xxx", "repo": "yyy",
})
MCP 协议支持多种传输方式,mcp-client-go 全部覆盖:
createStdioMCPClient() 实现。createSSEMCPClient() 支持。createHTTPStreamCPClient() 处理。项目不仅负责 MCP 通信,还贴心地提供了 AI 模型适配层,将 MCP 工具自动转换为各 AI 平台所需的函数调用格式。当前支持的适配目标包括:
TransToolsToDPFunctionCall() 将 MCP 工具转换为 DeepSeek 的 function calling 格式TransToolsToChatGPTFunctionCall() 适配 OpenAI 的 tools 格式TransToolsToGeminiFunctionCall() 适配 Gemini 的 function declarations这个适配层是项目的核心竞争力之一。开发者无需关心不同 AI 平台的 API 差异,工具注册完成后,一行代码就能得到适配好的函数调用参数。
项目内置了对 50+ 种 MCP 服务的客户端实现,覆盖了 AI 应用的常见工具场景:
| 类别 | 涵盖服务 |
|---|---|
| 地图与地理 | 高德地图(amap)、百度地图(baidumap)、Google Maps |
| 代码与协作 | GitHub、GitLab、Atlassian(Jira、Confluence)、Slack |
| 数据库 | PostgreSQL、MySQL、MongoDB、Redis、SQLite |
| 搜索与爬虫 | DuckDuckGo、Firecrawl、Tavily、ZoomEye |
| 云服务 | AWS Bedrock、Cloudflare、阿里云 |
| 创意工具 | YouTube、EverArt(图像生成)、Blender |
| 金融数据 | Binance、Bitcoin |
| 浏览器自动化 | Playwright、Puppeteer |
| 其他 | Notion、Sentry、K8s、Grafana、LeetCode 等 |
每种服务的客户端都遵循统一的接口设计,参数配置通过结构体传入,示例代码完整放在 demo/client/ 目录下。
项目采用 模块化分层架构。最底层是 mark3labs/mcp-go(第三方 MCP 协议实现库),提供 MCP 协议的消息编解码、传输层抽象。clients 包建立在协议层之上,负责客户端生命周期管理(注册、调用、销毁)。utils 包提供 AI 模型适配层的工具函数。prompt 目录存放各服务的 prompt 模板资源。
这种分层设计使得各层职责清晰:协议层不关心业务逻辑,客户端层不关心具体 AI 模型,适配层不关心底层传输细节。
项目使用 Go Module 管理依赖,go.mod 中声明的直接依赖包括:
github.com/mark3labs/mcp-go v0.31.0:MCP 协议核心库github.com/sashabaranov/go-openai v1.38.1:OpenAI API 客户端github.com/cohesion-org/deepseek-go v1.2.10:DeepSeek API 客户端google.golang.org/genai:Google AI SDK(Gemini 等)github.com/revrost/go-openrouter:OpenRouter 统一网关github.com/volcengine/volcengine-go-sdk:火山引擎 SDK所有依赖均可通过 go mod download 自动下载,版本锁定在 go.sum 中。
项目在客户端管理层面大量使用 Go 的并发原语:sync.Map 管理多客户端、sync.WaitGroup 并发初始化、context.Context 控制超时和取消。client.go 中对每个客户端的初始化操作都包裹了 recover() 防止 panic 扩散影响主流程。
代码遵循标准 Go 项目布局,使用 go fmt 格式化,有 Makefile 提供标准化构建命令,CI 配置中应有基本的代码质量检查。整体代码量适中(不含依赖约数千行),结构扁平,易于阅读和维护。
mcp-client-go 主要面向 有 Go 开发经验的 AI 应用开发者。你需要具备以下基础:
如果你是纯 Python 背景,项目的 README 提供了足够清晰的示例,上手难度仍然较低。
场景一:构建多工具 AI 助手
当你需要 AI 助手不仅能聊天,还能帮你操作 GitHub 仓库、查询数据库、发送 Slack 消息时,mcp-client-go 是理想的中间件。你只需在配置文件中声明需要的 MCP 服务,AI 模型就能自动发现和调用这些工具。
场景二:AI 工作流自动化
通过组合多个 MCP 服务(如 GitHub + PostgreSQL + Slack),可以构建复杂的 AI 自动化工作流:AI 分析数据库中的销售数据,生成报告后自动推送到 Slack 频道。
场景三:多模型统一工具接口
如果你需要让同一个 AI 工具集支持 DeepSeek、GPT-4、Gemini 等多个模型,mcp-client-go 的适配层可以一键生成各平台兼容的函数调用格式,大幅减少重复适配代码。
mcp-client-go 作为一个相对年轻的开源项目(截至分析时 150★),存在以下需要注意的问题:
依赖上游协议库版本:项目大量依赖 mark3labs/mcp-go,该库的版本迭代可能影响项目稳定性。当前依赖版本为 v0.31.0,后续 MCP 协议规范更新时需要关注兼容性问题。
错误处理粒度:客户端初始化错误以 map[string]error 返回,虽然记录了失败的服务名,但缺少重试机制和详细的错误分类(网络错误、认证失败、协议不兼容等混在一起)。
文档完整性:虽然有英文和中文两份 README,示例代码也较为完整,但部分服务的配置参数说明仍然较为简略,需要参考上游 MCP 服务文档补充。
非活跃维护迹象:项目在分析时(2026年6月)Star 增长趋于平稳,Issue 和 PR 数量较少,可能处于低维护状态,实际使用前建议做充分验证。
mcp-client-go 的价值在于推动 MCP 协议在 Golang 生态中的落地。随着 MCP 协议被越来越多的 AI 平台和服务采用(Anthropic、AWS、Google、NVIDIA 等均在支持 MCP),围绕 MCP 的工具链生态正在快速扩张。
在 Golang 侧,目前主流的 MCP 客户端库选择有限,mcp-client-go 凭借其全面的服务覆盖(50+ 服务)和多 AI 模型适配两大差异化特性,在这一细分领域占据了有利位置。对于在国内使用 DeepSeek、火山引擎等平台的开发者来说,mcp-client-go 几乎是唯一同时支持这些国产 AI 底座的 MCP Go 客户端选择。
项目也受益于 MCP 协议本身的标准化红利——只要 MCP 协议生态持续增长,支持 MCP 的新服务可以零成本接入 mcp-client-go,无需为每个新服务单独开发适配代码。
总结:mcp-client-go 是一款面向生产环境的 Golang MCP 客户端 SDK,以统一的 API 抽象了 50+ 外部服务的接入,配合多 AI 平台适配层,是构建 Golang 版 AI Agent 的高效工具底座。适合有 Go 基础且需要在应用中集成多工具 AI 能力的开发者选用。