#ifndef CLASS_CONFIG_TOOL_HANDLER_H #define CLASS_CONFIG_TOOL_HANDLER_H #ifdef PROXYSQLGENAI #include "MCP_Tool_Handler.h" #include // Forward declaration class MCP_Threads_Handler; /** * @brief Configuration Tool Handler for /mcp/config endpoint * * This handler provides tools for runtime configuration and management * of ProxySQL. It allows LLMs to view and modify ProxySQL configuration, * reload variables, and manage the server state. * * Tools provided: * - get_config: Get current configuration values * - set_config: Modify configuration values * - reload_config: Reload configuration from disk/memory * - list_variables: List all available variables * - get_status: Get server status information */ class Config_Tool_Handler : public MCP_Tool_Handler { private: MCP_Threads_Handler* mcp_handler; ///< Pointer to MCP handler for variable access pthread_mutex_t handler_lock; ///< Mutex for thread-safe operations /** * @brief Get a configuration variable value * @param var_name Variable name (without 'mcp-' prefix) * @return JSON with variable value */ json handle_get_config(const std::string& var_name); /** * @brief Set a configuration variable value * @param var_name Variable name (without 'mcp-' prefix) * @param var_value New value * @return JSON with success status */ json handle_set_config(const std::string& var_name, const std::string& var_value); /** * @brief Reload configuration * @param scope "disk", "memory", or "runtime" * @return JSON with success status */ json handle_reload_config(const std::string& scope); /** * @brief List all configuration variables * @param filter Optional filter pattern * @return JSON with variables list */ json handle_list_variables(const std::string& filter); /** * @brief Get server status * @return JSON with status information */ json handle_get_status(); public: /** * @brief Constructor * @param handler Pointer to MCP_Threads_Handler */ Config_Tool_Handler(MCP_Threads_Handler* handler); /** * @brief Destructor */ ~Config_Tool_Handler() override; // MCP_Tool_Handler interface implementation json get_tool_list() override; json get_tool_description(const std::string& tool_name) override; json execute_tool(const std::string& tool_name, const json& arguments) override; int init() override; void close() override; std::string get_handler_name() const override { return "config"; } }; #endif /* PROXYSQLGENAI */ #endif /* CLASS_CONFIG_TOOL_HANDLER_H */