turul_http_mcp_server/middleware/mod.rs
1//! Middleware system for MCP servers
2//!
3//! This module provides a trait-based middleware architecture that allows intercepting
4//! and modifying MCP requests and responses. Middleware can be used for authentication,
5//! logging, rate limiting, and custom business logic.
6//!
7//! # Overview
8//!
9//! The middleware system consists of:
10//! - [`McpMiddleware`] - Core trait for implementing middleware
11//! - [`RequestContext`] - Normalized request context across transports
12//! - [`SessionInjection`] - Write-only mechanism for populating session state
13//! - [`MiddlewareStack`] - Ordered execution of multiple middleware layers
14//!
15//! # Examples
16//!
17//! ```rust,no_run
18//! use turul_http_mcp_server::middleware::{McpMiddleware, RequestContext, SessionInjection, MiddlewareError};
19//! use turul_mcp_session_storage::SessionView;
20//! use async_trait::async_trait;
21//!
22//! // Define custom middleware
23//! struct LoggingMiddleware;
24//!
25//! #[async_trait]
26//! impl McpMiddleware for LoggingMiddleware {
27//! async fn before_dispatch(
28//! &self,
29//! ctx: &mut RequestContext<'_>,
30//! _session: Option<&dyn SessionView>,
31//! _injection: &mut SessionInjection,
32//! ) -> Result<(), MiddlewareError> {
33//! println!("Request: {}", ctx.method());
34//! Ok(())
35//! }
36//! }
37//! ```
38
39pub mod traits;
40pub mod context;
41pub mod error;
42pub mod stack;
43pub mod builtins;
44pub mod session_view_adapter;
45
46pub use traits::McpMiddleware;
47pub use context::{RequestContext, SessionInjection, DispatcherResult};
48pub use error::{MiddlewareError, error_codes};
49pub use stack::MiddlewareStack;
50pub use session_view_adapter::StorageBackedSessionView;