该项目是一个Model Context Protocol (MCP) 代理服务器。它的主要作用是作为一个中心枢纽,连接到其他(后端)的MCP服务器,并将这些后端服务器提供的能力(如工具、资源、提示)聚合成一个单一的接口,然后供大型语言模型(LLM)客户端连接使用。这样,LLM客户端只需连接到这个代理服务器,就能访问所有已配置的后端MCP服务器的能力。
主要功能点
- 能力聚合: 无缝地将来自多个后端MCP服务器的工具、资源和提示整合成一个统一的服务列表,呈现给LLM客户端。
- 请求智能路由: 接收LLM客户端发来的请求(如调用工具、访问资源、获取提示),并根据请求的目标自动将其转发到正确的后端服务器。
- 细粒度工具控制: 提供通过可选的Web管理界面,对聚合的工具进行精细控制,可以方便地启用或禁用特定工具,甚至修改它们呈现给LLM客户端的名称和描述。
- Web管理界面 (可选): 提供一个直观的网页界面,用于管理代理服务器的配置、后端服务器的连接设置,以及便捷地执行和监控后台服务器的安装过程。
- 多种协议支持: 自身可以作为标准的Stdio MCP服务器或SSE MCP服务器运行,兼容不同的LLM客户端连接方式。
安装步骤
你可以选择直接安装 Node.js 版本或使用 Docker。
-
直接安装 (需要 Node.js 环境)
- 确保你的系统已安装 Node.js (推荐 LTS 版本) 和 npm 或 yarn。
- 克隆项目的 GitHub 仓库到本地。
- 进入项目目录。
- 运行依赖安装命令:'npm install' 或 'yarn install'。
- 运行构建命令:'npm run build'。这会将 TypeScript 代码编译到 'build' 目录。
-
使用 Docker (推荐)
- 确保你的系统已安装 Docker。
- 拉取项目的预构建 Docker 镜像。推荐使用最新标准镜像:'docker pull ghcr.io/ptbsare/mcp-proxy-server/mcp-proxy-server:latest'。如果你需要包含常用预装服务器和 Playwright 的镜像,可以使用:'docker pull ghcr.io/ptbsare/mcp-proxy-server/mcp-proxy-server:latest-bundled-mcpservers-playwright'。
- 创建一个本地目录用于存放代理服务器的配置文件(例如 '~/mcp-proxy-config')。
- 在该配置文件目录中,创建一个名为 'mcp_server.json' 的文件,用于定义代理要连接的后端MCP服务器(参考下面的配置示例)。你也可以可选地创建 'tool_config.json' 文件来自定义工具设置。
- 运行 Docker 容器。你需要挂载本地配置文件目录到容器内的 '/app/config',并映射端口。例如:
请替换 '/path/on/host/to/my_config' 为你本地配置文件目录的实际路径,并根据需要设置环境变量(如管理界面用户名、密码、SSE认证密钥等)。docker run -d \ -p 3663:3663 \ -e PORT=3663 \ -e ENABLE_ADMIN_UI=true \ -e ADMIN_USERNAME=myadmin \ -e ADMIN_PASSWORD=yoursupersecretpassword \ -e MCP_PROXY_SSE_ALLOWED_KEYS="clientkey1" \ -v /path/on/host/to/my_config:/app/config \ --name mcp-proxy \ ghcr.io/ptbsare/mcp-proxy-server/mcp-proxy-server:latest
服务器配置 (供 MCP 客户端连接使用)
这个代理服务器本身运行起来后,就成为一个LLM客户端可以连接的MCP服务器。你需要告诉你的MCP客户端(如 Claude Desktop, VS Code 插件等)如何连接到这个代理服务器。
MCP客户端的配置通常是一个JSON文件,其中包含一个 'mcpServers' 对象,对象里的每个键代表一个你要连接的MCP服务器实例。以下是配置这个代理服务器的示例:
-
如果代理服务器以 Stdio 模式运行: 在你的MCP客户端配置文件(例如 'claude_desktop_config.json')中添加如下条目:
{ "mcpServers": { "mcp-proxy-instance": { "name": "我的MCP代理 (Stdio)", // command:启动MCP代理服务器的命令及其路径 // 请确保这里的路径正确指向你安装/构建后的 index.js 文件 "command": "/path/to/mcp-proxy-server/build/index.js", // args:传递给MCP代理服务器启动命令的参数列表(通常不需要额外参数) "args": [], // env:为MCP代理服务器进程设置的环境变量(可选) // 例如,你可以通过 TOOLS_FOLDER 设置代理服务器用来安装后端Stdio服务器的默认目录 "env": { "NODE_ENV": "production", "TOOLS_FOLDER": "/opt/mcp_backends" } } // ... 其他你可能直接连接的MCP服务器 ... } }请将 '/path/to/mcp-proxy-server/build/index.js' 替换为你系统中该文件的实际路径。
-
如果代理服务器以 SSE 模式运行: 在你的MCP客户端配置文件中添加如下条目:
{ "mcpServers": { "mcp-proxy-sse-instance": { "name": "我的MCP代理 (SSE)", // url:MCP代理服务器的SSE接口地址 // 默认情况下,如果运行在SSE模式(如Docker或 dev:sse 脚本),端口是 3663,路径是 /sse "url": "http://localhost:3663/sse", // 如果你的MCP代理服务器配置了API Key认证 (通过 MCP_PROXY_SSE_ALLOWED_KEYS 环境变量), // 你需要在 URL 中附加 ?key=<你的客户端API_Key>,例如: // "url": "http://localhost:3663/sse?key=mysecretclientkey" // 部分客户端也可能支持单独的 apiKey 字段用于SSE认证 // "apiKey": "mysecretclientkey" // 请参考你的客户端文档 } // ... 其他你可能直接连接的MCP服务器 ... } }请将 'http://localhost:3663/sse' 替换为你实际运行的代理服务器地址和端口。
基本使用方法
- 确保你的MCP代理服务器已经在 Stdio 或 SSE 模式下成功启动。
- 根据代理服务器的运行模式,按照上面的说明配置你的LLM客户端(例如 Claude Desktop)。
- 启动你的LLM客户端。它将连接到你配置的代理服务器。
- 代理服务器会连接你在其 'config/mcp_server.json' 文件中配置的所有活跃的后端MCP服务器,并发现它们提供的所有工具、资源和提示。
- LLM客户端现在应该能够看到并使用所有这些聚合起来的能力,如同它们是由一个单一的服务器提供的一样。
- (可选)如果启用了Web管理界面,你可以通过浏览器访问 'http://localhost:你的端口/admin' (默认端口 3663) 来查看、添加、编辑和删除后端服务器配置,以及管理工具的可见性和属性。
信息
分类
AI与计算