Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Simple Streamable HTTP MCP Serverrun a 5-second test with 10 progress steps"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
# Install dependencies
npm ci
# Run the server (default port: 3001, DEBUG logging enabled by default)
npm run start
# Run without debug logging, or edit `.env` to set DEBUG=false
DEBUG=false npm run start
# Run in development mode (auto-reload)
npm run devTesting
Use the provided test script to verify the server is working correctly:
npm run test:httpThis 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:
// Example tool call with progress
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "long_running_test",
"arguments": {
"duration": 60,
"steps": 12,
"message": "Testing progress notifications"
},
"_meta": {
"progressToken": "unique-progress-token"
}
},
"id": 1
}The server will send progress notifications:
{
"method": "notifications/progress",
"params": {
"progress": 1,
"total": 12,
"progressToken": "unique-progress-token"
}
}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 (trueby default)
Endpoints
POST /mcp: Handle JSON-RPC requestsGET /mcp: Handle SSE streamingDELETE /mcp: Terminate sessionsGET /health: Health check endpoint