Client tool call hangs forever if server crashes or connection dies when using streamable-http
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
If the server dies during a tool call before it sends a response the client will get stuck forever.
Example Code
# server.py from mcp.server.fastmcp import FastMCP import sys mcp = FastMCP("StatefulServer") @mcp.tool() def greet(name: str = "World") -> str: """Greet someone by name.""" sys.exit(0) return f"Hello, {name}!" if __name__ == "__main__": mcp.run(transport="streamable-http") # client.py import asyncio from mcp import ClientSession from mcp.client.streamable_http import streamablehttp_client async def main(): # Connect to a streamable HTTP server async with streamablehttp_client("http://localhost:8000/mcp") as ( read_stream, write_stream, _, ): # Create a session using the client streams async with ClientSession(read_stream, write_stream) as session: # Initialize the connection await session.initialize() res = await session.call_tool("greet", {"name": "World"}) print(res) if __name__ == "__main__": asyncio.run(main()) # Run server.py then client.py # client.py will hang forever in the tool call and never complete. I would expect it to throw an error since the connection died and it will never get a response.