You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
proxysql/include/Admin_Tool_Handler.h

54 lines
1.5 KiB

#ifndef CLASS_ADMIN_TOOL_HANDLER_H
#define CLASS_ADMIN_TOOL_HANDLER_H
#ifdef PROXYSQLGENAI
#include "MCP_Tool_Handler.h"
#include <pthread.h>
// Forward declaration
class MCP_Threads_Handler;
/**
* @brief Administration Tool Handler for /mcp/admin endpoint
*
* This handler provides tools for administrative operations on ProxySQL.
* These tools allow LLMs to perform management tasks like user management,
* process control, and server administration.
*
* Tools provided (stub implementation):
* - admin_list_users: List MySQL users
* - admin_show_processes: Show running processes
* - admin_kill_query: Kill a running query
* - admin_flush_cache: Flush various caches
* - admin_reload: Reload users/servers configuration
*/
class Admin_Tool_Handler : public MCP_Tool_Handler {
private:
MCP_Threads_Handler* mcp_handler; ///< Pointer to MCP handler
pthread_mutex_t handler_lock; ///< Mutex for thread-safe operations
public:
/**
* @brief Constructor
* @param handler Pointer to MCP_Threads_Handler
*/
Admin_Tool_Handler(MCP_Threads_Handler* handler);
/**
* @brief Destructor
*/
~Admin_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 "admin"; }
};
#endif /* PROXYSQLGENAI */
#endif /* CLASS_ADMIN_TOOL_HANDLER_H */