MCP网关服务

企业级Kubernetes原生平台,用于动态配置、管理和自动扩展隔离的MCP服务器实例,作为多租户SaaS服务。

  • by NetLops
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 NetLops/mcp-gateway

使用说明

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 获取指南(如有)。

有关文档,请参阅 文档 目录。