Skip to main content
Glama
NightR71

MCP Gateway

by NightR71

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 · Автоматическое отключение / кэширование

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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
  • F
    license
    Not graded
    quality
    A
    maintenance
    A 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
    -

Appeared in Searches