Support du transport SSE avec résolution de config par connexion (pour MetaMCP et plateformes similaires) #25
Labels
No labels
area/cli
area/config
area/manifest
area/scaffold
area/secrets
area/update
enhancement
integration/email-mcp
priority/high
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
AI/mcp-framework#25
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
Aujourd'hui, tous les serveurs MCP basés sur
mcp-frameworkutilisent exclusivement le transport stdio : le binaire est lancé en tant que processus fils par le client MCP, qui pipe stdin/stdout. Ce modèle fonctionne bien pour un usage local, mais il est incompatible avec les plateformes MCP hébergées comme MetaMCP, qui se connectent à des serveurs MCP distants via SSE (Server-Sent Events) sur HTTP.Le besoin concret : pouvoir déployer
graylog-mcp(et tout autre serveur basé sur le framework) en mode SSE self-hosted, accessible depuis MetaMCP, sans aucun setup local ni Bitwarden.Limitation actuelle
fwbootstrap.Design proposé
Transport SSE stateless
Le serveur SSE ne stocke aucun état, aucun credential. La config est portée par la requête HTTP de chaque connexion entrante :
base_url?base_url=https://graylog.company.comstream_id?stream_id=xxxapi_tokenAuthorization: Bearer <token>Ce design est validé par l'UI MetaMCP qui expose nativement un champ Bearer Token et un champ Custom Headers lors de l'ajout d'un serveur SSE. Les paramètres non-secrets (
base_url,stream_id) passent en query string pour rester visibles dans les logs et l'UI ; le credential sensible (api_token) passe exclusivement en header.Chaque connexion SSE instancie son propre handler MCP avec la config extraite de la requête. Bitwarden et le fichier de config sont complètement bypassed en mode SSE.
Nouvelle commande
serve(ou flag--transport sse)Ou via env :
Changements nécessaires dans
fwbootstrapServedansfwbootstrap.Hooks(à côté du hookMCPexistant) :Le framework fournit un helper standard qui lit les query params et le header
Authorization: Bearer, mappés sur les champs déclarés dansmcp.toml. Les serveurs peuvent surcharger ce resolver si besoin.fwbootstrap:Ce qui ne change pas
fwbootstrap.Optionsreste rétrocompatible.Infra de déploiement
Le serveur SSE étant complètement stateless (pas de DB, pas de sessions), il se déploie trivialement sur Fly.io, Railway, Render, ou un VPS avec Docker. Une image Docker officielle par serveur MCP serait un plus.
Priorité
Ce changement bénéficierait à tous les serveurs MCP basés sur le framework (pas seulement
graylog-mcp). L'implémentation dans le framework plutôt que dans chaque serveur individuellement évite la duplication.