feat(bootstrap): transport SSE avec résolution de config par connexion (#25) #26

Merged
thibaud-lclr merged 1 commit from feat/sse-transport into main 2026-05-20 10:12:39 +00:00
Owner

Résumé

  • Nouveau hook Hooks.Serve et commande serve dans le package bootstrap pour déployer un serveur MCP en mode HTTP/SSE stateless
  • Type générique RequestConfigResolver[C] : extrait la configuration de chaque requête entrante (token via Authorization: Bearer, paramètres via query string)
  • SSEOptions[C] + ServeSSE[C] : démarre le serveur HTTP, dispatch config par connexion, shutdown propre à l'annulation du contexte
  • La commande serve est masquée automatiquement si Hooks.Serve est nil — aucune régression pour les consommateurs existants

Validation locale

  • go test ./... : tous les packages passent, aucune régression
  • 8 tests couvrant : validation des options, shutdown propre sur ctx cancel, dispatch config par requête, réponse 400 sur erreur resolver, visibilité dans l'aide CLI

Test d'intégration suggéré

Implémenter Hooks.Serve dans graylog-mcp avec un RequestConfigResolver qui lit Authorization: Bearer <graylog-token> et ?base_url=..., et valider via MetaMCP.

Ce qui ne change pas

  • Transport stdio : 100 % inchangé
  • Bitwarden, fichier de config, profils : non impactés
  • Interface bootstrap.Options : rétrocompatible

Closes #25

## Résumé - Nouveau hook `Hooks.Serve` et commande `serve` dans le package `bootstrap` pour déployer un serveur MCP en mode HTTP/SSE stateless - Type générique `RequestConfigResolver[C]` : extrait la configuration de chaque requête entrante (token via `Authorization: Bearer`, paramètres via query string) - `SSEOptions[C]` + `ServeSSE[C]` : démarre le serveur HTTP, dispatch config par connexion, shutdown propre à l'annulation du contexte - La commande `serve` est masquée automatiquement si `Hooks.Serve` est nil — aucune régression pour les consommateurs existants ## Validation locale - `go test ./...` : tous les packages passent, aucune régression - 8 tests couvrant : validation des options, shutdown propre sur ctx cancel, dispatch config par requête, réponse 400 sur erreur resolver, visibilité dans l'aide CLI ## Test d'intégration suggéré Implémenter `Hooks.Serve` dans `graylog-mcp` avec un `RequestConfigResolver` qui lit `Authorization: Bearer <graylog-token>` et `?base_url=...`, et valider via MetaMCP. ## Ce qui ne change pas - Transport stdio : 100 % inchangé - Bitwarden, fichier de config, profils : non impactés - Interface `bootstrap.Options` : rétrocompatible Closes #25
feat(bootstrap): ajouter le transport SSE avec résolution de config par connexion
All checks were successful
CI / test (pull_request) Successful in 51s
fe42836fd7
Nouveau hook Hooks.Serve et commande serve pour déployer un serveur MCP
en mode HTTP/SSE stateless. Chaque connexion entrante résout sa propre
configuration via RequestConfigResolver (Bearer token + query params)
et instancie un http.Handler via HandlerFactory. Le mode stdio reste
inchangé ; serve est masqué automatiquement si Hooks.Serve est nil.

Closes #25

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
thibaud-lclr force-pushed feat/sse-transport from fe42836fd7
All checks were successful
CI / test (pull_request) Successful in 51s
to ee071bb207
All checks were successful
CI / test (pull_request) Successful in 15s
2026-05-20 10:10:00 +00:00
Compare
thibaud-lclr deleted branch feat/sse-transport 2026-05-20 10:12:39 +00:00
Sign in to join this conversation.
No description provided.