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