Skip to main content

declare_plugin_config

Macro declare_plugin_config 

Source
macro_rules! declare_plugin_config {
    ($config_type:ty) => { ... };
}
Expand description

Declare plugin configuration with automatic boilerplate generation

This macro generates:

  • Static storage for the configuration (OnceCell)
  • get_config() function to access the configuration
  • try_get_config() function for optional access
  • plugin_configure() C ABI function for the framework

§Example

use mcp_plugin_api::*;
use serde::Deserialize;

#[derive(Debug, Clone, Deserialize)]
struct PluginConfig {
    database_url: String,
    max_connections: u32,
}

// Generate all configuration boilerplate
declare_plugin_config!(PluginConfig);

// Use in handlers
fn my_handler(args: &Value) -> Result<Value, String> {
    let config = get_config();
    // Use config.database_url, etc.
    Ok(json!({"status": "ok"}))
}

declare_plugin! {
    list_tools: generated_list_tools,
    execute_tool: generated_execute_tool,
    free_string: mcp_plugin_api::utils::standard_free_string,
    configure: plugin_configure  // Auto-generated by declare_plugin_config!
}