Simple Streamable HTTP MCP Server
A clean implementation of an MCP server using the Streamable HTTP transport, following the official MCP patterns.
Features
Streamable HTTP Transport: Supports both JSON responses and Server-Sent Events (SSE)
Session Management: Proper session handling with unique session IDs
Progress Notifications: Long-running tools send progress updates
Multiple Tools:
hello_world
: Simple greeting toolget_server_info
: Returns server informationlong_running_test
: Configurable duration test with progress (default: 30s)slow_test
: 10-minute test with progress updates
Architecture
This server follows the MCP team's recommended patterns:
Session-based Architecture: Each client gets a unique session ID
Transport Reuse: Transports are stored and reused for subsequent requests
Proper Initialization: New sessions are created only on initialization requests
Clean Shutdown: All transports are properly closed on server shutdown
Running the Server
Testing
Use the provided test script to verify the server is working correctly:
This will test:
Session initialization
Tool listing and calling
Session ID management
SSE streaming
Session termination
Progress Notifications
The long_running_test
and slow_test
tools demonstrate progress notifications:
The server will send progress notifications:
Key Differences from Basic Examples
Proper Session Management: Sessions are created per client, not per request
Transport Lifecycle: Transports persist across requests within a session
Error Handling: Comprehensive error handling for all edge cases
Progress Support: Long-running operations can report progress
Clean Architecture: Clear separation between server creation and request handling
Environment Variables
PORT
: Server port (default: 3001)DEBUG
: Enable debug logging (true
by default)
Endpoints
POST /mcp
: Handle JSON-RPC requestsGET /mcp
: Handle SSE streamingDELETE /mcp
: Terminate sessionsGET /health
: Health check endpoint
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
A reference implementation demonstrating proper MCP server patterns with HTTP transport, featuring session management, progress notifications, and example tools for testing server functionality. Serves as a clean template for building MCP servers with streamable responses and comprehensive error handling.