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.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

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§