使用说明
MCP网关
企业级Kubernetes原生平台,用于动态配置、管理和自动扩展隔离的MCP(模型上下文协议)服务器实例,作为多租户SaaS服务。
📚 文档
所有文件均已整理成 文档 目录:
架构概述
MCP服务器网关实现了 控制平面/数据平面 架构:
-
控制平面:管理租户身份验证、API资源调配和MCP服务器的生命周期
mcp-gateway-api:用于租户交互的REST API服务mcp-gateway-operator:Kubernetes Operator实现协调逻辑
-
数据平面:在专用命名空间中运行的隔离MCP服务器实例
- 命名空间/实例隔离模型
- 基于KEDA的自动缩放,具有缩放到零的功能
- 租户隔离的网络策略实施
主要特点
- ✅ 多租户隔离:每个MCP服务器实例都在专用的Kubernetes命名空间中运行
- ✅ 动态配置:通过REST API按需创建MCP服务器实例
- ✅ 缩放到零:基于KEDA的自动缩放降低了空闲实例的成本
- ✅ 安全第一:网络策略、资源配额和RBAC实施
- ✅ HTTP传输:所有MCP服务器都使用流式HTTP传输进行远程访问
- ✅ Kubernetes原生:使用带有自定义资源定义的运算符模式构建
先决条件
- Kubernetes集群(v1.24+)
- kubectl已配置
- 已安装KEDA(v2.12+)
- 入口控制器(nginx、traefik或类似)
- 转到1.21+(用于建筑)
- Docker或Podman(用于容器映像)
快速开始
使用统一Makefile(推荐)
# Local development setup
make quick-start
make run-operator # Terminal 1
make run-api # Terminal 2
# Or deploy to cluster
make build-all REGISTRY=your-registry.com/org VERSION=v1.0.0
make push-all REGISTRY=your-registry.com/org VERSION=v1.0.0
make deploy-all REGISTRY=your-registry.com/org VERSION=v1.0.0
# See all available commands
make help
📖 看 MAKEFILE_GUIDE.md 获取完整的文档
手动设置
1.安装KEDA
kubectl apply -f https://github.com/kedacore/keda/releases/download/v2.12.0/keda-2.12.0.yaml
2.部署操作员
# Build and deploy the operator
cd mcp-gateway-operator
make docker-build docker-push IMG=your-registry/mcp-gateway-operator:latest
make deploy IMG=your-registry/mcp-gateway-operator:latest
3.部署网关API
# Build and deploy the API service
cd mcp-gateway-api
make docker-build docker-push IMG=your-registry/mcp-gateway-api:latest
kubectl apply -f config/deployment.yaml
4.创建MCP服务器实例
# Using the REST API
curl -X POST https://api.mcp.netlops.ai/api/v1/gateway/servers \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"serverType": "kubectl",
"minReplicas": 0,
"maxReplicas": 5,
"instanceName": "my-kubectl-tools"
}'
目录结构
.
├── mcp-gateway-operator/ # Kubernetes Operator (Go)
├── mcp-gateway-api/ # Control Plane REST API (Go)
├── dockerfiles/ # MCP server container images
├── deploy/ # Kubernetes manifests
├── scripts/ # Utility scripts
└── docs/ # Documentation
发展
带种类的本地测试
# Create a local cluster
./scripts/setup-cluster.sh
# Build all images
./scripts/build-images.sh
# Deploy the complete system
./scripts/deploy-all.sh
运行测试
# Operator tests
cd mcp-gateway-operator
make test
# API tests
cd mcp-gateway-api
go test ./...
API 参考
配置服务器
POST /api/v1/gateway/servers
Authorization: Bearer <token>
Content-Type: application/json
{
"serverType": "kubectl",
"minReplicas": 0,
"maxReplicas": 5,
"instanceName": "my-instance"
}
获取服务器状态
GET /api/v1/gateway/servers/{name}
Authorization: Bearer <token>
删除服务器
DELETE /api/v1/gateway/servers/{name}
Authorization: Bearer <token>
列出可用的服务器类型
GET /api/v1/gateway/types
Authorization: Bearer <token>
安全
- 命名空间隔离:每个实例都在专用命名空间中运行
- 网络政策:默认情况下,使用明确的入口规则拒绝所有
- 资源配额:每个实例的CPU和内存限制
- 基于角色的访问控制:每个服务帐户的最低权限
- 传输层安全:所有通过HTTPS进行的外部通信
许可证
Apache许可证2.0
贡献
看 贡献.md 获取指南(如有)。
有关文档,请参阅 文档 目录。
