使用说明

项目简介

'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 服务的鉴权。

安装步骤

  1. 安装 grpcmcp: 确保你的 Go 环境已配置好。打开终端,运行以下命令安装 'grpcmcp' 可执行文件:
    go install github.com/adiom-data/grpcmcp
    安装完成后,请确保 Go 的 'bin' 目录已添加到你的 'PATH' 环境变量中,这样才能在任何位置直接运行 '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' 命令查看所有可用的命令行参数和选项。

基本使用方法

  1. 启动 gRPC 后端服务: 首先,你需要启动一个 gRPC 后端服务。仓库中 'example/main.go' 提供了一个简单的 gRPC 健康检查服务示例,你可以运行它作为测试后端:

    go run example/main.go

    这个示例 gRPC 服务默认运行在 'localhost:8090'。

  2. 启动 grpcmcp 服务器 (SSE 传输): 打开另一个终端,运行 'grpcmcp' 命令,例如使用 SSE 传输协议,并连接到本地的 gRPC 服务:

    grpcmcp --hostport=localhost:3000 --reflect

    这会启动一个 SSE MCP 服务器,监听 'http://localhost:3000/sse',并将 gRPC 服务的方法暴露为 MCP 工具。

  3. 启动 grpcmcp 服务器 (STDIN 传输): 对于 STDIN 传输,你只需要运行 'grpcmcp' 命令,例如:

    grpcmcp --reflect

    然后将此命令配置到你的 MCP 客户端中。客户端会通过标准输入/输出与 'grpcmcp' 服务器进行通信。

  4. MCP 客户端调用工具: 配置好 MCP 客户端后,客户端就可以向 'grpcmcp' 服务器发送 MCP 请求,例如列出可用的工具,或者调用特定的工具。工具的名称会根据 gRPC 服务和方法的名称自动生成。

示例工具名称格式: '服务名__方法名' (例如 'grpc.health.v1.Health__Check')。

请参考 MCP 客户端的文档,了解如何配置和使用 MCP 服务器,以及如何调用注册的工具。

信息

分类

开发者工具