Skip to content

SSE transport: "Received request before initialization was complete" error with Claude Code client #1844

@Tech-Fumi

Description

@Tech-Fumi

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:

  1. Wait for proper initialization before accepting tool calls
  2. Auto-initialize for SSE clients
  3. Provide a configuration option for stateless SSE sessions (similar to stateless_http for Streamable HTTP)

Reproduction

  1. Create FastMCP server with SSE transport
  2. Connect from Claude Code CLI
  3. 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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions