Module plugins

Module plugins 

Source
Expand description

Plugin system for TurboMCP client

Provides an extensible plugin architecture with lifecycle hooks and middleware patterns for extending client functionality. Plugins can intercept requests and responses, handle custom methods, and add features like metrics, retries, and caching.

§Architecture

The plugin system follows a middleware pattern where plugins are executed in order:

Request → Plugin 1 → Plugin 2 → Plugin N → Server
         ↓            ↓           ↓
Response ← Plugin 1 ← Plugin 2 ← Plugin N ← Server

§Core Components

  • ClientPlugin: Core trait defining plugin lifecycle and hooks
  • PluginRegistry: Manages plugin registration, ordering, and execution
  • RequestContext/ResponseContext: Context objects passed to plugins
  • Example Plugins: MetricsPlugin, RetryPlugin, CachePlugin

§Usage

use turbomcp_client::plugins::{PluginRegistry, MetricsPlugin, PluginConfig};
use std::sync::Arc;

async fn example() -> Result<(), Box<dyn std::error::Error>> {
    let mut registry = PluginRegistry::new();

    // Register built-in plugins
    let metrics = Arc::new(MetricsPlugin::new(PluginConfig::Metrics));
    registry.register_plugin(metrics).await?;
    Ok(())
}

Re-exports§

pub use core::ClientPlugin;
pub use core::PluginConfig;
pub use core::PluginContext;
pub use core::PluginError;
pub use core::PluginResult;
pub use core::RequestContext;
pub use core::ResponseContext;
pub use registry::PluginRegistry;
pub use examples::CacheConfig;
pub use examples::CachePlugin;
pub use examples::MetricsData;
pub use examples::MetricsPlugin;
pub use examples::RetryConfig;
pub use examples::RetryPlugin;
pub use middleware::MiddlewareChain;
pub use middleware::MiddlewareResult;
pub use middleware::RequestMiddleware;
pub use middleware::ResponseMiddleware;

Modules§

core
Core plugin system traits and types
examples
Example plugin implementations
macros
Plugin execution macros for reducing boilerplate
middleware
Middleware pattern implementation for plugin system
registry
Plugin registry for managing plugin lifecycle and execution