rust_mcp_sdk/mcp_http/middleware/
logging_middleware.rs1use crate::{
8 mcp_http::{middleware::BoxFutureResponse, types::GenericBody, McpAppState, Middleware},
9 mcp_server::error::TransportServerResult,
10};
11use async_trait::async_trait;
12use http::{Request, Response};
13use std::sync::Arc;
14
15pub struct LoggingMiddleware;
20
21#[async_trait]
22impl Middleware for LoggingMiddleware {
23 async fn handle<'req>(
24 &self,
25 req: Request<&'req str>,
26 state: Arc<McpAppState>,
27 next: Arc<
28 dyn Fn(Request<&'req str>, Arc<McpAppState>) -> BoxFutureResponse<'req> + Send + Sync,
29 >,
30 ) -> TransportServerResult<Response<GenericBody>> {
31 println!("➡️ Logging request: {}", req.uri());
32 let res = next(req, state).await?;
33 println!("⬅️ Logging response: {}", res.status());
34 Ok(res)
35 }
36}