项目简介
modelcontextprotocol-go-sdk 是一个用 Go 语言编写的软件开发工具包 (SDK),用于实现 Model Context Protocol (MCP)。它为开发者提供了构建 MCP 客户端和服务器端应用程序的基础库,从而能够更容易地为大型语言模型 (LLM) 应用提供和管理上下文信息。该 SDK 实现了 MCP 协议的规范,支持资源、工具和 Prompt 模板的管理,以及基于 Stdio 和 SSE 等标准传输协议的通信。
主要功能点
- MCP 协议实现: 完整实现了 Model Context Protocol 规范,确保与其他 MCP 兼容的系统互操作。
- 服务器端能力: 提供构建 MCP 服务器所需的核心组件和接口,用于托管资源、注册工具和管理 Prompt 模板。
- 客户端能力: 提供构建 MCP 客户端所需的核心组件和接口,用于连接 MCP 服务器并与之交互。
- 资源管理: 支持定义和管理各种类型的资源,允许 LLM 客户端访问和利用这些数据。
- 工具集成: 支持注册和执行外部工具,使 LLM 能够调用外部功能扩展其能力。
- Prompt 模板: 支持定义和渲染 Prompt 模板,实现可定制的 LLM 交互模式。
- 标准传输协议: 支持 Stdio 和 SSE 等标准传输协议,方便部署和集成。
安装步骤
由于这是一个 Go SDK,安装步骤主要面向 Go 开发者:
- 安装 Go 环境: 确保你的开发环境已安装 Go 语言。你可以从 https://go.dev/dl/ 下载并安装。
- 获取 SDK: 使用 'go get' 命令获取该 SDK:
这将把 SDK 下载到你的 Go 工作区。go get github.com/jeanlucthumm/modelcontextprotocol-go-sdk
服务器配置
MCP 服务器需要配置启动命令和参数,以便 MCP 客户端能够连接。以下是一个基于该 SDK 构建的 MCP 服务器的典型配置示例 (JSON 格式),假设你的服务器程序名为 'mcp-server' (你需要根据实际情况构建和命名你的服务器程序):
{ "serverName": "my-mcp-server", "command": "mcp-server", "args": [ "--transport", "stdio" ], "description": "我的 MCP 服务器实例,使用 Stdio 传输协议" }
配置参数说明:
- serverName: 服务器名称,客户端用于标识连接的服务器,可以自定义。
- command: 启动 MCP 服务器的可执行文件命令。 你需要根据你实际构建的服务器程序的可执行文件名进行修改。 例如,如果你使用 'go run main.go server' 运行服务器,'command' 应该是 'go','args' 应该包含 'run main.go server'。 请注意,这里假设你已经将服务器程序构建为可执行文件 'mcp-server' 并将其放在了 PATH 环境变量能够找到的位置,或者你需要提供可执行文件的完整路径。 对于 Go 项目,更常见的开发和测试方式可能是直接使用 'go run main.go server' 命令启动服务器。
- args: 启动服务器程序时需要传递的命令行参数。
- '--transport stdio': 指定服务器使用 Stdio 传输协议。 根据服务器的具体实现,可能支持其他传输协议如 'sse' 或 'websocket',你需要根据服务器的实际情况和 MCP 客户端的支持进行配置。
- description: 服务器的描述信息,方便客户端用户了解服务器的用途。
更贴近 Go 开发的服务器配置示例 (假设服务器入口文件为 'main.go',并且使用 'server' 子命令启动服务器):
{ "serverName": "go-mcp-server", "command": "go", "args": [ "run", "main.go", "server", "--transport", "stdio" ], "description": "使用 Go 语言运行的 MCP 服务器实例,使用 Stdio 传输协议" }
配置参数说明 (针对 'go run' 示例):
- command: 'go',表示使用 Go 语言的 'go' 命令。
- args: 包含了 'go run main.go server --transport stdio' 命令的所有参数。
- 'run main.go server': 使用 'go run' 运行 'main.go' 文件,并传递 'server' 子命令来启动服务器逻辑(假设你的 'main.go' 文件中实现了命令行解析和服务器启动逻辑)。
- '--transport stdio': 与之前的示例相同,指定使用 Stdio 传输协议。
重要提示: 以上配置仅为示例,实际的服务器配置需要根据你基于该 SDK 开发的 MCP 服务器程序的具体实现来确定。 你需要查看你的服务器程序的命令行参数文档或源代码,了解它支持哪些传输协议、需要哪些配置参数。
基本使用方法
- 构建 MCP 服务器: 使用该 SDK 提供的库和接口,开发你的 MCP 服务器应用程序,实现资源管理、工具注册和 Prompt 模板管理等功能。你需要编写 Go 代码来定义你的服务器逻辑。
- 运行 MCP 服务器: 编译并运行你构建的 MCP 服务器程序。
- 配置 MCP 客户端: 在你的 MCP 客户端应用中,配置连接到你的 MCP 服务器。你需要提供服务器的启动命令和参数 (如上述 JSON 配置示例),以便客户端能够启动并连接到服务器。
- 客户端与服务器交互: MCP 客户端通过 JSON-RPC 协议与服务器进行通信,发送请求 (例如读取资源、调用工具、获取 Prompt),并接收服务器的响应。 你需要在客户端应用中集成 MCP 客户端 SDK (如果使用 Go 客户端 SDK) 或其他 MCP 客户端库,并根据 MCP 协议规范与服务器进行交互。
总结: 该 SDK 提供的是构建 MCP 服务器和客户端的基础工具,你需要基于此 SDK 进行二次开发,实现具体的 MCP 服务器和客户端应用。 阅读 SDK 的文档和示例代码 (如果仓库中有提供),可以帮助你更好地理解如何使用该 SDK 构建 MCP 应用。
信息
分类
开发者工具