6 releases
Uses new Rust 2024
| 3.0.0-exp.2 | Jan 13, 2026 |
|---|---|
| 3.0.0-exp | Jan 12, 2026 |
| 3.0.0-beta.3 | Jan 22, 2026 |
| 3.0.0-beta.2 | Jan 21, 2026 |
| 3.0.0-beta.1 | Jan 19, 2026 |
#1899 in Network programming
1MB
17K
SLoC
turbomcp-http
MCP 2025-11-25 compliant HTTP/SSE client transport for TurboMCP.
Overview
This crate provides the HTTP client transport implementation for the Model Context Protocol (MCP), implementing the Streamable HTTP transport specification with full SSE (Server-Sent Events) support.
Features
- MCP 2025-11-25 Specification Compliance: Full implementation of the streamable HTTP spec
- Single Endpoint Design: All communication through one MCP endpoint
- SSE Support: Server-Sent Events for server-to-client streaming
- Endpoint Discovery: Automatic endpoint URI discovery via SSE events
- Session Management: Mcp-Session-Id header support for session tracking
- Auto-Reconnect: Configurable retry policies with exponential backoff
- Last-Event-ID Resumability: Resume SSE streams from last received event
- TLS 1.3: Minimum TLS version enforcement (v3.0 security requirement)
- Size Limits: Configurable request/response size validation
Usage
use turbomcp_http::{StreamableHttpClientTransport, StreamableHttpClientConfig};
use turbomcp_transport_traits::Transport;
use std::time::Duration;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = StreamableHttpClientConfig {
base_url: "http://localhost:8080".to_string(),
endpoint_path: "/mcp".to_string(),
timeout: Duration::from_secs(30),
..Default::default()
};
let transport = StreamableHttpClientTransport::new(config);
transport.connect().await?;
// Transport is ready for MCP communication
Ok(())
}
Configuration Options
use turbomcp_http::{StreamableHttpClientConfig, RetryPolicy};
use turbomcp_transport_traits::{LimitsConfig, TlsConfig};
use std::time::Duration;
let config = StreamableHttpClientConfig {
base_url: "https://api.example.com".to_string(),
endpoint_path: "/mcp".to_string(),
timeout: Duration::from_secs(30),
retry_policy: RetryPolicy::Exponential {
base: Duration::from_secs(1),
max_delay: Duration::from_secs(60),
max_attempts: Some(10),
},
auth_token: Some("your-token".to_string()),
limits: LimitsConfig::default(),
tls: TlsConfig::modern(),
..Default::default()
};
Security
- TLS 1.3 is required by default (v3.0 security requirement)
- Certificate validation is enabled by default
- Disabling certificate validation requires
TURBOMCP_ALLOW_INSECURE_TLS=1environment variable
Part of TurboMCP v3.0 Modular Architecture
This crate is part of the TurboMCP v3.0 transport extraction effort, enabling:
- Minimal builds with only needed transports
- Independent versioning of transport implementations
- Reduced binary sizes for embedded/WASM targets
License
MIT
Dependencies
~19–38MB
~447K SLoC