mcp_stdio_proxy/server/middlewares/
mod.rs1mod auth;
2mod http_logging;
3mod mcp_router_json;
4mod mcp_update_latest_layer;
5mod opentelemetry_middleware;
6mod server_time;
7
8use crate::model::AppState;
9use axum::Router;
10use axum::middleware::from_fn;
11use http_logging::http_logging_middleware;
12use mcp_router_json::mcp_json_config_extract;
13use opentelemetry_middleware::opentelemetry_tracing_middleware;
14use server_time::ServerTimeLayer;
15use tower::ServiceBuilder;
16use tower_http::compression::CompressionLayer;
17
18pub use mcp_update_latest_layer::MySseRouterLayer;
19pub use opentelemetry_middleware::extract_trace_id;
20
21const REQUEST_ID_HEADER: &str = "x-request-id";
29const SERVER_TIME_HEADER: &str = "x-server-time";
30
31pub fn set_layer(app: Router, state: AppState) -> Router {
32 app.layer(
33 ServiceBuilder::new()
34 .layer(from_fn(http_logging_middleware))
36 .layer(from_fn(opentelemetry_tracing_middleware))
38 .layer(from_fn(mcp_json_config_extract))
40 .layer(CompressionLayer::new().gzip(true).br(true).deflate(true))
42 .layer(ServerTimeLayer)
44 .layer(MySseRouterLayer::new(state.clone())),
46 )
47}