项目简介

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 和指标端点提供基础认证保护。

安装步骤

  1. 环境准备

    • 确保已安装 Go 1.18 或更高版本。
    • 可选:安装 Docker 以进行容器化部署。
  2. 从源码构建 (可选)

    • 克隆仓库到本地:
      git clone https://github.com/mclenhard/catie-mcp.git
      cd catie-mcp
    • 构建可执行文件:
      go build -o mcp-catie ./cmd/main.go
  3. 使用 Docker (推荐)

    • 构建 Docker 镜像:
      docker build -t mcp-catie .

服务器配置

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' 文件。

基本使用方法

  1. 启动 MCP Catie 代理服务器

    • 源码构建方式: 运行编译生成的可执行文件 './mcp-catie'。
    • Docker 方式: 运行 Docker 容器,并将配置文件夹挂载到容器内:
      docker run -d -p 80:80 -v $(pwd)/router_config.yaml:/root/router_config.yaml mcp-catie
  2. 配置 MCP 客户端

    • 将 MCP 客户端配置为连接到 MCP Catie 代理服务器的地址和端口 (例如:'http://<代理服务器IP>:80/mcp')。
    • MCP 客户端发送的 MCP 请求将首先到达 MCP Catie 代理服务器。
  3. 访问监控 UI (可选)

    • 通过浏览器访问 'http://<代理服务器IP>:80/stats' 可以查看请求统计信息和路由信息。
    • 使用配置文件中设置的用户名和密码进行 Basic 认证。
  4. 健康检查

    • 访问 'http://<代理服务器IP>:80/health' 可以进行健康检查,正常情况下返回 "OK"。
  5. Prometheus 指标

    • 访问 'http://<代理服务器IP>:80/metrics' 可以获取 Prometheus 格式的监控指标数据,用于集成到 Prometheus 监控系统。

通过 MCP Catie 代理服务器,您可以实现对后端 MCP 服务的灵活路由和统一管理。

信息

分类

网页与API