# Guide d'Intégration Agent IA & Serveur Model Context Protocol (MCP) Ce document fournit la documentation technique complète pour intégrer MySQLTuner avec des agents d'Intelligence Artificielle (IA), des assistants de code LLM (Claude Desktop, Cursor, VS Code, Antigravity) et des pipelines d'administration automatique de bases de données via le protocole **Model Context Protocol (MCP)** et la télémétrie CLI `--agent-json`. --- ## 🏗️ Vue d'Ensemble de l'Architecture MySQLTuner propose une pile d'intégration IA conteneurisée et sans dépendance externe. Elle fait le pont entre la base de données et les clients IA. ```mermaid graph TD subgraph "Couche Client IA" Claude[Claude Desktop] Cursor[Cursor IDE] VSCode[VS Code / Cline / Roo Code] Custom[Pipeline LLM Personnalisé] end subgraph "Serveur MCP (build/mcp_server.py)" JSONRPC[Interface stdio JSON-RPC 2.0] Daemon[Démon d'Audit en Arrière-plan] CacheManager[Gestionnaire de Cache JSON / HTML] RollbackEngine[Moteur de Rollback & Transactions] end subgraph "Base de Données & Moteur" PerlEngine[Moteur Perl MySQLTuner (mysqltuner.pl)] MySQLInstance[(MySQL / MariaDB / Percona Server)] end Claude <-->|stdio JSON-RPC| JSONRPC Cursor <-->|stdio JSON-RPC| JSONRPC VSCode <-->|stdio JSON-RPC| JSONRPC Custom <-->|stdio JSON-RPC| JSONRPC JSONRPC --> Daemon Daemon -->|Exécute --agent-json| PerlEngine PerlEngine -->|Télémétrie SQL| MySQLInstance PerlEngine -->|JSON Structuré| CacheManager CacheManager -->|Ressources & Recommandations| JSONRPC RollbackEngine -->|SET GLOBAL / Annulation| MySQLInstance ``` --- ## ⚡ Mode 1 : Intégration Directe CLI (`--agent-json`) Lorsqu'il est invoqué avec l'option `--agent-json`, `mysqltuner.pl` supprime toutes les sorties ANSI formatées pour le terminal et émet un schéma JSON structuré unique conçu pour être consommé directement par les agents IA. ### Commande CLI ```bash perl mysqltuner.pl --agent-json --host --user --pass ``` ### Structure du Schéma JSON ```json { "findings": [ { "id": "innodb_buffer_pool_size_adjust", "topic": "Performance", "description": "La taille du buffer pool InnoDB est sous-dimensionnée pour la charge actuelle.", "impact_score": 9, "risk_level": "Medium", "risk_description": "Augmente la consommation mémoire. Assurez-vous d'avoir suffisamment de RAM libre sur le système.", "requires_restart": false, "expected_outcome": "Réduit les E/S disque et augmente le taux de succès du cache.", "action": { "type": "SQL", "statement": "SET GLOBAL innodb_buffer_pool_size = 1073741824;", "rollback_statement": "SET GLOBAL innodb_buffer_pool_size = 134217728;" } } ] } ``` --- ## 🔌 Mode 2 : Serveur Model Context Protocol (MCP) Le serveur MCP ([build/mcp_server.py](file:///build/mcp_server.py)) implémente le standard MCP sur le transport `stdio` en utilisant le protocole JSON-RPC 2.0. ### Ressources MCP Exposées | Ressource URI | Type de Contenu | Description | | :--- | :--- | :--- | | `mysqltuner://reports/latest.json` | `application/json` | Accède aux derniers résultats d'audit et à l'état des variables. | | `mysqltuner://reports/latest.html` | `text/html` | Récupère le rapport analytique interactif au format HTML. | | `mysqltuner://indicators/summary.json` | `application/json` | Fournit les indicateurs KPI principaux (Performance, Sécurité, Résilience). | ### Outils MCP Exposés 1. **`get_latest_audit`** : Récupère instantanément le dernier rapport mis en cache sans solliciter le serveur de base de données. 2. **`run_audit`** : Déclenche une nouvelle exécution de `mysqltuner.pl --agent-json` et rafraîchit le cache. 3. **`apply_recommendation`** : Applique une modification SQL dynamique (`SET GLOBAL`). 4. **`rollback_recommendation`** : Annule une modification précédemment appliquée en utilisant l'état de transaction sauvegardé. --- ## 🚀 Guide de Déploiement ### Déploiement Microservice Conteneurisé L'image Docker officielle ([Dockerfile.mcp](file:///Dockerfile.mcp)) regroupe Perl, Python 3, mysql-client et le serveur MCP. ```bash docker run -d \ --name mysqltuner-mcp \ -e DB_HOST=mysql-server \ -e DB_PORT=3306 \ -e DB_USER=root \ -e DB_PASSWORD=secret_pass \ -e AUDIT_INTERVAL_HOURS=6 \ -v /var/cache/mysqltuner:/var/cache/mysqltuner \ mysqltuner-mcp ``` ### Configuration des Clients IA (Claude Desktop, Cursor, Antigravity) Ajoutez cette configuration dans votre fichier `claude_desktop_config.json` ou `.cursor/mcp.json` : ```json { "mcpServers": { "mysqltuner": { "command": "python3", "args": ["/chemin/vers/MySQLTuner-perl/build/mcp_server.py"], "env": { "DB_HOST": "127.0.0.1", "DB_PORT": "3306", "DB_USER": "mysqltuner", "DB_PASSWORD": "secret_password" } } } } ``` --- ## 🛡️ Consignes et Prompt Système pour l'Agent IA Injectez ce prompt système dans votre environnement client LLM pour garantir une administration sécurisée : ```markdown Vous êtes un Administrateur de Bases de Données (DBA) Principal. Vous avez accès au serveur MCP MySQLTuner. ### Règles de Sécurité : 1. **Inspection Initiale** : Exécutez toujours `get_latest_audit` avant de proposer des modifications. 2. **Évaluation des Risques** : - Les commandes à risque `Low` / `Medium` sans redémarrage (`requires_restart: false`) peuvent être appliquées après validation de la commande de rollback par l'utilisateur. - Les commandes à risque `High` / `Critical` ou nécessitant un redémarrage requièrent une confirmation explicite. 3. **Vérification du Rollback** : Indiquez systématiquement la commande `statement` et sa contrepartie `rollback_statement` avant exécution. 4. **Boucle de Validation** : Après application d'une modification, exécutez `run_audit` pour vérifier l'amélioration du score KPI. En cas de régression, exécutez immédiatement `rollback_recommendation`. ```