在人工智能快速发展的今天,大型语言模型 (LLM) 已成为提升工作效率的重要工具。随着 MCP(Model Context Protocol)的出现,我们有了一种标准化的方式来与 AI 模型交互。然而,当需要同时使用多个 MCP 资源服务器时,管理和使用这些服务不仅变得复杂,安全问题也越发严重。MCP Proxy正是为解决这一问题而生,它可以聚合多个 MCP 资源服务器,并通过单一 HTTP 服务器提供服务,同时加强安全管控。
MCP 协议简介
在了解 MCP Proxy 之前,我们先简要了解一下 MCP 协议。MCP(Model Context Protocol)是一种为大型语言模型设计的开放协议,旨在标准化 AI 模型的访问方式。它允许开发者以统一的方式与不同的 AI 模型交互,无论这些模型来自哪个提供商,从而简化了应用开发过程。
MCP 协议的核心是提供一套标准化的 API,使开发者能够发送请求到支持 MCP 的服务器,并接收模型生成的回应。这种标准化对于构建复杂的 AI 应用系统尤为重要。
MCP 兼容性说明
在使用 MCP 时,需要注意系统环境对相关包管理工具的依赖:
1. NPX 依赖:当配置使用npx命令作为 MCP 客户端时(如fetch-mcp),系统需要安装 Node.js 环境并确保 NPM 可用。这是因为 MCP Proxy 会调用系统的 npx 命令来执行相关 MCP 插件。
2. UVX 依赖:如果配置使用了uvx作为包管理工具,需要在系统中预先安装uv工具。uv 是一个更快的 Python 包管理器和解释器,在使用 Python 实现的 MCP 插件时可以提供更好的性能。
3. 客户端环境要求:
• 对于基于 Node.js 的 MCP 插件:确保安装了 Node.js 环境(建议 v16+)
• 对于基于 Python 的 MCP 插件:需要安装 Python 环境(建议 3.8+)
• 对于提供 Docker 镜像的 MCP 插件:客户端需要安装 Docker 环境
• 对于其他语言实现的 MCP 客户端:需要安装相应的运行环境
PIG AI新版来袭:一站式Java AI解决方案,六大能力全面升级!
MCP 安全性问题
虽然 MCP 协议为 AI 模型交互提供了标准化方式,但它也带来了一些安全性挑战,MCP 客户端可能存在以下安全风险:
- 1. 代码执行风险:MCP 客户端通常需要执行外部命令,这可能导致任意代码执行的风险。例如,使用npx或 uv 其他命令行工具时,如果没有适当的沙箱限制,可能会执行恶意代码。
- 2. 权限提升:没有适当限制的 MCP 客户端可能访问系统敏感资源,如文件系统、网络接口或环境变量。
- 3. 资源耗尽:恶意或错误配置的 MCP 客户端可能消耗过多系统资源,导致服务降级或拒绝服务。
- 4. 数据泄露:如果 MCP 客户端处理敏感数据但缺乏适当的隔离措施,可能导致数据泄露。
MCP Proxy 的主要特性
1745513399
MCP Proxy 是一个强大的代理服务器,具有以下核心特性:
• 代理多个 MCP 客户端:连接到多个 MCP 资源服务器,并聚合它们的工具和功能
• SSE 支持:提供 SSE(Server-Sent Events)服务器,实现实时更新
• 灵活配置:支持多种客户端类型(stdio、sse或streamable-http),并可自定义设置
安全性考量
在使用 MCP Proxy 时,安全性是一个重要考量因素。该工具提供了多层安全保障:
1. 身份验证:通过authTokens配置项,可以设置身份验证令牌,确保只有授权用户才能访问服务
2. 服务隔离:对每个 MCP 服务器可以单独配置安全选项,实现精细化的权限控制
3. 日志记录:通过启用logEnabled选项,可以记录客户端请求,便于安全审计和问题排查
兼容性与集成
MCP Proxy 的一大优势是其出色的兼容性,支持多种类型的 MCP 客户端:
• 命令行工具(stdio):可通过子进程运行的命令行工具,如使用npx -y fetch-mcp等
• SSE 服务器:支持 Server-Sent Events 的服务器
• HTTP 流式服务器:支持 HTTP 流式传输的服务器
这种灵活性使得 MCP Proxy 能够与各种现有系统无缝集成,无论是自定义开发的 MCP 服务器还是第三方提供的服务。
快速部署
复制docker run -d -p 9090:9090 -v /Users/lengleng/Downloads/mcp-proxy/config.json:/config/config.json ghcr.io/tbxark/mcp-proxy:latest
Docker 镜像默认支持两种 MCP 调用方法:npx和uvx,使得部署过程更加简单。
配置详解
MCP Proxy 通过 JSON 文件进行配置,包含两个主要部分:
1. mcpProxy:代理 HTTP 服务器配置
• baseURL:服务器的公共可访问 URL
• addr:服务器监听的地址
• name和version:服务器的名称和版本
• options:默认选项配置
2. mcpServers:MCP 服务器配置
• 可配置多种类型的 MCP 客户端,如 stdio、sse 或 streamable-http
• 每个客户端可以有独立的安全配置
以下是一个配置示例,以百度地图 MCP 为例
复制{ "mcpProxy":{ "baseURL":"http://localhost:9090", "addr":":9090", "name":"MCP Proxy", "version":"1.0.0", "options":{ "panicIfInvalid":false, "logEnabled":false } }, "mcpServers":{ "map":{ "command":"npx", "args":[ "-y", "@baidumap/mcp-server-baidu-map" ], "env":{ "BAIDU_MAP_API_KEY":"XXX" }, "options":{ "panicIfInvalid":true, "logEnabled":true } } } }
支持 MCP 的客户端配置 SSE 模式,直接对接 mcp proxy 的代理端点,实现mcp 的安全性调用
1745516190
进阶配置
- 1. 服务器将启动并聚合所有已配置的 MCP 客户端的工具和功能
- 2. 可以通过 http(s)://{baseURL}/{clientName}/sse 访问服务器(例如,根据示例配置,访问 https://my-mcp.example.com/map/sse)
- 3. 如果 MCP 客户端不支持自定义请求头,以将 clients 中的键(如 map)更改为 map/{apiKey},然后通过 map/{apiKey} 进行访问
总结
MCP Proxy 通过聚合多个 MCP 资源服务器,简化了与多个 AI 模型的交互过程。它不仅提供了灵活的配置选项,还确保了安全性和兼容性,是构建复杂 AI 应用的理想工具。无论是个人开发者还是企业用户,都可以通过 MCP Proxy 更高效地利用多种 AI 模型的能力。