Note: This is the v1.x to v2.0.0 migration guide. For v2.x to v3.x migration, see the top-level MIGRATION.md.
This guide helps you migrate from turbomcp-transport 1.x to 2.0.0.
TurboMCP Transport 2.0.0 has minimal breaking changes and focuses on enhancements.
- Zero Breaking API Changes - Public API unchanged
- Enhanced Resilience - Circuit breaker metrics and better timeout handling
- Performance Improvements - Optimized message processing
- Better Error Messages - More detailed error context
- Minimal Impact - Most users won't need any changes
- Backward Compatible - v1.x code works without modification
- Optional Enhancements - New features available when needed
TurboMCP Transport 2.0.0 has ZERO breaking changes.
All existing transport usage from v1.x continues to work without modification:
- STDIO transport - Works identically
- HTTP/SSE transport - Works identically
- WebSocket transport - Works identically
- TCP transport - Works identically
- Unix domain socket transport - Works identically
NEW: Circuit breaker now exposes metrics:
use turbomcp_transport::resilience::CircuitBreaker;
let breaker = CircuitBreaker::new(config);
// NEW: Access metrics
let metrics = breaker.metrics();
println!("Failures: {}", metrics.failure_count);
println!("State: {:?}", metrics.state);
println!("Last failure: {:?}", metrics.last_failure_time);Benefits:
- Better observability
- Easier debugging
- Production monitoring
ENHANCED: Better timeout configuration and error messages:
use turbomcp_transport::stdio::StdioTransport;
use std::time::Duration;
let transport = StdioTransport::new(command)
.with_timeout(Duration::from_secs(30)) // More granular control
.with_read_timeout(Duration::from_secs(5)) // Separate read timeout
.with_write_timeout(Duration::from_secs(5)); // Separate write timeoutBenefits:
- Fine-grained timeout control
- Better error messages
- Reduced timeout-related issues
IMPROVED: Error messages now include more context:
// v1.x error
// "Connection failed"
// v2.0.0 error
// "Connection failed to tcp://localhost:8080: Connection refused (errno 61)"Benefits:
- Faster debugging
- Better error tracking
- Clearer production logs
- Zero-copy message processing for supported transports
- Reduced allocations in hot paths
- Better buffering for network transports
- Optimized serialization with SIMD support
# Before (v1.x)
[dependencies]
turbomcp-transport = "1.1.2"
# After (v2.0.0)
[dependencies]
turbomcp-transport = "2.0.0"# Clean build
cargo clean
cargo build --all-features
# Run tests
cargo testuse turbomcp_transport::resilience::CircuitBreaker;
let breaker = CircuitBreaker::new(config);
// Monitor circuit breaker state
if let Some(metrics) = breaker.metrics() {
if metrics.failure_count > 10 {
log::warn!("High failure rate detected");
}
}use turbomcp_transport::http::HttpTransport;
use std::time::Duration;
let transport = HttpTransport::new(url)
.with_connect_timeout(Duration::from_secs(5))
.with_request_timeout(Duration::from_secs(30))
.with_read_timeout(Duration::from_secs(10));// v1.x and v2.0.0 - IDENTICAL
use turbomcp_transport::stdio::StdioTransport;
let transport = StdioTransport::new("./my-server")?;// v1.x and v2.0.0 - IDENTICAL
use turbomcp_transport::http::HttpTransport;
let transport = HttpTransport::new("http://localhost:3000/mcp")?;// v1.x and v2.0.0 - IDENTICAL
use turbomcp_transport::websocket::WebSocketTransport;
let transport = WebSocketTransport::new("ws://localhost:8080")?;// v1.x - Basic config
let transport = TcpTransport::new("localhost:8080")?;
// v2.0.0 - Enhanced config (optional)
let transport = TcpTransport::new("localhost:8080")?
.with_connect_timeout(Duration::from_secs(5))
.with_read_timeout(Duration::from_secs(10));Solution: Clean and rebuild:
cargo clean
cargo buildSolution: Check feature names are correct:
# Correct
turbomcp-transport = { version = "2.0.0", features = ["http", "websocket"] }
# Feature names unchanged from v1.xSolution: Check logs for enhanced error messages:
// Enable detailed logging
env_logger::init();
// Errors now include more context| Feature | v1.x | v2.0.0 |
|---|---|---|
| STDIO transport | β | β |
| HTTP/SSE transport | β | β Enhanced |
| WebSocket transport | β | β Enhanced |
| TCP transport | β | β Enhanced |
| Unix socket transport | β | β Enhanced |
| Circuit breaker | β | β + Metrics |
| Timeouts | Basic | β Granular |
| Error messages | Basic | β Enhanced |
| Performance | Fast | β Faster |
- Main Migration Guide: See
../../MIGRATION.mdfor workspace-level changes - API Documentation: https://docs.rs/turbomcp-transport
- Examples: See
../../examples/for transport usage - Transport Guide: See README.md for comprehensive documentation
- β Backward Compatible - All v1.x code works unchanged
- β Better Observability - Circuit breaker metrics and enhanced errors
- β Performance - Optimized message processing
- β Flexibility - Granular timeout configuration
- β Production Ready - Enhanced resilience features
- Issues: https://github.com/Epistates/turbomcp/issues
- Discussions: https://github.com/Epistates/turbomcp/discussions
- Documentation: https://docs.rs/turbomcp-transport
| turbomcp-transport | Status | Migration |
|---|---|---|
| 2.0.0 | β Current | Zero changes needed |
| 1.1.x | π‘ Maintenance | Upgrade for new features |
| 1.0.x | Upgrade recommended |