MCP Context Forge est une passerelle de protocole de contexte de modèle (MCP) riche en fonctionnalités, pilotée par FastAPI et open source d'IBM. Elle unifie et fédère les outils, les ressources, les invites, les serveurs et les passerelles homologues, en encapsulant n'importe quelle API REST en tant qu'outil ou serveur virtuel conforme à la norme MCP. Le projet prend en charge la publication de toutes les fonctionnalités via les protocoles de transport HTTP/JSON-RPC, WebSocket, Server-Sent Events (SSE) et stdio, et fournit une interface utilisateur d'administration interactive riche, empaquetée sous forme de conteneur, prenant en charge toute base de données compatible SQLAlchemy.
Le projet adopte une architecture modulaire :
┌─────────────────┐ ┌──────────────────┐
│ 🖥️ Admin UI │ │ 🔐 Authentification et autorisation │
│ Interface d'administration │ │ JWT + Basic │
└─────────────────┘ └──────────────────┘
│ │
└────────┬─────────────────┘
│
┌─────────────▼─────────────────┐
│ 🚪 Noyau de la passerelle MCP │
│ Initialisation du protocole Ping terminée │
│ Gestionnaire de fédération │
│ Protocoles de transport HTTP WS SSE Stdio │
└─────────────┬─────────────────┘
│
┌─────────────▼─────────────────┐
│ Couche de service │
│ 🧰 Service d'outils 📁 Service de ressources │
│ 📝 Service d'invites 🧩 Service de serveurs │
└─────────────┬─────────────────┘
│
┌─────────────▼─────────────────┐
│ Couche de persistance │
│ 💾 Base de données SQLAlchemy │
│ ⚡ Cache Redis/Memory │
└───────────────────────────────┘
/health
et décorateur de métriques de latence.# Configuration de base de l'application
APP_NAME=MCP Gateway
HOST=0.0.0.0
PORT=4444
DATABASE_URL=sqlite:///./mcp.db
APP_ROOT_PATH=/gateway # Préfixe de sous-chemin facultatif
# Authentification Basic (interface d'administration et API)
BASIC_AUTH_USER=admin
BASIC_AUTH_PASSWORD=changeme
# Configuration JWT
JWT_SECRET_KEY=my-test-key
JWT_ALGORITHM=HS256
TOKEN_EXPIRY=10080 # Minutes
# Contrôle de l'authentification
AUTH_REQUIRED=true
AUTH_ENCRYPTION_SECRET=my-test-salt
# Fonctionnalité de fédération
FEDERATION_ENABLED=true
FEDERATION_DISCOVERY=false
FEDERATION_PEERS=["http://peer1:4444","http://peer2:4444"]
FEDERATION_TIMEOUT=30
FEDERATION_SYNC_INTERVAL=300
docker run -d --name mcpgateway \
-p 4444:4444 \
-e HOST=0.0.0.0 \
-e JWT_SECRET_KEY=my-secret-key \
-e BASIC_AUTH_USER=admin \
-e BASIC_AUTH_PASSWORD=changeme \
-e AUTH_REQUIRED=true \
-e DATABASE_URL=sqlite:///./mcp.db \
ghcr.io/ibm/mcp-context-forge:latest
# Créer un environnement virtuel et installer les dépendances
make venv install serve
# Ou installer manuellement
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
uvicorn mcpgateway.main:app --host 0.0.0.0 --port 4444
export MCPGATEWAY_BEARER_TOKEN=$(python3 -m mcpgateway.utils.create_jwt_token --username admin --exp 10080 --secret my-test-key)
curl -X POST -u admin:changeme \
-H "Content-Type: application/json" \
-d '{
"protocol_version":"2025-03-26",
"capabilities":{},
"client_info":{"name":"MyClient","version":"1.0.0"}
}' \
http://localhost:4444/protocol/initialize
curl -X POST -u admin:changeme \
-H "Content-Type: application/json" \
-d '{
"name":"clock_tool",
"url":"http://localhost:9000/rpc",
"description":"Returns current time",
"input_schema":{
"type":"object",
"properties":{"timezone":{"type":"string"}},
"required":[]
}
}' \
http://localhost:4444/tools
curl -X POST -u admin:changeme \
-H "Content-Type: application/json" \
-d '{
"name":"greet",
"template":"Hello, {{ user }}!",
"argument_schema":{
"type":"object",
"properties":{"user":{"type":"string"}},
"required":["user"]
}
}' \
http://localhost:4444/prompts
Le projet offre une prise en charge complète du déploiement IBM Cloud Code Engine :
IBMCLOUD_REGION=us-south
IBMCLOUD_RESOURCE_GROUP=default
IBMCLOUD_PROJECT=my-codeengine-project
IBMCLOUD_CODE_ENGINE_APP=mcpgateway
IBMCLOUD_IMAGE_NAME=us.icr.io/myspace/mcpgateway:latest
IBMCLOUD_API_KEY=your_api_key_here
make ibmcloud-check-env # Vérifier les variables d'environnement
make ibmcloud-cli-install # Installer IBM Cloud CLI
make ibmcloud-login # Se connecter à IBM Cloud
make ibmcloud-ce-login # Sélectionner le projet Code Engine
make ibmcloud-tag # Étiqueter l'image du conteneur
make ibmcloud-push # Pousser vers IBM Container Registry
make ibmcloud-deploy # Déployer sur Code Engine
mcpgateway/
├── admin.py # Routes FastAPI et contrôleur de l'interface d'administration
├── cache/
│ └── resource_cache.py # Cache LRU+TTL en mémoire des ressources
├── config.py # Chargeur de paramètres Pydantic
├── db.py # Modèles SQLAlchemy ORM et configuration de la base de données
├── federation/
│ ├── discovery.py # Découverte des passerelles homologues
│ ├── forward.py # Logique de transfert RPC
│ └── manager.py # Coordination de la fédération et vérification de l'état
├── handlers/
│ └── sampling.py # Gestionnaire des requêtes d'échantillonnage en flux MCP
├── services/
│ ├── completion_service.py # Logique de complétion des paramètres d'invites et de ressources
│ ├── gateway_service.py # Enregistrement et gestion des passerelles homologues
│ ├── prompt_service.py # CRUD et rendu des modèles d'invites
│ ├── resource_service.py # Enregistrement, récupération et abonnement aux ressources
│ ├── server_service.py # Enregistrement des serveurs et surveillance de l'état
│ └── tool_service.py # Enregistrement, appel et métriques des outils
├── transports/
│ ├── sse_transport.py # Transport Server-Sent Events
│ ├── stdio_transport.py # Transport stdio
│ └── websocket_transport.py # Transport WebSocket
└── utils/
├── create_jwt_token.py # Outil de génération et de vérification JWT
└── verify_credentials.py # Dépendance d'authentification FastAPI
# Installer les dépendances de développement
make install-dev
# Exécuter les vérifications de code
make lint
# Exécuter les tests
make test
# Exécuter les tests de couverture
make coverage
Le projet intègre plusieurs outils de qualité du code :
MCP Context Forge est une solution de passerelle de protocole de contexte de modèle complète et prête pour la production, particulièrement adaptée aux besoins d'intégration et de gestion des outils des applications LLM de niveau entreprise. Il implémente non seulement les fonctionnalités complètes du protocole MCP, mais fournit également de riches fonctionnalités d'extension, telles que la découverte de fédération, la conversion de protocole, les services de virtualisation, etc., ce qui en fait un composant d'infrastructure idéal pour la construction d'écosystèmes d'applications d'IA complexes.