本指南快速介绍了如何使用 Go SDK 构建 MCP 服务器和客户端。它涵盖了基本安装、使用简单工具创建第一个服务器、连接客户端以及理解核心工作流程。有关特定 MCP 功能的详细信息,请参阅资源、提示和工具。有关高级服务器配置和功能,请参阅MCP 服务器。
使用标准 Go 模块系统安装 MCP Go SDK
最简单的入门方法是创建一个带有一个工具的基本 MCP 服务器。这是一个完整的示例
本示例演示了使用代码库中的关键类型和函数创建服务器的核心模式。
来源:README.md22-67 examples/everything/main.go64-72
创建客户端连接到你的服务器非常简单
来源:基于高级图表和客户端模式的传输架构
MCP Go SDK 围绕着几个直接映射到代码实体的核心概念
| 概念 | 主要类型 | 目的 | 关键方法 |
|---|---|---|---|
| 服务器 | server.MCPServer | 托管功能并处理请求 | AddTool(), AddResource(), AddPrompt() |
| 工具 | mcp.Tool | 带 schema 的可执行函数 | mcp.NewTool(), mcp.WithString() |
| 资源 | mcp.Resource | LLM 的数据源 | mcp.NewResource(), mcp.NewResourceTemplate() |
| 提示 | mcp.Prompt | 可重用交互模板 | mcp.NewPrompt(), mcp.WithArgument() |
| 传输 | transport.Interface | 通信层 | Start(), SendRequest() |
| 客户端 | client.MCPClient | 连接并使用服务器 | Initialize(), CallTool() |
来源:examples/everything/main.go105-128 mcp package types
MCP Go 支持三种传输机制,每种都适用于不同的用例
| 传输 | 功能 | 用例 | 示例 |
|---|---|---|---|
| Stdio | server.ServeStdio() | 命令行工具,简单部署 | server.ServeStdio(s) |
| HTTP | server.NewStreamableHTTPServer() | Web 服务,类 REST API | httpServer.Start(":8080") |
| SSE | SSE 服务器实现 | 实时通知,Web 应用程序 | 基于 HTTP 的服务器发送事件 |
来源:examples/everything/main.go485-495 README.md541
现在你已经有了一个正常工作的基本服务器和客户端,你可以探索更多高级功能
为方便快速参考,以下是你将使用的最常见模式