modelcontextprotocol / modelcontextprotocol/php-sdk

[Client] Implement SSE reconnect with Last-Event-ID

Ouverte
#327 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Client enhancement improves spec compliance
Langage dominant
PHP
Étoiles
1.6k
Forks
173
Merge moyen
2 j 49 min
PR mergées (30 j)
23

Description

Context

Per the MCP Streamable HTTP transport spec, when an SSE stream disconnects the client SHOULD reconnect using Last-Event-ID to resume the stream without losing notifications. src/Client/Transport/HttpTransport.php::processSSEStream currently abandons the stream on EOF.

Scope

  • Track the most recent id: line per active stream.
  • On unexpected EOF (stream still expected open — pending request unresolved, or session active), reconnect with:
    • GET <endpoint> + Accept: text/event-stream
    • Mcp-Session-Id header
    • Last-Event-ID: <id> header
  • Configurable retry policy: backoff (1s, 2s, 4s, capped at 10s) + max attempts (default 5).
  • Respect retry: SSE field when present.

Conformance scenarios unblocked

sse-retry.

Dependencies

Independent — can run in parallel with auth work.

Acceptance

  • Unit tests for ID tracking + reconnect with Last-Event-ID.
  • Conformance: sse-retry passes.

cc @soyuka

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par src/Client/Transport/HttpTransport.php::processSSEStream et suivez l’analyse SSE existante ainsi que la gestion de l’état du flux. Ajoutez une couverture de tests unitaires pour le suivi des ID d’événement et la reconnexion, puis exécutez le scénario de conformité sse-retry ; le travail est terminé lorsque les reconnexions reprennent avec Last-Event-ID et que la stratégie de nouvelle tentative est respectée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
php
Domaine
api, networking
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
Calme
Clarté
Clairement spécifiée
Accessibilité débutants
66/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.