Environment
- MCP version: 1.25.0
- Transport: SSE (FastMCP)
- Client: Claude Code CLI
Problem
When using SSE transport with Claude Code, tool calls fail with:
RuntimeError: Received request before initialization was complete
The client connects to /sse endpoint and sends tool requests, but the initialization sequence (InitializeRequest → InitializeResponse → InitializedNotification) is not completing before tool calls are made.
Server log shows:
WARNING:root:Failed to validate request: Received request before initialization was complete
Current Workaround
Patching mcp/server/session.py to auto-initialize on first request:
case_:
ifself._initialization_state!=InitializationState.Initialized:
# Auto-initialize on first requestimportlogginglogging.warning("Auto-initializing session on first request")
self._initialization_state=InitializationState.InitializedExpected Behavior
SSE transport should either:
- Wait for proper initialization before accepting tool calls
- Auto-initialize for SSE clients
- Provide a configuration option for stateless SSE sessions (similar to
stateless_http for Streamable HTTP)
Reproduction
- Create FastMCP server with SSE transport
- Connect from Claude Code CLI
- Call any tool → Error occurs
Server Code Example
frommcp.server.fastmcpimportFastMCPmcp=FastMCP("my-server", host="0.0.0.0", port=8027)
@mcp.tool(description="Test tool")deftest_tool() ->str:
return"Hello"if__name__=="__main__":
mcp.run(transport="sse")
Environment
Problem
When using SSE transport with Claude Code, tool calls fail with:
The client connects to
/sseendpoint and sends tool requests, but the initialization sequence (InitializeRequest → InitializeResponse → InitializedNotification) is not completing before tool calls are made.Server log shows:
Current Workaround
Patching
mcp/server/session.pyto auto-initialize on first request:Expected Behavior
SSE transport should either:
stateless_httpfor Streamable HTTP)Reproduction
Server Code Example