HTTP server transport layer for MCP protocol. Handles JSON-RPC routing, session management, SSE integration, and protocol compliance.
Core Purpose
- Route JSON-RPC requests to handlers
- Manage client sessions
- Enable SSE streaming
- Handle protocol initialization
Key Components
HttpServerTransport Class
export class HttpServerTransport {
// Dependencies
private resourceHandler: ResourceHandler
private toolHandler: ToolHandler
private promptHandler: PromptHandler
private sseTransport: SSETransport
private sessions: Map<string, Session>
// Main methods
handleRequest(): Routes and processes requests
handleSSEConnection(): Manages SSE streams
}
Request Routing
Supported Methods
Method | Handler | Purpose |
---|---|---|
resources/list |
ResourceHandler | List resources |
resources/read |
ResourceHandler | Read resource |
tools/list |
ToolHandler | List tools |
tools/call |
ToolHandler | Execute tool |
prompts/list |
PromptHandler | List prompts |
prompts/get |
PromptHandler | Get prompt |
initialize |
Internal | Protocol init |
ping |
Internal | Health check |
Integration in Application
- Used By: Express server endpoints
- Handlers: Resources, Tools, Prompts
- Protocol: JSON-RPC 2.0 compliant
- Streaming: Optional SSE support
Request Flow
- Receive JSON-RPC request
- Validate method and params
- Route to appropriate handler
- Execute handler logic
- Return JSON-RPC response
Session Management
Session Headers
- Request:
Mcp-Session-Id
- Response:
Mcp-Session-Id
Session Features
- UUID-based identification
- Client tracking
- SSE connection association
Protocol Features
Initialization Response
{
protocolVersion: "2024-11-05",
capabilities: {
resources: { read: true, list: true },
tools: { list: true, call: true },
prompts: { list: true, get: true }
},
serverInfo: { name, version }
}
Resource Templates
{
uriTemplate: "airs://scan-results/{scanId}",
name: "Scan Results",
description: "Retrieve scan by ID"
}
Error Handling
JSON-RPC Error Codes
-32600
: Invalid Request-32601
: Method not found-32602
: Invalid params-32603
: Internal error
Error Integration
- Sentry exception capture
- Structured logging
- Generic client responses
SSE Support
Stream Detection
- Check Accept header for
text/event-stream
- Identify streamable methods
- Initialize SSE connection
Streaming Flow
- Detect SSE capability
- Create/retrieve session
- Initialize SSE transport
- Send response via events
- Clean up connection
Key Features
Request Validation
- Method presence check
- Parameter type validation
- JSON-RPC structure verification
Performance
- Efficient method routing
- Session caching
- Minimal async overhead
Security
- Session isolation
- Error sanitization
- Input validation
Usage Example
// Handle incoming request
await transport.handleRequest(req, res);
// Establish SSE connection
transport.handleSSEConnection(req, res);
// Request automatically routed to:
// - ResourceHandler for resources/*
// - ToolHandler for tools/*
// - PromptHandler for prompts/*
Related Modules
- SSE Transport - Streaming implementation
- Resource Handler - Resource operations
- Tool Handler - Tool execution
- Transport Types - Type definitions