Skip to main content

Middleware

Trait Middleware 

Source
pub trait Middleware: Send + Sync {
    // Provided methods
    fn on_request(
        &self,
        _ctx: &McpContext,
        _request: &JsonRpcRequest,
    ) -> McpResult<MiddlewareDecision> { ... }
    fn on_response(
        &self,
        _ctx: &McpContext,
        _request: &JsonRpcRequest,
        response: Value,
    ) -> McpResult<Value> { ... }
    fn on_error(
        &self,
        _ctx: &McpContext,
        _request: &JsonRpcRequest,
        error: McpError,
    ) -> McpError { ... }
}
Expand description

Middleware hook trait for request/response interception.

This is intentionally minimal: synchronous hooks only, with simple short-circuit and response transform capabilities. See the module-level documentation for ordering semantics.

Provided Methods§

Source

fn on_request( &self, _ctx: &McpContext, _request: &JsonRpcRequest, ) -> McpResult<MiddlewareDecision>

Invoked before routing the request.

Return Respond to skip normal dispatch and return a custom result.

Source

fn on_response( &self, _ctx: &McpContext, _request: &JsonRpcRequest, response: Value, ) -> McpResult<Value>

Invoked after a successful handler result is produced.

Middleware can transform the response value (or return an error).

Source

fn on_error( &self, _ctx: &McpContext, _request: &JsonRpcRequest, error: McpError, ) -> McpError

Invoked when a handler or middleware returns an error.

Middleware may rewrite the error before it is sent to the client.

Implementations on Foreign Types§

Source§

impl<T> Middleware for Arc<T>
where T: Middleware + ?Sized,

Source§

fn on_request( &self, ctx: &McpContext, request: &JsonRpcRequest, ) -> McpResult<MiddlewareDecision>

Source§

fn on_response( &self, ctx: &McpContext, request: &JsonRpcRequest, response: Value, ) -> McpResult<Value>

Source§

fn on_error( &self, ctx: &McpContext, request: &JsonRpcRequest, error: McpError, ) -> McpError

Implementors§