使用说明
项目简介
'grpcmcp' 是一个轻量级的 MCP (Model Context Protocol) 服务器实现,它充当 gRPC 后端服务的代理。通过 'grpcmcp',你可以将现有的 gRPC 服务轻松地暴露为 MCP 协议定义的 工具 (Tools),从而让支持 MCP 协议的 LLM 客户端能够调用这些 gRPC 服务的功能。
主要功能点
- gRPC 服务代理: 将后端的 gRPC 服务代理为 MCP 工具,使得 LLM 客户端可以通过 MCP 协议调用 gRPC 服务。
- 工具 (Tools) 自动注册: 支持通过 gRPC 反射或描述符文件自动发现和注册 gRPC 服务中的方法为 MCP 工具。
- 多种传输协议: 支持 SSE (Server-Sent Events) 和 STDIN 两种 MCP 服务器传输协议,可以灵活地与不同的 MCP 客户端集成。
- 服务过滤: 允许通过服务名称过滤需要暴露的 gRPC 服务,只注册指定的服务为 MCP 工具。
- 鉴权支持: 支持通过 Bearer Token 进行后端 gRPC 服务的鉴权。
安装步骤
- 安装 grpcmcp: 确保你的 Go 环境已配置好。打开终端,运行以下命令安装 'grpcmcp' 可执行文件:
安装完成后,请确保 Go 的 'bin' 目录已添加到你的 'PATH' 环境变量中,这样才能在任何位置直接运行 'grpcmcp' 命令。go install github.com/adiom-data/grpcmcp
服务器配置
MCP 客户端需要配置 MCP 服务器的启动命令及其参数才能连接。以下是 'grpcmcp' 的两种常用配置示例 (JSON 格式):
1. 使用 SSE 传输协议 (例如,服务器地址为 'http://localhost:3000/sse')
{ "serverName": "gRPC MCP Server Proxy", "command": "grpcmcp", "args": [ "--hostport=localhost:3000", // 指定 SSE 服务器的 host:port,启用 SSE 传输 "--reflect" // 使用 gRPC 反射自动发现 gRPC 服务 // "--descriptors=protos.pb" // 或者使用 --descriptors 指定描述符文件,替代反射 ] }
参数说明:
- '--hostport': 指定 SSE 服务器监听的地址和端口。设置此参数将启用 SSE 传输模式。
- '--reflect': 使用 gRPC 反射来自动发现后端 gRPC 服务及其方法。
- '--descriptors': 指定包含 gRPC 服务描述符的 protobuf 文件路径,用于替代 gRPC 反射。你需要先使用 'buf build -o protos.pb' 或 'protoc --descriptor_set_out=protos.pb' 生成描述符文件。
2. 使用 STDIN 传输协议
{ "serverName": "gRPC MCP Server Proxy", "command": "grpcmcp", "args": [ "--reflect" // 使用 gRPC 反射自动发现 gRPC 服务 // "--descriptors=protos.pb" // 或者使用 --descriptors 指定描述符文件,替代反射 ] }
参数说明:
- '--reflect': 使用 gRPC 反射来自动发现后端 gRPC 服务及其方法。
- '--descriptors': 指定包含 gRPC 服务描述符的 protobuf 文件路径,用于替代 gRPC 反射。
更多可选参数:
- '--url': 指定后端 gRPC 服务器的 URL,默认为 'http://localhost:8090'。
- '--services': 逗号分隔的服务名称列表,用于过滤需要暴露的 gRPC 服务。
- '--bearer': 设置用于 gRPC 服务鉴权的 Bearer Token。
- '--bearer-env': 从环境变量中读取 Bearer Token。
- '--connect': 使用 connect 协议 (替代 gRPC)。
- '--name': MCP 服务器的名称,默认为 "gRPC MCP Server"。
- '--version': MCP 服务器的版本,默认为 "1.0.0"。
你可以通过运行 'grpcmcp --help' 命令查看所有可用的命令行参数和选项。
基本使用方法
-
启动 gRPC 后端服务: 首先,你需要启动一个 gRPC 后端服务。仓库中 'example/main.go' 提供了一个简单的 gRPC 健康检查服务示例,你可以运行它作为测试后端:
go run example/main.go这个示例 gRPC 服务默认运行在 'localhost:8090'。
-
启动 grpcmcp 服务器 (SSE 传输): 打开另一个终端,运行 'grpcmcp' 命令,例如使用 SSE 传输协议,并连接到本地的 gRPC 服务:
grpcmcp --hostport=localhost:3000 --reflect这会启动一个 SSE MCP 服务器,监听 'http://localhost:3000/sse',并将 gRPC 服务的方法暴露为 MCP 工具。
-
启动 grpcmcp 服务器 (STDIN 传输): 对于 STDIN 传输,你只需要运行 'grpcmcp' 命令,例如:
grpcmcp --reflect然后将此命令配置到你的 MCP 客户端中。客户端会通过标准输入/输出与 'grpcmcp' 服务器进行通信。
-
MCP 客户端调用工具: 配置好 MCP 客户端后,客户端就可以向 'grpcmcp' 服务器发送 MCP 请求,例如列出可用的工具,或者调用特定的工具。工具的名称会根据 gRPC 服务和方法的名称自动生成。
示例工具名称格式: '服务名__方法名' (例如 'grpc.health.v1.Health__Check')。
请参考 MCP 客户端的文档,了解如何配置和使用 MCP 服务器,以及如何调用注册的工具。
信息
分类
开发者工具