在人工智能快速发展的今天,大型语言模型(LLM)需要更丰富、更动态的上下文信息来完成任务。Model Context Protocol (MCP) 应运而生,它定义了一套标准协议,允许模型与外部工具、数据源和服务进行安全、高效的交互,极大地扩展了大模型的能力边界。
但是,MCP 官方 Go SDK 却姗姗来迟,在 Python SDK 已经满世界运行时,Go SDK 项目才刚刚启动,这也导致官方 Go SDK 稍显落后。不过,经过数月的社区测试、迭代和打磨,modelcontextprotocol/go-sdk
项目终于迎来了具有里程碑意义的 v1.0.0 正式版本。这标志着 Go 语言版本的 MCP 官方开发套件结束了“不稳定”的预览阶段,进入了生产可用的稳定时代。
v1.0.0 意味着什么?—— 承诺与信任
版本号从 v0.x.x
跃升至 v1.0.0
,绝不仅仅是数字的变化,它背后代表着项目维护者向所有开发者作出的一项庄严承诺:API 稳定性。
根据官方发布说明,核心团队明确表示:“Going forward we won’t make breaking API changes.”(未来我们将不会进行破坏性的 API 更改)。这意味着:
- 可被信赖的依赖:现在可以放心大胆地将此 SDK 用于真实的、生产级的项目中,无需担心未来因 SDK 本身的不兼容升级而带来的额外成本和风险。
- 向后兼容性:任何未来的功能增强和优化都将以向后兼容的方式进行。如果需要对现有 API 进行改进,将会通过“弃用(deprecating)”并添加新方式来实现,给予开发者充足的迁移时间。
- 生态发展的基石:稳定的 API 是构建强大生态的基础。库作者、工具开发者可以基于此稳定版本构建更上层的应用和集成,促进整个 Go MCP 生态的繁荣。
快速上手
modelcontextprotocol/go-sdk
提供了构建 MCP 客户端(Client)和服务器(Server)所需的所有核心功能,设计清晰直观,非常易于使用。
安装
1 | go get github.com/modelcontextprotocol/go-sdk/mcp@v1.0.0 |
创建一个 MCP 服务器
下面的代码示例展示如何创建一个简单的“问候”服务器,它提供了一个名为 greet
的工具。
1 | package main |
创建一个 MCP 客户端
客户端可以连接到上述服务器并调用其工具。
1 | package main |
执行示例
根据以下命令执行 MCP 程序。
1 | # 编译 MCP 服务器程序 |
至此,一个基于 stdio 的 MCP 使用示例就完成了。
你可以在 https://github.com/modelcontextprotocol/go-sdk/tree/main/examples 探索更多使用示例。
MCP Go SDK 设计
MCP Go SDK 的设计遵循了 Model Context Protocol (MCP) 规范,旨在提供一种标准化、类型安全的方式,让客户端(如 AI Agent)与服务器(提供工具、数据源或服务)进行通信。以下是其核心设计理念:
- 模块化与分层设计:
- 传输层抽象:SDK 定义了
Transport
接口(如StdioTransport
、CommandTransport
、SSEServerTransport
),允许通信通过不同渠道(stdio、HTTP)进行。这使得 SDK 能适应各种部署场景(本地、远程、云端)。 - 会话管理:客户端和服务器通过
Session
对象管理连接状态,支持多次交互。会话生命周期包括连接、工具调用、资源访问和断开。
- 传输层抽象:SDK 定义了
- 类型安全与代码生成友好:
- 工具输入和输出使用 Go 结构体定义,并借助
json
和jsonschema
标签进行序列化和验证。这确保了数据契约的明确性,减少了运行时错误。
- 工具输入和输出使用 Go 结构体定义,并借助
- 客户端-服务器模式:
- 服务器:注册工具(
mcp.AddTool
)和资源,处理请求。服务器可以同时支持多个工具,每个工具独立实现。 - 客户端:发起工具调用(
session.CallTool
)和资源请求。客户端可以连接到多个服务器,实现聚合功能。
- 服务器:注册工具(
- 协议兼容性与扩展性:
- SDK 完整实现了 MCP 规范(如工具调用、资源读取、提示管理),并支持未来扩展。
- 错误处理:
- 错误通过 Go 的
error
机制返回,调用方需显式处理。工具响应中的IsError
字段表示业务逻辑错误。
- 错误通过 Go 的
总结
Go 语言的高效与 MCP 协议的强大相结合,必将为 AI 应用开发开启新的可能。
MCP Go SDK v1.0.0 的发布是 Go 开发者与 AI 应用交叉领域的一个重大事件。它提供了一个:
- 稳定的 API 基础
- 功能完整的 MCP 实现(支持工具、资源、提示等)
- 经过实践检验的 生产就绪组件
对于开发者而言,现在是开始使用 Go 构建 MCP 服务器(如连接数据库、内部 API、专属工具链)和客户端的绝佳时机。
本文示例源码我都放在了 GitHub 中,欢迎点击查看。
希望此文能对你有所启发。
延伸阅读
- MCP Go SDK GitHub 源码:https://github.com/modelcontextprotocol/go-sdk
- MCP Go SDK v1.0.0 Release:https://github.com/modelcontextprotocol/go-sdk/releases/tag/v1.0.0
- 本文 GitHub 示例代码:https://github.com/jianghushinian/blog-go-example/tree/main/mcp/sdk
- 本文永久地址:https://jianghushinian.cn/2025/10/08/mcp-go-sdk/
联系我
- 公众号:Go编程世界
- 微信:jianghushinian
- 邮箱:jianghushinian007@outlook.com
- 博客:https://jianghushinian.cn
- GitHub:https://github.com/jianghushinian