mcp_streamable_proxy/
lib.rs

1//! MCP Streamable HTTP Proxy Module
2//!
3//! This module provides a proxy implementation for MCP (Model Context Protocol)
4//! using Streamable HTTP transport with stateful session management.
5//!
6//! # Features
7//!
8//! - **Streamable HTTP Support**: Uses rmcp 0.12 with enhanced Streamable HTTP transport
9//! - **Stateful Sessions**: Custom SessionManager with backend version tracking
10//! - **Hot Swap**: Supports backend connection replacement without downtime
11//! - **Version Control**: Automatically invalidates sessions when backend reconnects
12//!
13//! # Architecture
14//!
15//! ```text
16//! Client → Streamable HTTP → ProxyAwareSessionManager → ProxyHandler → Backend MCP Service
17//!                                    ↓
18//!                            Version Tracking
19//!                            (DashMap<SessionId, BackendVersion>)
20//! ```
21
22pub mod proxy_handler;
23pub mod session_manager;
24pub mod server;
25pub mod config;
26
27// Re-export main types
28pub use proxy_handler::{ProxyHandler, ToolFilter};
29pub use session_manager::ProxyAwareSessionManager;
30pub use server::{run_stream_server, run_stream_server_from_config, McpServiceConfig};
31
32// Re-export commonly used rmcp types
33pub use rmcp::{
34    RoleClient, RoleServer, ServerHandler,
35    model::{ServerInfo, ClientInfo},
36    service::{RunningService, Peer},
37};