Module middleware

Module middleware 

Source
Expand description

Middleware system for MCP servers

This module provides a trait-based middleware architecture that allows intercepting and modifying MCP requests and responses. Middleware can be used for authentication, logging, rate limiting, and custom business logic.

§Overview

The middleware system consists of:

§Examples

use turul_http_mcp_server::middleware::{McpMiddleware, RequestContext, SessionInjection, MiddlewareError};
use turul_mcp_session_storage::SessionView;
use async_trait::async_trait;

// Define custom middleware
struct LoggingMiddleware;

#[async_trait]
impl McpMiddleware for LoggingMiddleware {
    async fn before_dispatch(
        &self,
        ctx: &mut RequestContext<'_>,
        _session: Option<&dyn SessionView>,
        _injection: &mut SessionInjection,
    ) -> Result<(), MiddlewareError> {
        println!("Request: {}", ctx.method());
        Ok(())
    }
}

Re-exports§

pub use traits::McpMiddleware;
pub use context::RequestContext;
pub use context::SessionInjection;
pub use context::DispatcherResult;
pub use error::MiddlewareError;
pub use error::error_codes;
pub use stack::MiddlewareStack;
pub use session_view_adapter::StorageBackedSessionView;

Modules§

builtins
Built-in middleware implementations
context
Request context and session injection types
error
Middleware error types
session_view_adapter
SessionView adapter for BoxedSessionStorage
stack
Middleware stack execution
traits
Core middleware trait definitions