Thanks to visit codestin.com
Credit goes to lib.rs

#model-context-protocol #http-transport #sse #mcp #sse-client

turbomcp-http

HTTP/SSE transport implementation for MCP (Model Context Protocol) - Client transport

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

MIT license

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=1 environment 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