go-mcp SDK 使用说明
项目简介
go-mcp 是一个使用 Go 语言开发的 SDK,用于构建符合 Model Context Protocol (MCP) 规范的服务器。它提供了一套类型安全且易于使用的 API,帮助开发者快速搭建和管理 MCP 服务器,以便为大型语言模型 (LLM) 应用提供结构化的上下文信息和功能。
主要功能点
- 类型安全: 通过代码生成确保工具和 Prompt 参数的类型安全,在编译时而非运行时捕获错误。
- API 简洁直观: 提供符合 Go 语言习惯的 API 接口,降低学习曲线,加速服务器开发过程。
- 开发者友好: 注重 API 的人体工程学设计,使开发过程更加直观和高效。
- 支持 MCP 核心功能: 实现了 MCP 协议的关键特性,包括资源管理、工具注册与调用、Prompt 模板定义和渲染等。
- 灵活的传输协议: 支持 Stdio 等传输协议,方便与 MCP 客户端集成。
安装步骤
-
安装 Go 语言环境: 确保你的开发环境中已安装 Go 语言。你可以从 Go 官网 下载并安装。
-
获取 go-mcp SDK: 使用 'go get' 命令获取 SDK:
go get github.com/ktr0731/go-mcp
服务器配置
MCP 服务器需要配置启动命令 (command) 及其参数 (args) 才能被 MCP 客户端调用。以下是基于 go-mcp SDK 构建的 MCP 服务器的典型配置信息(JSON 格式)。请根据你实际运行的示例或自定义服务器进行调整。
示例配置 (以 'examples/temperature' 为例):
{ "serverName": "Temperature Server", "command": "go", "args": [ "run", "./cmd/temperature/main.go" ], "description": "一个简单的温度转换 MCP 服务器示例" }
参数注释:
- '"serverName"': MCP 服务器的名称,可以自定义,用于在客户端识别服务器。
- '"command"': 启动 MCP 服务器的可执行命令。对于 Go 程序,通常是 'go'。
- '"args"': 启动命令的参数列表,以数组形式提供。
- '"run"': 'go run' 命令用于直接运行 Go 程序。
- '"./cmd/temperature/main.go"': 指向 'temperature' 示例服务器的 'main.go' 文件路径。请注意,你需要根据你的实际服务器代码路径进行修改。如果你已经编译了可执行文件,'args' 可以替换为可执行文件的路径。
- '"description"': 服务器的描述信息,可选,用于提供服务器功能的简要说明。
重要提示:
- 工作目录: MCP 客户端执行上述命令时,工作目录通常是客户端的上下文环境。请确保服务器代码中使用的任何相对路径(例如资源文件)都相对于客户端的工作目录是正确的,或者使用绝对路径。
- 构建可执行文件: 如果你的 MCP 客户端环境不适合直接运行 'go run' 命令,你需要先将 Go 服务器代码编译成可执行文件。然后,将 '"command"' 配置为可执行文件的路径,'"args"' 可以根据需要调整。例如,编译 'temperature' 示例:
配置可以修改为:go build -o temperature ./cmd/temperature/main.go{ "serverName": "Temperature Server", "command": "./temperature", "args": [], "description": "一个简单的温度转换 MCP 服务器示例" }
示例配置 (以 'examples/weather' 为例):
{ "serverName": "Weather Server", "command": "go", "args": [ "run", "./examples/weather/cmd/weather/main.go" ], "description": "一个提供天气预报和工具的 MCP 服务器示例" }
请根据实际情况调整文件路径和参数。
基本使用方法
-
编写服务器定义: 使用 go-mcp SDK 提供的 'codegen' 包定义你的 MCP 服务器的功能,包括 Capabilities, Implementation, Prompts, Tools, ResourceTemplates 等。参考 'examples/weather/cmd/mcpgen/main.go' 和 'examples/temperature/cmd/mcpgen/main.go' 示例。
-
生成代码: 运行 'go run cmd/mcpgen/main.go' (或类似的命令,根据你的 'mcpgen' 代码路径调整) 生成服务器框架代码 ('mcp.gen.go')。
-
实现 Handler 接口: 创建 Go 文件实现 'ServerPromptHandler', 'ServerToolHandler', 'ServerResourceHandler', 'ServerCompletionHandler' 等接口 (取决于你在服务器定义中启用的 Capabilities)。参考 'examples/weather/weather.go' 和 'examples/temperature/temperature.go' 示例。
-
实例化 Handler 并启动服务器: 在 'main.go' 文件中,实例化你的 Handler 实现,并使用 'mcp.NewStdioTransport' 和 'jsonrpc2.Serve' 启动 MCP 服务器。参考 'examples/weather/cmd/weather/main.go' 和 'examples/temperature/cmd/temperature/main.go' 示例。
-
配置 MCP 客户端: 根据 "服务器配置" 部分的说明,配置你的 MCP 客户端,指定服务器的启动命令和参数。
-
与 MCP 客户端交互: 启动 MCP 服务器和客户端,客户端即可通过 MCP 协议与服务器进行通信,调用工具、获取 Prompt、访问资源等。
更详细的使用方法和示例,请参考仓库中的 'README.md' 文档、 'examples' 目录以及 API 文档。
信息
分类
开发者工具