rust_mcp_sdk/mcp_http/
app_state.rs

1use crate::mcp_traits::mcp_handler::McpServerHandler;
2use crate::session_store::SessionStore;
3use crate::{id_generator::FastIdGenerator, mcp_traits::IdGenerator, schema::InitializeResult};
4use rust_mcp_transport::event_store::EventStore;
5use rust_mcp_transport::{SessionId, TransportOptions};
6use std::{sync::Arc, time::Duration};
7
8/// Application state struct for the Hyper ser
9///
10/// Holds shared, thread-safe references to session storage, ID generator,
11/// server details, handler, ping interval, and transport options.
12#[derive(Clone)]
13pub struct McpAppState {
14    pub session_store: Arc<dyn SessionStore>,
15    pub id_generator: Arc<dyn IdGenerator<SessionId>>,
16    pub stream_id_gen: Arc<FastIdGenerator>,
17    pub server_details: Arc<InitializeResult>,
18    pub handler: Arc<dyn McpServerHandler>,
19    pub ping_interval: Duration,
20    pub transport_options: Arc<TransportOptions>,
21    pub enable_json_response: bool,
22    /// Event store for resumability support
23    /// If provided, resumability will be enabled, allowing clients to reconnect and resume messages
24    pub event_store: Option<Arc<dyn EventStore>>,
25}