Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

StreamableHTTPClientTransport should handle 404 and 406 gracefully for GET SSE stream

Ouverte Adaptée aux débutants
#1,635 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@nanookclaw y travaille déjà.

Depuis le 27/4/2026.

  • #1637 par @Aboudjem — fermée sans fusion
  • #1799 par @4444J99 — fermée sans fusion
  • #1969 par @nanookclaw — ouverte

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
76/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Calme
Stack technique
typescript
Domaine
api, networking

Piste de recherche

Commencez dans packages/client/src/client/streamableHttp.ts, plus précisément dans StreamableHTTPClientTransport._startOrAuthSse(), et suivez la façon dont le statut de la réponse GET est traité pendant l’initialisation. Vérifiez le comportement avec un serveur MCP POST-only ou avec un test client ciblé s’il est disponible. Le travail est considéré comme terminé lorsque 404 et 406, comme 405, permettent à la communication basée sur POST de continuer sans erreur fatale.

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

Description

bug fix proposed P2 ready for work

Problem

The StreamableHTTPClientTransport._startOrAuthSse() method sends a GET request to open an SSE stream during initialization. Per the MCP spec, the server MAY respond with 405 Method Not Allowed if it doesn't support SSE streams, and the client correctly handles this.

However, many MCP servers return 404 Not Found or 406 Not Acceptable instead of 405 for this GET request:

  • 404: Server doesn't have a GET handler for the MCP endpoint (only POST)
  • 406: Server rejects Accept: text/event-stream header (e.g., requires both application/json and text/event-stream)

Both cases mean the same thing: the server does not offer an SSE stream at the GET endpoint. But the client treats them as fatal errors, preventing the connection even though POST-based communication would work fine.

Current Behavior

// packages/client/src/client/streamableHttp.ts, _startOrAuthSse()
if (response.status === 405) {
    return;  // Only 405 is handled gracefully
}
throw new SdkError(...);  // 404 and 406 throw, killing the connection

This causes errors like:

StreamableHTTPError: Streamable HTTP error: Failed to open SSE stream: Not Found

Affected Clients

This impacts any client consuming the SDK, including:

  • Gemini CLI (google-gemini/gemini-cli) — #5268, #2787
  • MCP Inspector — #1150
  • LibreChat and other MCP consumers

Proposed Fix

Treat 404 and 406 the same as 405 — all indicate the server does not offer an SSE stream at the GET endpoint:

// 404: Server has no GET handler (only POST)
// 405: Server explicitly doesn't allow GET
// 406: Server rejects the Accept header for GET
if (response.status === 404 || response.status === 405 || response.status === 406) {
    return;
}

The client will then proceed with POST-based communication, which works correctly for these servers.

Reproduction

  1. Set up an MCP server that only supports POST (no GET SSE stream)
  2. Connect using StreamableHTTPClientTransport
  3. The GET request returns 404 → client throws and disconnects
  4. POST would have worked fine

Environment

  • @modelcontextprotocol/sdk: latest
  • Discovered while debugging Gemini CLI v0.32.1 connecting to a remote HTTP MCP server (ArmorCode)
Langage dominant
TypeScript
Étoiles
13.7k
Forks
2.3k
Merge moyen
1 j 2 h
PR mergées (30 j)
60

Préparer son environnement

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.

Autres issues de modelcontextprotocol/typescript-sdk

Toutes les issues de modelcontextprotocol/typescript-sdk

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

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