使用说明
MCP网关服务器
一个生产就绪的模型上下文协议(MCP)网关和路由器,具有身份验证、负载平衡和Terraform部署配置。
特性
- 网关和路由器:智能请求路由到多个MCP服务器
- 身份验证和授权:基于JWT的授权,支持API密钥
- 负载平衡:多种策略(循环、最少连接、加权、随机)
- 高可用性:Redis支持的会话,自动故障转移
- 与OpenAI兼容的API:OpenAI API端点的插入式替换
- 监控:普罗米修斯指标和Grafana仪表板
- 基础设施即代码:完成AWS部署的Terraform配置
- Docker支持:使用docker compose实现完全容器化
建筑
┌─────────────┐ ┌──────────────┐ ┌────────────┐
│ Clients │────▶│ MCP Gateway │────▶│ MCP Servers│
└─────────────┘ └──────────────┘ └────────────┘
│
┌───────┴────────┐
│ │
┌───▼───┐ ┌────▼────┐
│ Redis │ │Postgres │
└───────┘ └─────────┘
快速开始
地方发展
- 克隆存储库:
cd mcp-gateway
- 安装依赖项:
npm install
- 使用Docker Compose启动服务:
docker-compose up -d
- 创建环境配置:
cp .env.example .env
# Adjust environment variables as needed
- 运行网关:
npm run dev
网关将在 http://localhost:3000
API终点
LLM接口(兼容OpenAI)
POST /api/v1/chat/completions-聊天完成POST /api/v1/tools/execute-执行工具GET /api/v1/tools-列出可用工具GET /api/v1/models-列出可用型号
管理界面
GET /api/admin/servers-列出服务器POST /api/admin/servers-添加服务器DELETE /api/admin/servers/:id-删除服务器GET /api/admin/routes-列出路线POST /api/admin/routes-添加路线DELETE /api/admin/routes/:id-删除路线POST /api/admin/users-创建用户POST /api/admin/users/:id/api-key-生成API密钥
监控
GET /health-健康检查GET /metrics-普罗米修斯指标
认证
API密钥验证
在请求头中包含API密钥:
curl -H "x-api-key: mcp_your_api_key_here" http://localhost:3000/api/v1/models
JWT身份验证
对于管理员端点,使用Bearer令牌:
curl -H "Authorization: Bearer your_jwt_token" http://localhost:3000/api/admin/servers
客户示例
JavaScript/Node.js
const { MCPGatewayClient } = require('./examples/client');
const client = new MCPGatewayClient('http://localhost:3000', 'mcp_your_api_key');
// Chat completion
const response = await client.chatCompletion([
{ role: 'user', content: 'Hello!' }
]);
python
from examples.python_client import MCPGatewayClient, ChatMessage
client = MCPGatewayClient('http://localhost:3000', 'mcp_your_api_key')
# Chat completion
messages = [ChatMessage(role='user', content='Hello!')]
response = client.chat_completion(messages)
部署
AWS与Terraform
- 配置AWS凭据:
aws configure
- 初始化地形:
cd terraform
terraform init
- 创建terraform.tfvars:
aws_region = "us-east-1"
environment = "production"
jwt_secret = "your-secret-here"
admin_email = "admin@example.com"
domain_name = "mcp-gateway.example.com"
- 部署:
terraform plan
terraform apply
码头工人
使用Docker构建和运行:
docker build -t mcp-gateway .
docker run -p 3000:3000 -p 9090:9090 mcp-gateway
配置
环境变量:
PORT-服务器端口(默认值:3000)JWT_SECRET-JWT签约秘诀REDIS_HOST-Redis主机REDIS_PORT-Redis端口REDIS_PASSWORD-Redis密码DATABASE_HOST-PostgreSQL主机DATABASE_PORT-PostgreSQL端口DATABASE_NAME-数据库名称DATABASE_USER-数据库用户DATABASE_PASSWORD-数据库密码LOG_LEVEL-日志记录级别(调试、信息、警告、错误)NODE_ENV-环境(开发、生产)
负载平衡策略
- 轮询:在服务器之间均匀分配请求
- 最少连接:指向活动连接最少的服务器的路由
- 加权的:根据服务器权重进行分配
- 随机:随机选择服务器
监控
访问监控仪表板:
- 普罗米修斯:
http://localhost:9091 - 格拉法娜:
http://localhost:3001(管理员/管理员)
发展
运行测试:
npm test
棉绒编码:
npm run lint
类型检查:
npm run typecheck
安全
- 基于JWT的管理员API身份验证
- 用于客户端访问的API密钥身份验证
- 所有端点的速率限制
- CORS配置
- Helmet.js用于安全标头
- 加密Redis连接
- TLS对生产的支持
许可证
麻省理工学院
