pub struct StreamableHttpServiceBuilder<S, M = LocalSessionManager, State: State = Empty> { /* private fields */ }Expand description
Use builder syntax to set the inputs and finish with build().
Implementations§
Source§impl<S, M, State: State> StreamableHttpServiceBuilder<S, M, State>
impl<S, M, State: State> StreamableHttpServiceBuilder<S, M, State>
Sourcepub fn build(self) -> StreamableHttpService<S, M>where
State: IsComplete,
pub fn build(self) -> StreamableHttpService<S, M>where
State: IsComplete,
Finish building and return the requested object
Sourcepub fn service_factory(
self,
value: Arc<dyn Fn() -> Result<S, Error> + Send + Sync>,
) -> StreamableHttpServiceBuilder<S, M, SetServiceFactory<State>>where
State::ServiceFactory: IsUnset,
pub fn service_factory(
self,
value: Arc<dyn Fn() -> Result<S, Error> + Send + Sync>,
) -> StreamableHttpServiceBuilder<S, M, SetServiceFactory<State>>where
State::ServiceFactory: IsUnset,
Required.
The service factory function that creates new MCP service instances
Sourcepub fn session_manager(
self,
value: Arc<M>,
) -> StreamableHttpServiceBuilder<S, M, SetSessionManager<State>>where
State::SessionManager: IsUnset,
pub fn session_manager(
self,
value: Arc<M>,
) -> StreamableHttpServiceBuilder<S, M, SetSessionManager<State>>where
State::SessionManager: IsUnset,
Required.
The session manager for tracking client connections
Sourcepub fn stateful_mode(
self,
value: bool,
) -> StreamableHttpServiceBuilder<S, M, SetStatefulMode<State>>where
State::StatefulMode: IsUnset,
pub fn stateful_mode(
self,
value: bool,
) -> StreamableHttpServiceBuilder<S, M, SetStatefulMode<State>>where
State::StatefulMode: IsUnset,
Sourcepub fn maybe_stateful_mode(
self,
value: Option<bool>,
) -> StreamableHttpServiceBuilder<S, M, SetStatefulMode<State>>where
State::StatefulMode: IsUnset,
pub fn maybe_stateful_mode(
self,
value: Option<bool>,
) -> StreamableHttpServiceBuilder<S, M, SetStatefulMode<State>>where
State::StatefulMode: IsUnset,
Sourcepub fn sse_keep_alive(
self,
value: Duration,
) -> StreamableHttpServiceBuilder<S, M, SetSseKeepAlive<State>>where
State::SseKeepAlive: IsUnset,
pub fn sse_keep_alive(
self,
value: Duration,
) -> StreamableHttpServiceBuilder<S, M, SetSseKeepAlive<State>>where
State::SseKeepAlive: IsUnset,
Sourcepub fn maybe_sse_keep_alive(
self,
value: Option<Duration>,
) -> StreamableHttpServiceBuilder<S, M, SetSseKeepAlive<State>>where
State::SseKeepAlive: IsUnset,
pub fn maybe_sse_keep_alive(
self,
value: Option<Duration>,
) -> StreamableHttpServiceBuilder<S, M, SetSseKeepAlive<State>>where
State::SseKeepAlive: IsUnset,
Sourcepub fn on_request(
self,
value: Arc<OnRequestHook>,
) -> StreamableHttpServiceBuilder<S, M, SetOnRequest<State>>where
State::OnRequest: IsUnset,
pub fn on_request(
self,
value: Arc<OnRequestHook>,
) -> StreamableHttpServiceBuilder<S, M, SetOnRequest<State>>where
State::OnRequest: IsUnset,
Optional (Some / Option setters). Optional hook called for each request to propagate extensions from HttpRequest to RequestContext.
This allows middleware-populated data (e.g., JWT claims) to be accessed in MCP handlers.
§Example
use std::sync::Arc;
use actix_web::HttpMessage;
StreamableHttpService::builder()
.on_request(Arc::new(|http_req, ext| {
if let Some(claims) = http_req.extensions().get::<MyClaims>() {
ext.insert(claims.clone());
}
}))
.build()Sourcepub fn maybe_on_request(
self,
value: Option<Arc<OnRequestHook>>,
) -> StreamableHttpServiceBuilder<S, M, SetOnRequest<State>>where
State::OnRequest: IsUnset,
pub fn maybe_on_request(
self,
value: Option<Arc<OnRequestHook>>,
) -> StreamableHttpServiceBuilder<S, M, SetOnRequest<State>>where
State::OnRequest: IsUnset,
Optional (Some / Option setters). Optional hook called for each request to propagate extensions from HttpRequest to RequestContext.
This allows middleware-populated data (e.g., JWT claims) to be accessed in MCP handlers.
§Example
use std::sync::Arc;
use actix_web::HttpMessage;
StreamableHttpService::builder()
.on_request(Arc::new(|http_req, ext| {
if let Some(claims) = http_req.extensions().get::<MyClaims>() {
ext.insert(claims.clone());
}
}))
.build()Source§impl<S, M, State: State> StreamableHttpServiceBuilder<S, M, State>where
State::OnRequest: IsUnset,
impl<S, M, State: State> StreamableHttpServiceBuilder<S, M, State>where
State::OnRequest: IsUnset,
Sourcepub fn on_request_fn(
self,
hook: impl Fn(&HttpRequest, &mut Extensions) + Send + Sync + 'static,
) -> StreamableHttpServiceBuilder<S, M, SetOnRequest<State>>
pub fn on_request_fn( self, hook: impl Fn(&HttpRequest, &mut Extensions) + Send + Sync + 'static, ) -> StreamableHttpServiceBuilder<S, M, SetOnRequest<State>>
Sets the on_request hook using a closure.
This is a convenience method that automatically wraps the closure in an Arc,
making it easier to use without manual Arc wrapping.
§Example
use actix_web::HttpMessage;
StreamableHttpService::builder()
.on_request_fn(|http_req, ext| {
if let Some(claims) = http_req.extensions().get::<MyClaims>() {
ext.insert(claims.clone());
}
})
.build()