Initialize call hangs forever if MCP server does not return a `Content-Type: text/plain`
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 58/100
Piste de recherche
Commencez par le point d’entrée streamable_http_client présenté dans client.py et reproduisez le comportement en utilisant l’exemple PlainTextHandler de server.py. Suivez le traitement de la réponse initialize et ajoutez une couverture pour une réponse non-text/event-stream ; c’est terminé lorsque le client échoue rapidement avec une erreur compréhensible au lieu de rester bloqué.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Initial Checks
- I confirm that I'm using the latest version of MCP Python SDK
- I confirm that I searched for my issue in https://github.com/modelcontextprotocol/python-sdk/issues before opening this issue
Description
We had some timeouts on our server while using MCP client from the SDK.
When users try to integrate our client with their MCP server, we do an initialize call to the server and we are waiting infinitely to the following:
sync with self:
...
After investigation, it seems the error happens when the MCP server is misconfigured, and returns something different than Content-Type: text/event-stream as a response from the initialize call.
Although it is on the server side, the client should be able to fail immediately with a understandable error to warn the user something went wrong with the server's initialize output.
Example Code
# server.py
from http.server import BaseHTTPRequestHandler, HTTPServer
class PlainTextHandler(BaseHTTPRequestHandler):
def do_POST(self):
length = int(self.headers.get("Content-Length", 0))
self.rfile.read(length)
body = b"this is not json"
self.send_response(200)
self.send_header("Content-Type", "text/plain")
self.send_header("Content-Length", str(len(body)))
self.end_headers()
self.wfile.write(body)
def log_message(self, format, *args):
print(f"[server] {format % args}")
server = HTTPServer(("localhost", 9000), PlainTextHandler)
print("[server] listening on http://localhost:9000")
server.serve_forever()
# client.py
import asyncio
import mcp
from mcp.client.streamable_http import streamable_http_client
async def main():
print("connecting…")
async with streamable_http_client("http://localhost:9000/mcp") as (
read_stream, write_stream, _,
):
async with mcp.ClientSession(read_stream, write_stream) as session:
await session.initialize() # ← hangs here forever
print("done (you should never see this)")
Python & MCP Python SDK
- Python 3.12.12
- MCP - 1.27.0
- Langage dominant
- Python
- Étoiles
- 24.3k
- Forks
- 4k
- Merge moyen
- 1 j 11 h
- PR mergées (30 j)
- 30
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de modelcontextprotocol/python-sdk
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
modelcontextprotocol/python-sdk#3566 ·
-
Streamable HTTP client logs a WARNING for valid 202 Accepted on session termination (DELETE) Ouvertev1 v2
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
modelcontextprotocol/python-sdk#3546 · 5 commentaires ·
-
v1 v2
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
modelcontextprotocol/python-sdk#3545 · 1 commentaire ·
-
v1 v2
Difficulté 1/5 Moins d'une heure Accessibilité débutants 91/100
modelcontextprotocol/python-sdk#3508 · 2 commentaires ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
modelcontextprotocol/python-sdk#3504 ·
Toutes les issues de modelcontextprotocol/python-sdk
Issues similaires
-
bug confirmed issue
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
open-webui/open-webui#30750 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
good first issue
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100