Skip to main content
Glama
IBM

ContextForge MCP Gateway

Official
by IBM

ContextForge

Реестр и прокси с открытым исходным кодом, который объединяет API MCP, A2A и REST/gRPC с централизованным управлением, обнаружением и наблюдаемостью. Оптимизирует вызовы агентов и инструментов, а также поддерживает плагины.

Баннер ContextForge

Сборка пакета Python Безопасность Bandit Проверка зависимостей Тесты и покрытие Линтинг и статический анализ

Async Лицензия PyPI Docker Image

ContextForge — это реестр и прокси с открытым исходным кодом, который объединяет инструменты, агентов и API в одну чистую точку доступа для ваших ИИ-клиентов. Он обеспечивает централизованное управление, обнаружение и наблюдаемость всей вашей ИИ-инфраструктуры:

  • Шлюз инструментов — MCP, REST, трансляция gRPC-в-MCP и сжатие TOON

  • Шлюз агентов — протокол A2A, маршрутизация агентов, совместимых с OpenAI и Anthropic

  • API-шлюз — ограничение частоты запросов, аутентификация, повторные попытки и обратный прокси для REST-сервисов

  • Расширяемость плагинами — более 40 плагинов для дополнительных транспортов, протоколов и интеграций

  • Наблюдаемость — трассировка OpenTelemetry с Phoenix, Jaeger, Zipkin и другими бэкендами OTLP

Он работает как полностью совместимый MCP-сервер, развертываемый через PyPI или Docker, и масштабируется до мультикластерных сред в Kubernetes с федерацией и кэшированием на базе Redis.

ContextForge

Related MCP server: ContextForge MCP Gateway

Оглавление


📌 Полезные ссылки

Ресурс

Описание

Настройка за 5 минут

Быстрый старт — uvx, Docker, Compose или локальная разработка

Получение помощи

Варианты поддержки, FAQ, каналы сообщества

Руководство по проблемам

Как сообщать об ошибках, запрашивать функции, участвовать

Полная документация

Полные руководства, учебные пособия, справочник API


Обзор и цели

ContextForge — это реестр и прокси с открытым исходным кодом, который объединяет любой сервер Model Context Protocol (MCP), сервер A2A или REST/gRPC API, обеспечивая централизованное управление, обнаружение и наблюдаемость. Он оптимизирует вызовы агентов и инструментов, а также поддерживает плагины. Подробности см. в дорожной карте проекта.

В настоящее время поддерживается:

  • Федерация между несколькими сервисами MCP и REST

  • Интеграция A2A (Agent-to-Agent) для внешних ИИ-агентов (OpenAI, Anthropic, пользовательские)

  • Трансляция gRPC-в-MCP через автоматическое обнаружение сервисов на основе рефлексии

  • Виртуализация устаревших API как инструментов и серверов, совместимых с MCP

  • Транспорт через HTTP, JSON-RPC, WebSocket, SSE (с настраиваемым keepalive), stdio и потоковый HTTP

  • Панель администратора для управления в реальном времени, настройки и мониторинга логов (с поддержкой развертывания в изолированных сетях)

  • Встроенная аутентификация, повторные попытки и ограничение частоты запросов с OAuth-токенами в рамках пользователя и поддержкой заголовка X-Upstream-Authorization

  • Наблюдаемость OpenTelemetry с Phoenix, Jaeger, Zipkin и другими бэкендами OTLP

  • Масштабируемые развертывания через Docker или PyPI, кэширование на базе Redis и мультикластерная федерация

Архитектура ContextForge

Список предстоящих функций можно найти в дорожной карте ContextForge


  • Объединяет любой MCP-сервер или REST API

  • Позволяет выбирать версию протокола MCP (например, 2025-11-25)

  • Предоставляет единый интерфейс для различных бэкендов

  • Оборачивает сервисы, не являющиеся MCP, в виртуальные MCP-серверы

  • Регистрирует инструменты, подсказки (prompts) и ресурсы с минимальной настройкой

  • Трансляция gRPC-в-MCP через протокол рефлексии сервера

  • Автоматическое обнаружение сервисов и интроспекция методов

  • Адаптирует REST API в инструменты с помощью:

    • Автоматического извлечения JSON Schema

    • Поддержки заголовков, токенов и пользовательской аутентификации

    • Политик повторных попыток, тайм-аутов и ограничения частоты запросов

  • Подсказки (Prompts): шаблоны Jinja2, мультимодальная поддержка, откат/версионирование

  • Ресурсы: доступ на основе URI, определение MIME, кэширование, обновления SSE

  • Инструменты: нативные или адаптированные, с проверкой входных данных и контролем параллелизма

  • Панель администратора на базе HTMX + Alpine.js

  • Просмотр логов в реальном времени с фильтрацией, поиском и экспортом

  • Аутентификация: Basic, JWT или пользовательские схемы

  • Структурированные логи, эндпоинты состояния, метрики

  • 7000+ тестов, цели Makefile, «горячая» перезагрузка, pre-commit хуки

  • Вендорно-независимая трассировка с поддержкой протокола OpenTelemetry (OTLP)

  • Поддержка нескольких бэкендов: Phoenix (ориентирован на LLM), Jaeger, Zipkin, Tempo, DataDog, New Relic

  • Распределенная трассировка между федеративными шлюзами и сервисами

  • Автоматическое инструментирование инструментов, подсказок, ресурсов и операций шлюза

  • Метрики, специфичные для LLM: использование токенов, затраты, производительность моделей

  • Нулевые накладные расходы при отключении с изящной деградацией

См. Документацию по наблюдаемости для руководств по настройке с Phoenix, Jaeger и другими бэкендами.


Быстрый старт - PyPI

ContextForge опубликован на PyPI как mcp-contextforge-gateway.


TLDR;: (одна команда с использованием uv)

# Quick start with environment variables
BASIC_AUTH_PASSWORD=pass \
MCPGATEWAY_UI_ENABLED=true \
MCPGATEWAY_ADMIN_API_ENABLED=true \
PLATFORM_ADMIN_EMAIL=admin@example.com \
PLATFORM_ADMIN_PASSWORD=changeme \
PLATFORM_ADMIN_FULL_NAME="Platform Administrator" \
uvx --from mcp-contextforge-gateway mcpgateway --host 0.0.0.0 --port 4444

# Or better: use the provided .env.example
cp .env.example .env
# Edit .env to customize your settings
uvx --from mcp-contextforge-gateway mcpgateway --host 0.0.0.0 --port 4444
  • Python ≥ 3.11

  • curl + jq - только для последнего шага дымового тестирования

1 - Установка и запуск (удобно для копирования)

# 1️⃣  Isolated env + install from pypi
mkdir mcpgateway && cd mcpgateway
python3 -m venv .venv && source .venv/bin/activate
pip install --upgrade pip
pip install mcp-contextforge-gateway

# 2️⃣  Copy and customize the configuration
# Download the example environment file
curl -O https://raw.githubusercontent.com/IBM/mcp-context-forge/main/.env.example
cp .env.example .env
# Edit .env to customize your settings (especially passwords!)

# Or set environment variables directly:
export MCPGATEWAY_UI_ENABLED=true
export MCPGATEWAY_ADMIN_API_ENABLED=true
export PLATFORM_ADMIN_EMAIL=admin@example.com
export PLATFORM_ADMIN_PASSWORD=changeme
export PLATFORM_ADMIN_FULL_NAME="Platform Administrator"

BASIC_AUTH_PASSWORD=pass JWT_SECRET_KEY=my-test-key-but-now-longer-than-32-bytes \
  mcpgateway --host 0.0.0.0 --port 4444 &   # admin/pass

# 3️⃣  Generate a bearer token & smoke-test the API
export MCPGATEWAY_BEARER_TOKEN=$(python3 -m mcpgateway.utils.create_jwt_token \
    --username admin@example.com --exp 10080 --secret my-test-key-but-now-longer-than-32-bytes)

curl -s -H "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN" \
     http://127.0.0.1:4444/version | jq
# 1️⃣  Isolated env + install from PyPI
mkdir mcpgateway ; cd mcpgateway
python3 -m venv .venv ; .\.venv\Scripts\Activate.ps1
pip install --upgrade pip
pip install mcp-contextforge-gateway

# 2️⃣  Copy and customize the configuration
# Download the example environment file
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/IBM/mcp-context-forge/main/.env.example" -OutFile ".env.example"
Copy-Item .env.example .env
# Edit .env to customize your settings

# Or set environment variables (session-only)
$Env:MCPGATEWAY_UI_ENABLED        = "true"
$Env:MCPGATEWAY_ADMIN_API_ENABLED = "true"
# Note: Basic auth for API is disabled by default (API_ALLOW_BASIC_AUTH=false)
$Env:JWT_SECRET_KEY               = "my-test-key-but-now-longer-than-32-bytes"
$Env:PLATFORM_ADMIN_EMAIL         = "admin@example.com"
$Env:PLATFORM_ADMIN_PASSWORD      = "changeme"
$Env:PLATFORM_ADMIN_FULL_NAME     = "Platform Administrator"

# 3️⃣  Launch the gateway
mcpgateway.exe --host 0.0.0.0 --port 4444

#   Optional: background it
# Start-Process -FilePath "mcpgateway.exe" -ArgumentList "--host 0.0.0.0 --port 4444"

# 4️⃣  Bearer token and smoke-test
$Env:MCPGATEWAY_BEARER_TOKEN = python3 -m mcpgateway.utils.create_jwt_token `
    --username admin@example.com --exp 10080 --secret my-test-key-but-now-longer-than-32-bytes

curl -s -H "Authorization: Bearer $Env:MCPGATEWAY_BEARER_TOKEN" `
     http://127.0.0.1:4444/version | jq
# 1️⃣  Isolated env + install from PyPI using uv
mkdir mcpgateway ; cd mcpgateway
uv venv
.\.venv\Scripts\activate
uv pip install mcp-contextforge-gateway

# Continue with steps 2️⃣-4️⃣ above...

Скопируйте .env.example в .env и настройте любые параметры (или используйте их как переменные окружения).

# 1️⃣  Spin up the sample GO MCP time server using mcpgateway.translate & docker (replace docker with podman if needed)
python3 -m mcpgateway.translate \
     --stdio "docker run --rm -i ghcr.io/ibm/fast-time-server:latest -transport=stdio" \
     --expose-sse \
     --port 8003

# Or using the official mcp-server-git using uvx:
pip install uv # to install uvx, if not already installed
python3 -m mcpgateway.translate --stdio "uvx mcp-server-git" --expose-sse --port 9000

# Alternative: running the local binary
# cd mcp-servers/go/fast-time-server; make build
# python3 -m mcpgateway.translate --stdio "./dist/fast-time-server -transport=stdio" --expose-sse --port 8002

# NEW: Expose via multiple protocols simultaneously!
python3 -m mcpgateway.translate \
     --stdio "uvx mcp-server-git" \
     --expose-sse \
     --expose-streamable-http \
     --port 9000
# Now accessible via both /sse (SSE) and /mcp (streamable HTTP) endpoints

# 2️⃣  Register it with the gateway
curl -s -X POST -H "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"name":"fast_time","url":"http://localhost:8003/sse"}' \
     http://localhost:4444/gateways

# 3️⃣  Verify tool catalog
curl -s -H "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN" http://localhost:4444/tools | jq

# 4️⃣  Create a *virtual server* bundling those tools. Use the ID of tools from the tool catalog (Step #3) and pass them in the associatedTools list.
curl -s -X POST -H "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"server":{"name":"time_server","description":"Fast time tools","associated_tools":[<ID_OF_TOOLS>]}}' \
     http://localhost:4444/servers | jq

# Example curl
curl -s -X POST -H "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN"
     -H "Content-Type: application/json"
     -d '{"server":{"name":"time_server","description":"Fast time tools","associated_tools":["6018ca46d32a4ac6b4c054c13a1726a2"]}}' \
     http://localhost:4444/servers | jq

# 5️⃣  List servers (should now include the UUID of the newly created virtual server)
curl -s -H "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN" http://localhost:4444/servers | jq

# 6️⃣  Client HTTP endpoint. Inspect it interactively with the MCP Inspector CLI (or use any MCP client)
npx -y @modelcontextprotocol/inspector
# Transport Type: Streamable HTTP, URL: http://localhost:4444/servers/UUID_OF_SERVER_1/mcp,  Header Name: "Authorization", Bearer Token
export MCP_AUTH="Bearer ${MCPGATEWAY_BEARER_TOKEN}"
export MCP_SERVER_URL=http://localhost:4444/servers/UUID_OF_SERVER_1/mcp
python3 -m mcpgateway.wrapper  # Ctrl-C to exit

Вы также можете запустить его с помощью uv или внутри Docker/Podman — см. раздел Контейнеры выше.

В MCP Inspector определите переменные окружения MCP_AUTH и MCP_SERVER_URL, выберите python3 в качестве команды и -m mcpgateway.wrapper в качестве аргументов.

echo $PWD/.venv/bin/python3 # Using the Python3 full path ensures you have a working venv
export MCP_SERVER_URL='http://localhost:4444/servers/UUID_OF_SERVER_1/mcp'
export MCP_AUTH="Bearer ${MCPGATEWAY_BEARER_TOKEN}"
npx -y @modelcontextprotocol/inspector

или

Передайте URL и аутентификацию в качестве аргументов (нет необходимости устанавливать переменные окружения)

npx -y @modelcontextprotocol/inspector
command as `python`
Arguments as `-m mcpgateway.wrapper --url "http://localhost:4444/servers/UUID_OF_SERVER_1/mcp" --auth "Bearer <your token>"`

При использовании MCP-клиента, такого как Claude, со stdio:

{
  "mcpServers": {
    "mcpgateway-wrapper": {
      "command": "python",
      "args": ["-m", "mcpgateway.wrapper"],
      "env": {
        "MCP_AUTH": "Bearer your-token-here",
        "MCP_SERVER_URL": "http://localhost:4444/servers/UUID_OF_SERVER_1",
        "MCP_TOOL_CALL_TIMEOUT": "120"
      }
    }
  }
}

Быстрый старт - Контейнеры

Используйте официальный образ OCI из GHCR с Docker или Podman. Обратите внимание: в настоящее время arm64 не поддерживается в продакшене. Если вы работаете, например, на MacOS с чипами Apple Silicon (M1, M2 и т.д.), вы можете запускать контейнеры через Rosetta или установить через PyPi.

🚀 Быстрый старт - Docker Compose

Запустите полный стек с PostgreSQL и Redis менее чем за 30 секунд:

# Clone and start the stack
git clone https://github.com/IBM/mcp-context-forge.git
cd mcp-context-forge

# Start with PostgreSQL (recommended for production)
docker compose up -d

# Check status
docker compose ps

# View logs
docker compose logs -f gateway

# Access Admin UI: http://localhost:8080/admin (login with PLATFORM_ADMIN_EMAIL/PASSWORD)
# Generate API token
docker compose exec gateway python3 -m mcpgateway.utils.create_jwt_token \
  --username admin@example.com --exp 10080 --secret my-test-key-but-now-longer-than-32-bytes

Что вы получаете:

  • 🗄️ PostgreSQL - готовая к продакшену база данных с 55+ таблицами

  • 🚀 ContextForge - полнофункциональный шлюз с панелью администратора

  • 📊 Redis - высокопроизводительное кэширование и хранилище сессий

  • 🔧 Инструменты администратора - pgAdmin, Redis Insight для управления базой данных

  • 🌐 Nginx Proxy - кэширующий обратный прокси на порту 8080

Включить HTTPS (опционально):

# Start with TLS enabled (auto-generates self-signed certs)
make compose-tls

# Access via HTTPS: https://localhost:8443/admin

# Or bring your own certificates:
# Unencrypted key:
mkdir -p certs
cp your-cert.pem certs/cert.pem && cp your-key.pem certs/key.pem
make compose-tls

# Passphrase-protected key:
mkdir -p certs
cp your-cert.pem certs/cert.pem && cp your-encrypted-key.pem certs/key-encrypted.pem
echo "KEY_FILE_PASSWORD=your-passphrase" >> .env
make compose-tls

☸️ Быстрый старт - Helm (Kubernetes)

Разверните в Kubernetes с функциями корпоративного уровня:

# Add Helm repository (when available)
# helm repo add mcp-context-forge https://ibm.github.io/mcp-context-forge
# helm repo update

# For now, use local chart
git clone https://github.com/IBM/mcp-context-forge.git
cd mcp-context-forge/charts/mcp-stack

# Install with PostgreSQL (default)
helm install mcp-gateway . \
  --set mcpContextForge.secret.PLATFORM_ADMIN_EMAIL=admin@yourcompany.com \
  --set mcpContextForge.secret.PLATFORM_ADMIN_PASSWORD=changeme \
  --set mcpContextForge.secret.JWT_SECRET_KEY=your-secret-key

# Check deployment status
kubectl get pods -l app.kubernetes.io/name=mcp-context-forge

# Port forward to access Admin UI
kubectl port-forward svc/mcp-gateway-mcp-context-forge 4444:80
# Access: http://localhost:4444/admin

# Generate API token
kubectl exec deployment/mcp-gateway-mcp-context-forge -- \
  python3 -m mcpgateway.utils.create_jwt_token \
  --username admin@yourcompany.com --exp 10080 --secret your-secret-key

Примечание по SSRF: Helm по умолчанию использует строгие настройки SSRF (SSRF_ALLOW_PRIVATE_NETWORKS=false). Если вы регистрируете URL-адреса инструментов внутри кластера (например, сервисы fast-time или fast-test), разрешите только CIDR вашего кластера через mcpContextForge.config.SSRF_ALLOWED_NETWORKS или, для локальных бенчмарков, временно установите SSRF_ALLOW_PRIVATE_NETWORKS=true. См. docs/docs/manage/configuration.md#ssrf-protection и docs/docs/deployment/helm.md.

Корпоративные функции:

  • 🔄 Автомасштабирование - HPA с целями по CPU/памяти

  • 🗄️ Выбор базы данных - PostgreSQL (prod), SQLite (dev)

  • 📊 Наблюдаемость - метрики Prometheus, трассировка OpenTelemetry

  • 🔒 Безопасность - RBAC, сетевые политики, управление секретами

  • 🚀 Высокая доступность - развертывания с несколькими репликами и кластеризацией Redis

  • 📈 Мониторинг - встроенные дашборды Grafana и оповещения


🐳 Docker (О

Maintenance

ActivityActive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    A feature-rich Model Context Protocol gateway that federates MCP and REST services, unifying discovery, authentication, and transport protocols while providing virtualization of legacy APIs as MCP-compliant tools.
    Apache 2.0
  • A
    license
    Not graded
    quality
    F
    maintenance
    A feature-rich gateway and proxy that federates MCP, REST, and gRPC services into a unified endpoint for AI clients. It enables virtualization of legacy APIs as MCP-compliant tools while providing built-in security, rate-limiting, and OpenTelemetry observability.
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    A gateway that aggregates multiple MCP servers into a single endpoint with authentication, group-based access control, and audit logging for AI agents.
    19 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An open source registry and proxy that federates MCP, A2A, and REST/gRPC APIs with centralized governance, discovery, and observability. It optimizes agent and tool calling, and supports plugins.
    Apache 2.0