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 _:
if self._initialization_state != InitializationState.Initialized:
# Auto-initialize on first request
import logging
logging.warning("Auto-initializing session on first request")
self._initialization_state = InitializationState.Initialized
Expected 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
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("my-server", host="0.0.0.0", port=8027)
@mcp.tool(description="Test tool")
def test_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