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

ContextForge — это реестр и прокси с открытым исходным кодом, который объединяет инструменты, агентов и API в одну чистую точку доступа для ваших ИИ-клиентов. Он обеспечивает централизованное управление, обнаружение и наблюдаемость всей вашей ИИ-инфраструктуры:
Шлюз инструментов — MCP, REST, трансляция gRPC-в-MCP и сжатие TOON
Шлюз агентов — протокол A2A, маршрутизация агентов, совместимых с OpenAI и Anthropic
API-шлюз — ограничение частоты запросов, аутентификация, повторные попытки и обратный прокси для REST-сервисов
Расширяемость плагинами — более 40 плагинов для дополнительных транспортов, протоколов и интеграций
Наблюдаемость — трассировка OpenTelemetry с Phoenix, Jaeger, Zipkin и другими бэкендами OTLP
Он работает как полностью совместимый MCP-сервер, развертываемый через PyPI или Docker, и масштабируется до мультикластерных сред в Kubernetes с федерацией и кэшированием на базе Redis.
Оглавление
📌 Полезные ссылки
Ресурс | Описание |
Быстрый старт — 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
Объединяет любой 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 4444Python ≥ 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 Tokenexport 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 (О
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Appeared in Searches
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/IBM/mcp-context-forge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
