项目简介
mcp-proxy 是一个 MCP (Model Context Protocol) 代理服务器,它本身不是一个完整的 MCP 服务器实现,而是作为现有 MCP 服务器的HTTP网关。它接收客户端发送的 HTTP 请求,并将这些请求转换为 MCP 协议的 JSON-RPC 格式,转发给后端实际运行的 MCP 服务器进行处理。这样做的好处是,客户端可以使用标准的 HTTP 协议与 MCP 服务器交互,而无需直接支持 SSE 或 WebSocket 等 MCP 原生协议,从而简化了客户端的实现和部署。
请注意: mcp-proxy 依赖于后端运行的实际 MCP 服务器。你需要先部署和配置好一个或多个符合 MCP 协议的服务器,然后通过 mcp-proxy 来代理访问它们。
主要功能点
- HTTP 协议代理: 将客户端的 HTTP 请求转换为 MCP 的 JSON-RPC 格式。
- 多后端 MCP 服务器支持: 可以配置代理多个不同的 MCP 服务器。
- 简化部署: 允许在标准的 HTTP 基础设施上部署 MCP 客户端和服务端,无需复杂的网络配置。
- 配置灵活: 支持 JSON 和 YAML 格式的配置文件,方便管理后端 MCP 服务器的连接信息。
- 环境变量扩展: 配置文件中支持环境变量扩展,方便在不同环境中使用。
安装步骤
-
安装 Go 环境: 确保你的机器上已经安装了 Go 语言环境 (>= 1.16)。
-
获取 mcp-proxy 代码: 使用 'go get' 命令下载并安装 mcp-proxy:
go get github.com/ubie-oss/mcp-proxy
服务器配置
mcp-proxy 通过配置文件来指定需要代理的后端 MCP 服务器。配置文件支持 JSON 或 YAML 格式。
以下是一个 'config.json' 配置文件的示例,你需要根据你的实际 MCP 服务器配置进行修改:
{ "mcpServers": { "server1": { "command": "你的MCP服务器启动命令", "args": ["MCP服务器启动参数"], "env": { "环境变量名1": "环境变量值1", "环境变量名2": "环境变量值2" } }, "server2": { "command": "另一个MCP服务器启动命令", "args": ["另一个MCP服务器启动参数"], "env": { "环境变量名3": "环境变量值3", "环境变量名4": "环境变量值4" } } } }
配置参数说明:
- 'mcpServers': 一个 JSON 对象,包含了所有需要代理的 MCP 服务器的配置信息。
- 'server1', 'server2', ...: 每个键代表一个服务器的名称,你可以自定义名称,客户端在请求时需要使用这个名称来指定访问哪个后端服务器。
- 'command': 启动后端 MCP 服务器的可执行命令,例如 'npx' 或 '/path/to/your/mcp-server'。
- 'args': 一个字符串数组,包含了传递给 'command' 的命令行参数。例如,如果你的 MCP 服务器需要指定配置文件路径,可以在这里添加参数。
- 'env': 一个 JSON 对象,包含了需要设置的环境变量。键是环境变量名,值是环境变量值。
- 'server1', 'server2', ...: 每个键代表一个服务器的名称,你可以自定义名称,客户端在请求时需要使用这个名称来指定访问哪个后端服务器。
重要提示: 'command' 和 'args' 配置项用于 mcp-proxy 启动和管理 后端 MCP 服务器进程。你需要根据你实际使用的 MCP 服务器的启动方式,正确配置这些参数。
基本使用方法
-
准备配置文件: 根据你的 MCP 服务器配置,创建或修改 'config.json' (或 YAML) 配置文件。
-
启动 mcp-proxy: 使用以下命令启动 mcp-proxy 服务器:
go run . -config config.json -port 9090- '-config config.json': 指定配置文件的路径。请替换 'config.json' 为你实际的文件路径。
- '-port 9090': 指定 mcp-proxy 监听的端口号。你可以根据需要修改端口号。
-
客户端发送请求: 客户端可以通过 HTTP POST 请求与 mcp-proxy 交互。请求 URL 的路径格式为 'http://<mcp-proxy-host>:<port>/<server_name>',其中 '<server_name>' 是你配置文件中 'mcpServers' 下定义的服务器名称(例如 'server1', 'server2')。
请求的 body 需要是符合 MCP 协议的 JSON-RPC 请求。例如,要调用名为 'exampleTool' 的工具,你可以发送如下 HTTP 请求 (Content-Type: 'application/json'):
{ "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "exampleTool", "arguments": { "arg1": "value1" } }, "id": 1 }mcp-proxy 会将这个请求转发给名为 '<server_name>' 的后端 MCP 服务器,并将 MCP 服务器的响应再以 HTTP 响应的形式返回给客户端。
信息
分类
网页与API