Open Multiple Model MCP Client: 多源MCP服务器代理网关
本项目作为一个代理(Gateway),连接大型语言模型(LLM)如Anthropic Claude,使其能够统一调用来自不同Model Context Protocol (MCP) 服务器提供的工具和服务。它本身不直接托管工具资源,而是作为中间层,管理多个下游MCP服务器,并将它们的工具能力暴露给LLM客户端。
主要功能点
- 连接多个MCP服务器: 可以同时连接并管理多个不同的MCP服务器。
- 支持多种连接类型: 支持通过标准输入输出(Stdio)或SSE(Server-Sent Events)方式连接MCP服务器。
- 动态工具管理: 可以在运行时启用或禁用连接的MCP服务器及其提供的工具。
- 提供统一API: 对LLM客户端暴露一个统一的接口(通过FastAPI),LLM可以通过这个接口发现并调用所有已连接MCP服务器的工具。
- 简化LLM交互: 提供一个简化的聊天接口,LLM通过此接口进行对话并调用工具,本项目负责与下游MCP服务器的通信。
安装步骤
- 克隆项目仓库到本地。
- 进入项目目录。
- 创建并激活Python虚拟环境(推荐)。
python -m venv venv # Linux/macOS source venv/bin/activate # Windows venv\Scripts\activate - 安装项目依赖。
uv sync - 复制示例环境变量文件。
cp .env-example .env - 编辑 '.env' 文件,填写你的Anthropic API Key(或OpenAI等其他LLM平台密钥,取决于你配置和使用的模型)。
服务器配置
本项目通过读取 'mcp_servers.json' 文件来配置需要连接的下游MCP服务器。你可以根据实际情况修改此文件。
'mcp_servers.json' 文件是一个JSON对象,其中包含一个名为 'mcpServers' 的字段,该字段是一个字典,键是服务器的逻辑名称(你自己定义,如"time", "remote_server"),值是该服务器的配置信息。
每个服务器配置信息是一个JSON对象,至少需要包含以下两种连接方式之一的配置:
- Stdio 连接方式: 用于启动一个本地MCP服务器进程。需要包含:
- '"command"': 字符串,要执行的服务器启动命令(例如 '"docker"')。
- '"args"': 字符串数组,启动命令的参数列表(例如 '["run", "-i", "--rm", "mcp/time"]')。
- 可选的 '"env"': JSON对象,为子进程设置环境变量。
- SSE 连接方式: 用于连接一个已经运行的远程MCP服务器。需要包含:
- '"url"': 字符串,远程MCP服务器的SSE endpoint URL(例如 '"https://your-remote-mcp-server.com/mcp/sse"')。
示例配置结构说明(不是实际代码,用于理解):
{ "mcpServers": { "服务器名称1": { "command": "你的服务器启动命令", "args": ["命令", "参数"] // 可选的 "env": { "KEY": "VALUE" } }, "服务器名称2": { "url": "远程服务器的SSE地址" } // 可以添加更多服务器配置... } }
请根据你要连接的实际MCP服务器类型(本地进程Stdio或远程SSE)填写相应的 'command'/'args' 或 'url'。
基本使用方法
- 启动本项目服务器:
服务器默认运行在 'http://localhost:3333'。python main.py - 通过'/chat_stream'接口与LLM及连接的工具进行交互。这是一个流式API,可以使用curl等工具进行测试:
你也可以使用GET请求:curl -X POST "http://localhost:3333/chat_stream" \ -H "Content-Type: application/json" \ -d '{"message": "请问现在几点?"}'
你还可以在请求中指定LLM平台和模型(如果你的'.env'配置了相应API Key):curl "http://localhost:3333/chat_stream?message=请问现在几点?"
服务器将返回LLM的回复,其中可能包含工具调用的结果。curl "http://localhost:3333/chat_stream?message=用OpenAI的gpt-4告诉我明天的天气&platform=openai&model=gpt-4"
信息
分类
AI与计算