使用说明
项目简介
MCP Go SDK 提供了一套 Go 语言库,用于快速开发符合 Model Context Protocol (MCP) 规范的服务器和客户端应用。该 SDK 实现了 MCP 协议的核心功能,例如资源管理、工具注册与调用、Prompt 模板定义等,帮助开发者轻松构建为大型语言模型 (LLM) 提供上下文信息的后端服务。
主要功能点
- 资源管理 (Resources): 支持托管和管理各种类型的数据资源,并提供标准的读取接口,使 LLM 能够访问外部数据。
- 工具注册与执行 (Tools): 允许注册和执行外部功能模块(工具),扩展 LLM 的能力边界,例如调用 API、访问数据库等。
- Prompt 模板 (Prompts): 支持定义和渲染 Prompt 模板,实现可定制化的 LLM 交互模式,提升交互的灵活性和效率。
- 标准传输协议 (Stdio): 默认支持 Stdio 传输协议,方便快速部署和集成。
- JSON-RPC 通信: 采用标准的 JSON-RPC 协议进行客户端与服务器端的通信。
- 拦截器 (Interceptors): 提供拦截器功能,允许在请求处理过程中插入自定义逻辑,例如日志记录、鉴权等。
安装步骤
- 安装 Go 环境: 确保已安装 Go 语言环境 (>= 1.18)。
- 获取 SDK: 使用 'go get' 命令获取 MCP Go SDK:
go get github.com/riza-io/mcp-go
服务器配置
MCP 服务器需要配置启动命令 (command) 及其参数 (args),以便 MCP 客户端能够连接。以下是基于仓库示例 'examples/fs/main.go' 生成的 JSON 格式配置信息,用于配置一个文件系统 (FS) MCP 服务器:
{ "mcpServers": { "fs": { "command": "/path/to/compiled/fs-example", // 替换为编译后的 fs-example 服务器程序路径 "args": [ "/path/to/root/directory" // 文件系统根目录路径,MCP 服务器将以此目录为根目录提供文件资源 ] } } }
参数说明:
- 'command': 指向编译后的 MCP 服务器可执行文件的绝对路径。你需要先编译 'examples/fs/main.go' 文件,并将路径替换为编译后的文件路径。 例如,如果编译后的文件名为 'fs-example',并且位于 '/home/user/bin' 目录下,则应设置为 '/home/user/bin/fs-example'。
- 'args': 一个字符串数组,包含传递给服务器程序的命令行参数。对于 'fs-example',第一个参数指定文件系统根目录。你需要将其替换为你希望暴露给 MCP 客户端访问的目录的路径。
编译 'fs-example' (或其他示例) 服务器程序:
进入 'examples/fs' 目录,执行以下命令编译 'fs-example' 服务器程序:
cd examples/fs go build -o fs-example main.go
编译成功后,会在当前目录下生成 'fs-example' 可执行文件。请根据实际情况调整 'command' 配置中的路径。
基本使用方法
- 编写 MCP 服务器处理程序: 创建一个 Go 结构体,实现 'mcp.ServerHandler' 接口,并根据需要实现 'Initialize', 'ListResources', 'ReadResource', 'ListTools', 'CallTool', 'ListPrompts', 'GetPrompt' 等方法,以提供资源、工具和 Prompt 服务。可以参考 'examples/fs/main.go' 或 'examples/weather/main.go' 中的示例。
- 创建 MCP 服务器实例: 使用 'mcp.NewServer' 函数创建一个 MCP 服务器实例,传入 'stdio.NewStream(os.Stdin, os.Stdout)' 作为通信流,并传入你编写的服务器处理程序实例。
- 启动服务器: 调用服务器实例的 'Listen(context.Background())' 方法启动服务器,监听客户端请求。
- 配置 MCP 客户端: 在 MCP 客户端(例如 Claude Desktop)中,根据 "服务器配置" 章节的说明,配置 MCP 服务器的启动命令和参数,建立连接。
- 客户端请求交互: 客户端可以通过 MCP 协议向服务器发送请求,例如列出资源、读取资源、调用工具、获取 Prompt 等,服务器会根据请求进行处理并返回响应。
运行示例服务器:
-
编译 'fs-example': 按照 "服务器配置" 中的说明编译 'fs-example'。
-
配置 MCP 客户端: 将 "服务器配置" 中的 JSON 配置信息添加到你的 MCP 客户端配置中,并将 'command' 和 'args' 替换为实际路径。
-
运行客户端: 启动 MCP 客户端,客户端将尝试连接到配置的 MCP 服务器。
-
运行 'fs-example': 在终端中运行编译后的 'fs-example' 程序,并传入文件系统根目录作为参数:
./fs-example /path/to/your/directory(将 '/path/to/your/directory' 替换为实际目录路径)
'fs-example' 服务器将在标准输入和标准输出上与 MCP 客户端进行通信。
注意事项
- 确保 MCP 客户端和服务器端使用的 MCP 协议版本兼容。
- 根据实际需求,可以扩展和定制服务器的处理程序,实现更丰富的功能。
- 可以参考 'examples' 目录下的其他示例,例如 'weather' 示例,了解如何实现更复杂的 MCP 服务器。
信息
分类
开发者工具