python-sdk/examples/servers/simple-streamablehttp
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-01-16 09:58:57 +01:00
..
mcp_simple_streamablehttp fix: change Resource URI fields from AnyUrl to str (#1863) 2026-01-16 09:58:57 +01:00
pyproject.toml Replace deprecated dev-dependencies with dependency-groups (#1488) 2025-10-23 17:22:16 -07:00
README.md chore: add markdownlint on pre-commit hook and lint md files (#996) 2025-07-10 09:43:49 +01:00

MCP Simple StreamableHttp Server Example

A simple MCP server example demonstrating the StreamableHttp transport, which enables HTTP-based communication with MCP servers using streaming.

Features

  • Uses the StreamableHTTP transport for server-client communication
  • Supports REST API operations (POST, GET, DELETE) for /mcp endpoint
  • Task management with anyio task groups
  • Ability to send multiple notifications over time to the client
  • Proper resource cleanup and lifespan management
  • Resumability support via InMemoryEventStore

Usage

Start the server on the default or custom port:


# Using custom port
uv run mcp-simple-streamablehttp --port 3000

# Custom logging level
uv run mcp-simple-streamablehttp --log-level DEBUG

# Enable JSON responses instead of SSE streams
uv run mcp-simple-streamablehttp --json-response

The server exposes a tool named "start-notification-stream" that accepts three arguments:

  • interval: Time between notifications in seconds (e.g., 1.0)
  • count: Number of notifications to send (e.g., 5)
  • caller: Identifier string for the caller

Resumability Support

This server includes resumability support through the InMemoryEventStore. This enables clients to:

  • Reconnect to the server after a disconnection
  • Resume event streaming from where they left off using the Last-Event-ID header

The server will:

  • Generate unique event IDs for each SSE message
  • Store events in memory for later replay
  • Replay missed events when a client reconnects with a Last-Event-ID header

Note: The InMemoryEventStore is designed for demonstration purposes only. For production use, consider implementing a persistent storage solution.

Client

You can connect to this server using an HTTP client, for now only Typescript SDK has streamable HTTP client examples or you can use Inspector