项目简介
MCP Catie 是一个轻量级的代理服务,用于路由 Model Context Protocol (MCP) 的 JSON-RPC 请求。它充当 MCP 客户端和后端 MCP 服务器之间的流量入口,根据请求的内容(如资源 URI 或工具名称)将请求动态地转发到合适的后端服务。
主要功能点
- 动态请求路由: 基于请求的方法和参数,将 MCP JSON-RPC 请求动态路由到不同的后端 MCP 服务器。
- 模式匹配路由: 支持使用正则表达式定义路由规则,灵活匹配资源 URI 和工具名称。
- 会话保持: 通过 'Mcp-Session-Id' Header 实现会话感知路由,确保来自同一客户端的后续请求被路由到相同的后端服务器。
- 流式HTTP传输 (SSE): 支持基于 Server-Sent Events (SSE) 的流式 HTTP 传输,用于服务器向客户端推送数据。
- 配置热重载: 无需重启服务即可动态加载和应用配置更改。
- 监控与指标: 提供健康检查端点、Prometheus 指标以及简单的 Web UI 用于服务监控。
- 基础认证: 监控 UI 和指标端点提供基础认证保护。
安装步骤
-
环境准备:
- 确保已安装 Go 1.18 或更高版本。
- 可选:安装 Docker 以进行容器化部署。
-
从源码构建 (可选):
- 克隆仓库到本地:
git clone https://github.com/mclenhard/catie-mcp.git cd catie-mcp - 构建可执行文件:
go build -o mcp-catie ./cmd/main.go
- 克隆仓库到本地:
-
使用 Docker (推荐):
- 构建 Docker 镜像:
docker build -t mcp-catie .
- 构建 Docker 镜像:
服务器配置
MCP Catie 代理服务器通过 'router_config.yaml' 文件进行配置。以下是一个配置示例,您可以根据实际后端 MCP 服务器进行修改。
{ "server name": "mcp-catie-proxy", "command": "./mcp-catie", "args": [ "--config", "router_config.yaml", "--port", ":80" ], "comment": "MCP Catie 代理服务器启动配置,需要指定配置文件路径和监听端口。" }
参数注释:
- 'server name': 服务器名称,可以自定义,用于在 MCP 客户端中标识服务器。
- 'command': 启动 MCP Catie 代理服务器的可执行文件路径。 如果使用 Docker 部署,并且 MCP 客户端直接与 Docker 容器通信,则此命令可能不直接使用,而是通过 Docker 服务地址访问。
- 'args': 传递给 MCP Catie 代理服务器的命令行参数:
- '--config router_config.yaml': 指定路由配置文件的路径。请确保 'router_config.yaml' 文件与可执行文件在同一目录下,或者提供正确的绝对路径。
- '--port :80': 指定代理服务器监听的端口为 80 端口。您可以根据需要更改端口,例如 ':8080'。
配置文件 (router_config.yaml) 示例:
resources: "^weather/.*": "http://weather-service:8080/mcp" # 匹配以 "weather/" 开头的资源 URI,路由到 weather-service "^database/.*": "http://database-service:8080/mcp" # 匹配以 "database/" 开头的资源 URI,路由到 database-service tools: "^calculator$": "http://calculator-service:8080/mcp" # 匹配工具名称 "calculator",路由到 calculator-service "^translator$": "http://translator-service:8080/mcp" # 匹配工具名称 "translator",路由到 translator-service default: "http://default-service:8080/mcp" # 默认后端服务地址,当请求不匹配任何资源或工具规则时使用 ui: username: "admin" # 监控 UI 用户名 password: "your_secure_password" # 监控 UI 密码,请修改为安全的密码
请根据您的后端 MCP 服务器地址和路由需求,修改 'router_config.yaml' 文件。
基本使用方法
-
启动 MCP Catie 代理服务器:
- 源码构建方式: 运行编译生成的可执行文件 './mcp-catie'。
- Docker 方式: 运行 Docker 容器,并将配置文件夹挂载到容器内:
docker run -d -p 80:80 -v $(pwd)/router_config.yaml:/root/router_config.yaml mcp-catie
-
配置 MCP 客户端:
- 将 MCP 客户端配置为连接到 MCP Catie 代理服务器的地址和端口 (例如:'http://<代理服务器IP>:80/mcp')。
- MCP 客户端发送的 MCP 请求将首先到达 MCP Catie 代理服务器。
-
访问监控 UI (可选):
- 通过浏览器访问 'http://<代理服务器IP>:80/stats' 可以查看请求统计信息和路由信息。
- 使用配置文件中设置的用户名和密码进行 Basic 认证。
-
健康检查:
- 访问 'http://<代理服务器IP>:80/health' 可以进行健康检查,正常情况下返回 "OK"。
-
Prometheus 指标:
- 访问 'http://<代理服务器IP>:80/metrics' 可以获取 Prometheus 格式的监控指标数据,用于集成到 Prometheus 监控系统。
通过 MCP Catie 代理服务器,您可以实现对后端 MCP 服务的灵活路由和统一管理。
信息
分类
网页与API