-
Notifications
You must be signed in to change notification settings - Fork 3k
Open
Description
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.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_httpfor 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")Metadata
Metadata
Assignees
Labels
No labels