在构建多模型、多协议、可控可信的大模型接入平台时,MCP-Proxy 扮演着关键中枢。它不仅要支持多个 LLM 接入,还要保障对后端 MCP Server 的安全访问、请求审计、能力切换与资源隔离。
什么是 MCP / MCP-Proxy?
-
MCP(Model Capability Protocol) 是新一代模型能力调用协议,类似于 OpenAI 的 API,但可支持:
-
多厂商大模型(OpenAI、DeepSeek、Yi、ChatGLM…)
-
多模态统一接口(文本、图像、音频)
-
权限、安全、审计、扩展能力
-
-
MCP-Proxy 是 MCP 接入链路中的“网关代理”,作用相当于:
-
统一多模型 API 接入点
-
请求路由、权限校验、限流与 token 管理
-
安全访问 MCP Server,隐藏后端实现
-
架构概览
Client
↓
[🛡️ MCP-Proxy]
├── 🔀 LLM 路由控制(基于模型名 / tag / tenant)
├── 🔒 Token 校验 & 鉴权
├── 📊 审计日志 / QPS 监控
↓
[MCP Server群(多厂商LLM能力池)]
├── OpenAI
├── DeepSeek
├── Yi / Baichuan
MCP-Proxy 的关键能力
1. 多模型 & 多 MCP Server 路由支持
支持配置如下模式:
routes:
/v1/chat/completions:
model: gpt-4
backend: mcp-openai
/v1/chat/completions:
model: deepseek-coder
backend: mcp-deepseek
/v1/image/generate:
model: qwen-vl
backend: mcp-alibaba
路由规则支持:
-
模型名称 (
model
) -
租户(Tenant)维度隔离
-
请求来源(如 IP / API Key)
2. Token 安全与权限控制
可内置以下机制:
-
API Key 校验(基于 Redis / JWT)
-
权限列表控制(是否允许调用某个模型)
-
单模型 Token 访问量限制
-
访问频次限流(按租户 / 用户维度)
3. 多租户 & 资源隔离
MCP-Proxy 可作为统一的多租户大模型接入层:
-
每个租户有独立的模型访问配置
-
Token / Token Bucket 隔离
-
支持租户自定义 Prompt 模板 / 审计日志隔离
4. 统一请求格式 & 异构模型兼容
通过 Proxy,开发者始终使用统一的 OpenAI
风格请求格式:
POST /v1/chat/completions
{
"model": "gpt-4",
"messages": [{ "role": "user", "content": "你好" }]
}
后端 MCP-Proxy 会根据模型适配不同协议(OpenAI、Qwen、DeepSeek…)。
5. 安全通信与服务可靠性
-
支持 TLS / HTTPS / 证书双向验证
-
后端调用 MCP Server 时支持多重重试与健康检查
-
可插入安全网关(WAF)或接入堡垒机
MCP-Proxy 路由配置模板(YAML)
以下是一个完整的 MCP-Proxy 路由配置模板(YAML 格式),支持多 LLM、按租户隔离、基于模型名称路由、权限控制、token 限流等,适用于私有部署或多租户 SaaS 平台场景。
# ========================
# MCP-Proxy 路由配置文件
# ========================
# 通用设置
server:
host: 0.0.0.0
port: 8080
tls:
enabled: true
cert_file: /etc/mcp-proxy/cert.pem
key_file: /etc/mcp-proxy/key.pem
# 日志设置
logging:
level: INFO
access_log: true
audit_log: true
log_path: /var/log/mcp-proxy.log
# 鉴权机制
auth:
strategy: api_key # 支持: api_key, jwt, none
api_keys:
- key: abc123
tenant: tenant_a
allow_models: [gpt-4, deepseek-chat]
quota: 1000000 # 每日 token 限额
- key: def456
tenant: tenant_b
allow_models: [yi-34b, qwen-vl]
quota: 500000
# 路由规则(按模型名称)
routes:
gpt-4:
backend: openai
endpoint: https://api.openai.com/v1/chat/completions
auth_header: Authorization
auth_prefix: Bearer
timeout: 60
retries: 2
deepseek-chat:
backend: deepseek
endpoint: https://api.deepseek.com/chat/completions
auth_header: X-API-Key
auth_value: ${DEEPSEEK_API_KEY}
yi-34b:
backend: internal
endpoint: http://internal-mcp.yourcorp.local/v1/chat/completions
token_injection:
location: body
key: access_token
value: ${YI_INTERNAL_TOKEN}
qwen-vl:
backend: aliyun
endpoint: https://dashscope.aliyuncs.com/api/v1/multimodal/completion
content_type: application/json
model_alias: qwen-vl-plus
auth_header: Authorization
auth_value: Bearer ${QWEN_TOKEN}
# 租户隔离设置
tenants:
tenant_a:
prefix_prompt: |
你是一位礼貌的 AI 助手,请用中文简洁回复用户提问。
model_access:
- gpt-4
- deepseek-chat
rate_limit:
rpm: 60 # 每分钟请求数
tpm: 10000 # 每分钟 token 数
tenant_b:
prefix_prompt: |
请用专业语气解答金融投资相关的问题。
model_access:
- yi-34b
- qwen-vl
rate_limit:
rpm: 30
tpm: 5000
# 审计日志设置(可选)
audit:
enabled: true
redact_input: true # 是否脱敏用户输入
redact_output: false
sink: file # 支持 file/kafka/es
file_path: /var/log/mcp-audit.json
支持特性说明
特性 | 说明 |
---|---|
auth.strategy | API Key 或 JWT 认证方式 |
routes | 每个模型对应后端 MCP Server |
model_alias | 可重命名下游模型(如避免直接暴露真实 ID) |
tenant.prefix_prompt | 可为每个租户自动注入系统 Prompt |
rate_limit | 可单独控制 RPM(请求数)与 TPM(token 数) |
audit | 开启后可记录所有请求内容,用于追溯与分析 |
补充建议
-
支持
.env
或 Vault 方式注入${}
环境变量; -
可配合 Redis 做 token 计数器(QPS & Token 限流);
-
若为多实例部署,建议加上 API 请求签名机制防重放;
-
建议结合 OpenAPI schema 自动生成 SDK 接口文档。
MCP-Proxy 的部署与实现建议
模块 | 技术建议 |
---|---|
网络代理框架 | FastAPI / go-chi / Nginx + Lua |
身份认证 & Token | Redis + JWT / OAuth2 |
日志 & 监控 | Prometheus + Loki / ELK |
配置中心 | Etcd / Consul / Spring Cloud |
审计日志 | Kafka / ClickHouse / S3 |
后端连接池 | Async HTTP Client(支持重试) |
MCP-Proxy 私有部署文件结构建议
下面是一个完整的 MCP-Proxy 私有部署 Dockerfile + 运行脚本 示例,支持挂载配置文件、安全密钥、日志目录等,适合在本地开发或企业服务器中快速部署。
mcp-proxy/
├── Dockerfile
├── docker-compose.yml
├── entrypoint.sh
├── config/
│ └── mcp-proxy.yaml # 路由配置文件
├── certs/
│ ├── cert.pem # TLS 证书
│ └── key.pem
├── logs/
└── .env # 环境变量(API Key、Token)
Dockerfile
FROM python:3.10-slim
LABEL maintainer="your-team@example.com"
WORKDIR /app
# 安装系统依赖
RUN apt-get update && apt-get install -y curl gcc libffi-dev libssl-dev && rm -rf /var/lib/apt/lists/*
# 拷贝代码与配置
COPY . /app
# 安装 Python 依赖
RUN pip install --no-cache-dir -r requirements.txt
# 设置环境变量(由 .env 配置)
ENV PYTHONUNBUFFERED=1
# 启动脚本
ENTRYPOINT ["./entrypoint.sh"]
requirements.txt(建议示例)
fastapi
uvicorn[standard]
pyyaml
httpx
python-dotenv
entrypoint.sh(启动 MCP-Proxy)
#!/bin/bash
set -e
echo "Starting MCP-Proxy..."
# 加载环境变量
if [ -f .env ]; then
export $(grep -v '^#' .env | xargs)
fi
# 启动服务
uvicorn app.main:app \
--host 0.0.0.0 \
--port 8080 \
--proxy-headers \
--ssl-keyfile ./certs/key.pem \
--ssl-certfile ./certs/cert.pem
确保
app.main:app
是你项目中 FastAPI 的入口点(通常是main.py
中定义的app
)。
docker-compose.yml(推荐部署方式)
version: "3.8"
services:
mcp-proxy:
build: .
container_name: mcp-proxy
restart: always
ports:
- "443:8080"
volumes:
- ./config:/app/config
- ./certs:/app/certs
- ./logs:/app/logs
- ./.env:/app/.env
environment:
- MCP_CONFIG_FILE=/app/config/mcp-proxy.yaml
启动 & 验证
# 构建镜像
docker-compose build
# 启动服务
docker-compose up -d
# 测试是否成功
curl -k -X POST https://localhost/v1/chat/completions \
-H "Authorization: Bearer abc123" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4",
"messages": [{"role": "user", "content": "你好"}]
}'
安全与部署建议
项目 | 建议 |
---|---|
TLS | 使用真实域名 + Let's Encrypt 证书 |
环境变量管理 | 使用 .env 或 Vault 加密存储 |
日志持久化 | logs 挂载至主机 / 日志系统(如 ELK) |
多实例部署 | 支持负载均衡(Nginx / Traefik) |
健康检查 | 可暴露 /health 接口供监控系统调用 |
场景应用示例
场景1:接入 DeepSeek + OpenAI + Yi
models:
gpt-4:
backend: mcp-openai
auth: api_key_only
quota: 1,000,000 tokens/day
deepseek-chat:
backend: mcp-deepseek
region: cn-shenzhen
yi-34b:
backend: mcp-internal
access: tenant_abc_only
场景2:安全接入内网私有化模型
-
MCP-Proxy 设置为 DMZ 内边界层
-
后端 MCP Server 仅允许内网访问
-
使用签名令牌访问内部 API,避免泄露 Token
拓展能力:Prompt 注入与审计闭环
MCP-Proxy 可支持:
-
根据租户 ID 自动注入前缀 Prompt
-
对所有对话内容进行落库审计(可打脱敏)
-
每个模型调用情况形成成本统计报表
MCP-Proxy 的隐藏秘密(亮点)
功能点 | 技术亮点 |
---|---|
模型统一接入 | 隐藏后端异构模型差异,统一接口调用体验 |
多租户隔离 | 租户维度限流 / Prompt 注入 / 日志隔离 |
动态路由 | 请求动态分发至最优模型,提高性价比和容灾能力 |
审计与报表 | 全链路日志记录、可计费的 Token 用量分析支持 |
插件式模型扩展 | 新模型接入无需修改主流程,仅配置路由与凭证 |
安全访问内部 MCP Server | 支持双向认证、IP 白名单、WAF 插入、防越权 |
总结
MCP-Proxy 是连接开发者与模型世界的“安全高速公路”。在企业 LLM 基础设施建设中,它是:
多模型接入控制中心
安全边界守护者
日志审计与计费基础
支持灵活路由和模型策略调度的智能代理