modelcontextprotocol / modelcontextprotocol/typescript-sdk

SSEServerTransport doesn't seem to close properly

Offen
#321 9 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug fix proposed P2 ready for work
Vorherrschende Sprache
TypeScript
Sterne
13.4k
Forks
2.2k
Ø Merge
3 T. 15 Std.
Gemergte PRs (30 T.)
4

Beschreibung

Describe the bug
While reviewing the source code, I noticed that the close method is never actually called, which means res.end is never triggered:
https://github.com/modelcontextprotocol/typescript-sdk/blob/main/src/server/sse.ts

In multiple places, it seems like onclose is called directly when close should be used instead, to ensure proper cleanup.

To Reproduce
I created a minimal reproduction here:
https://github.com/nichtsam/transport-issue

Steps to reproduce the behavior:

  1. npm run start
  2. npx @modelcontextprotocol/inspector
  3. connect to http://localhost:3001/sse
  4. disconnect

Expected behavior
res.end should be called via the close method to cleanly terminate the SSE connection.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne in src/server/sse.ts und verfolge die close- und onclose-Pfade von SSEServerTransport, wobei du dich darauf konzentrierst, an welcher Stelle res.end erreicht werden sollte. Führe die Reproduktion mit npm run start aus und stelle dann über MCP Inspector eine Verbindung her und trenne sie wieder; abgeschlossen ist die Aufgabe, wenn die SSE-Antwort über close sauber beendet wird und die beobachtete Bereinigung dem erwarteten Verhalten entspricht.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
backend, networking
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
67/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.