MCP Gateway
MCP Gateway — MCP-шлюз для агентов
Корпоративный инструментальный шлюз для унифицированного доступа и управления несколькими MCP-серверами: верхний LLM-агент подключается только к одному входу шлюза, чтобы вызывать инструменты, предоставляемые любым количеством MCP-серверов за ним, с полным покрытием аутентификации, ограничения скорости, логирования и метрик.
Архитектура
┌─────────────────────────────┐
│ LLM Agent / 应用 │
│ (LangChain / OpenAI 等) │
└──────────────┬──────────────┘
│ 统一 REST API
┌──────────────▼──────────────┐
│ MCP Gateway (FastAPI) │
│ ┌────────────────────────┐ │
│ │ 鉴权 (API Key) │ │
│ │ 限流 (令牌桶) │ │
│ │ 日志 / 指标 (横切层) │ │
│ └───────────┬────────────┘ │
│ ┌───────────▼────────────┐ │
│ │ 工具注册中心 registry │ │
│ │ (聚合所有 server 工具) │ │
│ └───────────┬────────────┘ │
│ ┌───────────▼────────────┐ │
│ │ MCP 客户端 (多传输) │ │
│ └────────────────────────┘ │
└───────┬───────────┬───────────┘
stdio ──┤ ├── Streamable HTTP / SSE
┌──────────────▼──┐ ┌────▼───────────────┐
│ MCP Server #1 │ │ MCP Server #2 ... │
│ (demo_sql_server)│ │ (数据库/内部API等) │
└─────────────────┘ └─────────────────────┘Related MCP server: Peta Core
Технологический стек
Python 3.12 · FastAPI · Официальный SDK MCP (stdio / SSE / Streamable HTTP) · pydantic-settings + YAML · structlog · Prometheus · SQLite (абстракция уровня интерфейса, можно заменить на PostgreSQL) · pytest · Docker · GitHub Actions · uv
Быстрый старт
uv sync # 安装依赖(自动准备 Python 3.12)
uv run uvicorn app.main:app --reload # 启动开发服务器
uv run pytest # 运行测试
uv run ruff check . # lint
docker compose up --build # 一键启动После запуска перейдите по адресам:
GET /health— проверка здоровьяGET /metrics— метрики Prometheus (включая количество/время вызовов инструментов:mcp_gateway_tool_calls_total,mcp_gateway_tool_call_duration_seconds)GET /docs— интерактивная документация OpenAPI
Пример вызова (демонстрационный ключ см. в разделе auth файла config/gateway.yaml):
curl -H "X-API-Key: dev-key-please-change" http://localhost:8000/tools
curl -X POST http://localhost:8000/tools/demo_sql__ask/call \
-H "X-API-Key: dev-key-please-change" -H "Content-Type: application/json" \
-d '{"arguments": {"question": "有多少客户?"}}'Встроенная мини-база данных электронной коммерции (customers / products / orders) в demo_sql_server предоставляет 4 инструмента:
ask (запрос на китайском → автоматическая генерация и выполнение SQL только для чтения), run_sql (прямое выполнение SQL только для чтения),
list_tables (структура таблиц), echo (отладка цепочки). NL2SQL — это шаблонный движок правил,
работающий офлайн без зависимостей, интерфейс отделён от реализации LLM, возможна плавная замена.
Конфигурация
config/gateway.yaml (приоритет: значения по умолчанию в коде < YAML < переменные окружения GATEWAY_*):
gateway:
port: 8000
log_level: INFO
auth: # API Key 鉴权(SQLite 存储,启动种子写入)
db_path: data/gateway.db
api_keys:
- { key: dev-key-please-change, name: demo, rate_limit_per_minute: 60 }
servers: # MCP Server 声明式接入,无需改代码
- name: demo_sql
transport: stdio # stdio / sse / http
command: python
args: ["servers/demo_sql_server/server.py"]Docker Compose использует config/gateway.docker.yaml: demo_sql запускается как отдельный контейнер с
Streamable HTTP, шлюз подключается через http://demo_sql:9001/mcp.
Структура проекта
app/
├── main.py # FastAPI 入口
├── config.py # 配置中心(pydantic-settings + YAML)
├── core/ # 横切层:security / rate_limit / logging / metrics
├── mcp/ # 协议层:registry / client / transports / schemas
├── api/ # 接口层:deps.py + routes/
└── schemas/ # Pydantic 模型
servers/demo_sql_server/ # 示例 MCP Server(自然语言→SQL,阶段 2/4)
examples/ # LLM Agent 调用示例(阶段 5)
tests/ # 单元测试План разработки
Этап 1: каркас проекта + CI (/health, /metrics, центр конфигурации, структурированное логирование)
Этап 2: протокольный уровень (три транспортных клиента: stdio/SSE/HTTP + центр регистрации инструментов + демо-сервер)
Этап 3: единый API (GET /tools, POST /tools/{name}/call) + аутентификация по API-ключу + ограничение скорости через bucket токенов
Этап 4: метрики вызовов инструментов + обновление demo_sql_server до NL2SQL + docker-compose с двумя контейнерами (публичное развёртывание и демонстрационная запись экрана будут добавлены позже)
Этап 5: пример вызова агента + продвижение с открытым исходным кодом
Пути корпоративного расширения
Мультитенантность + RBAC · Маршрутизация моделей (аналог One-API) · Аудит и соответствие · Автомасштабирование в K8s · Трассировка OpenTelemetry · Автоматическое отключение / кэширование
This server cannot be deployed
Maintenance
Related MCP Connectors
- gatewayOAuthai.sealgate
MCP gateway with runtime security policy, tool-call-level control, and audit of agent actions.
Managed MCP gateway with OAuth, per-agent permissions, shared accounts and activity logs.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
- MeandrOAuthcom.meandr
MCP gateway and cloud hosting for MCP servers, agents and apps like RAG, managed from your agent.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA production-ready unified entry point for AI agents that implements the Model Context Protocol (MCP). It provides a secure gateway with rate limiting, authentication, and observability for managing and proxying requests to multiple downstream APIs.MIT
- FlicenseNot gradedqualityAmaintenanceA production-ready MCP gateway and control plane that provides credential vault, policy engine, audit logging, and managed runtime for routing tool calls between AI agents and downstream MCP servers.59-
- FlicenseNot gradedqualityBmaintenanceSingle gateway that aggregates dozens of upstream MCP servers, enabling AI clients to connect once and access all tools.-
- AlicenseNot gradedqualityCmaintenanceA unified MCP gateway that aggregates multiple MCP servers and API plugins behind a single endpoint with authentication, rate limiting, audit logging, REST API bridge, and web dashboard.8MIT