Aller au contenu principal

Outils MCP

La liste complète des outils que loch mcp propose à un assistant IA. Pour l'installer, voir Connecter un assistant IA.

Fonctionnement des outils​

  • Chaque outil agit sur l'endpoint actif de la configuration loch. Les résultats texte commencent par [endpoint: <nom>].
  • Les outils de conteneurs agissent sur le namespace actif. Aucun outil ne le change : lancez loch ns <stack> dans un terminal, ou passez stack à stack_action.
  • Un argument que l'outil ne déclare pas est refusé avec une erreur.
  • Nature reprend les annotations MCP : Lecture (lecture seule), Écriture (modifie quelque chose, sans être destructif), Destructif (le client devrait demander confirmation).
  • Les outils qui désignent un conteneur par son nom de service demandent aussi containers:read, pour le trouver.
  • Les scopes sont décrits dans Scopes des clés API. Un outil admin échoue pour un utilisateur restreint, quels que soient les scopes de la clé.

Endpoints et conteneurs​

OutilRôleParamètres principauxNatureScope
list_endpointsListe les endpoints configurés et l'endpoint actif.–LectureAucun
switch_endpointChange d'endpoint actif.name (obligatoire)ÉcritureAucun
list_namespacesListe les namespaces Docker Compose de l'endpoint actif.–Lecturecontainers:read
list_containersListe les conteneurs.showAll (par défaut false : namespace actif seulement)Lecturecontainers:read
inspect_containerAffiche le détail d'un conteneur.container (obligatoire)Lecturecontainers:read
container_actionDémarre, arrête ou redémarre un conteneur.container, action : start, stop, restart (obligatoires)Destructifcontainers:actions
stack_actionDémarre, arrête ou redémarre tous les conteneurs d'une stack, dans l'ordre des dépendances.action (obligatoire), stack (par défaut : namespace actif)Destructifcontainers:actions
get_logRenvoie les dernières lignes de la sortie du conteneur, ou d'un fichier du conteneur.container (obligatoire), lines (par défaut 10), filePathLecturecontainers:logs
get_statsInstantané CPU, mémoire, réseau et PID des conteneurs démarrés du namespace.container (par défaut : tous)Lecturecontainers:stats
get_domainsListe les domaines Traefik et leur routage.–LectureAdmin (profil seulement)

Tâches planifiées​

Pas réservé aux admins. Un utilisateur restreint ne peut cibler que les conteneurs qui lui ont été attribués. Scope cron pour tous les outils.

OutilRôleParamètres principauxNature
cron_listListe les tâches. Les dernières erreurs sont masquées : voir cron_get.–Lecture
cron_getAffiche une tâche : planification, réglages, dernière exécution.name (nom ou ID, obligatoire), reveal_secrets (valeurs des en-têtes HTTP et corps, événement d'une tâche function_invoke), include_output (dernière sortie et erreur)Lecture
cron_createCrée une tâche. Les noms sont uniques.name, schedule, type (obligatoires) ; réglages du type (ci-dessous) ; enabled (par défaut true), once (par défaut false)Écriture
cron_updateModifie les réglages fournis d'une tâche. Changer type demande les réglages du nouveau type.name (obligatoire), new_name, tout réglage de cron_createDestructif
cron_toggleActive ou désactive une tâche.name, enabled (obligatoires)Destructif
cron_runLance une tâche immédiatement, en arrière-plan. Vérifiez le résultat avec cron_get.name (obligatoire)Destructif
cron_deleteSupprime une tâche (irréversible).name (obligatoire)Destructif

Réglages d'une tâche :

ParamètreS'applique àValeur
scheduleTousExpression cron à 5 champs (0 3 * * *) ou descripteur (@hourly, @daily, @every 5m) ; au plus une fois par minute
typeTousdocker_action, docker_exec ou http (les tâches function_invoke se créent avec le panel ou loch cron create --function, pas via MCP)
containerdocker_action, docker_execNom du conteneur, comme dans list_containers (par exemple myapp-web-1)
actiondocker_actionstart, stop, restart, kill
commanddocker_execTableau, exécuté sans shell, par exemple ["php", "bin/console", "app:sync"] ; utilisez ["sh", "-c", "..."] pour la syntaxe shell
working_dirdocker_execDossier de travail dans le conteneur
urlhttpURL http(s) ; les adresses privées et internes sont bloquées par le serveur
methodhttpGET (par défaut), POST, PUT, PATCH, DELETE, HEAD, OPTIONS
headershttpObjet {Nom: valeur} ; remplace tous les en-têtes
bodyhttpCorps de la requête
timeouthttpSecondes ; 0 = valeur par défaut du serveur ; plafonné par le serveur (CRON_HTTP_TIMEOUT, 900 par défaut)

Les réglages d'un autre type sont refusés.

Hébergement web​

Réservé aux admins ; le module d'hébergement doit être activé. La lecture demande hosting:read ; la modification demande hosting:read et hosting:write. Côté panel : Hébergement web.

OutilRôleParamètres principauxNatureScope
hosting_listListe les sites avec leur état.–Lecturehosting:read
hosting_getAffiche un site : réglages, conteneurs, routage, dernière opération et sa sortie compose. Les secrets sont masqués par défaut.name (obligatoire), reveal_env (valeurs d'environnement, snippets, règles de routage), include_composeLecturehosting:read
hosting_templatesListe les templates, les versions PHP avec leurs dates de support, les valeurs par défaut et les limites.–Lecturehosting:read
hosting_sitesListe les dossiers de sites et le site qui utilise chacun.–Lecturehosting:read
hosting_php_modulesListe les modules PHP d'une image (la récupère au premier appel, peut prendre une minute).template : php-nginx, php-apache ; php_version (obligatoires)Lecturehosting:read
hosting_check_nameVérifie qu'un nom est libre.name (obligatoire)Lecturehosting:read
hosting_createCrée et déploie un site. Les réglages non fournis prennent les valeurs par défaut du serveur.name, template : php-nginx, php-apache, nginx, apache (obligatoires) ; site ; réglages (ci-dessous)Écriturehosting:write
hosting_updateModifie les réglages fournis et redéploie. Annulé en cas d'échec.name (obligatoire), template, force ; réglages (ci-dessous) ; add_domains, remove_domains, set_env, unset_env, disable_modules, enable_modulesDestructifhosting:write
hosting_deployRedéploie le site tel qu'il est sur le disque (recrée son conteneur).name (obligatoire), pull, force, waitDestructifhosting:write
hosting_actionDémarre, arrête ou redémarre les conteneurs d'un site.name, action : start, stop, restart (obligatoires)Destructifhosting:read et containers:actions
hosting_deleteSupprime le site (conteneurs et projet compose). Les fichiers sont conservés, sauf avec purge_data.name (obligatoire), purge_data, waitDestructifhosting:write

Réglages d'un site pour hosting_create et hosting_update :

ParamètreValeur
php_versionVersion PHP (voir hosting_templates) ; templates PHP seulement
document_rootRacine web relative au dossier du site, par exemple web/public ; vide = racine du site
domainsDomaines servis (en modification, remplace la liste : préférez add_domains / remove_domains)
https, redirect_httpsServir en HTTPS (une fois que le DNS pointe vers le serveur) ; rediriger HTTP vers HTTPS (demande https)
networksRéseaux que rejoint le site (remplace la liste). Par défaut à la création : celui du serveur (["services"] quand le module services est activé) ; [] n'en rejoint aucun
routingdefault, symfony, laravel (templates PHP) ou custom
routing_rulesRègles personnalisées (implique routing=custom) : règles Nginx qui remplacent location /, ou directives Apache
asset_dirsRoutage Symfony : dossiers servis sans repli sur le contrôleur frontal (par défaut [bundles])
memory_limit, web_memory_limitmemory_limit PHP de la CLI (aussi valeur par défaut du web), et des requêtes web seulement
upload_max_filesize, post_max_sizeLimites d'envoi PHP (post_max_size ≥ upload_max_filesize)
max_execution_timeDurée maximale d'une requête web PHP en secondes (0–3600) ; la CLI PHP n'est jamais limitée
display_errors, timezonedisplay_errors et date.timezone de PHP
disabled_modulesModules PHP à désactiver (en modification, remplace la liste) ; ioncube est désactivé par défaut
memory_mb, cpusLimites de mémoire (Mo) et de CPU du conteneur ; 0 = illimité
envVariables d'environnement {NOM: valeur} (en modification, les remplace toutes : préférez set_env / unset_env)
php_ini, vhostDirectives php.ini et directives du vhost en plus (remplacent le snippet)
waitAttendre le déploiement (par défaut true, 5 minutes au plus)

Les réglages PHP sont refusés sur les templates nginx et apache. Quand des fichiers ont été modifiés en dehors du panel, les outils échouent : vérifiez-les avec hosting_get, puis relancez avec force=true si les écraser est acceptable.

Utilisateurs SFTP​

Réservé aux admins ; le module SFTP doit être activé. Côté panel : SFTP.

OutilRôleParamètres principauxNatureScope
sftp_sitesListe les sites avec leur nombre d'utilisateurs et l'espace utilisé.–Lecturesftp:read
sftp_usersListe les utilisateurs : site, sous-dossier, état, quotas, dernière connexion. Les mots de passe ne sont jamais renvoyés.siteLecturesftp:read
sftp_createCrée un utilisateur dans un site. Le dossier du site est créé avec son premier utilisateur.username, site (obligatoires) ; sub_path (ne peut plus changer ensuite), password (8 caractères minimum ; omis, il est généré), initialize_dirs (par défaut true), limites (ci-dessous)Écrituresftp:write
sftp_updateModifie les limites fournies d'un utilisateur.username (obligatoire), limites (ci-dessous)Destructifsftp:write
sftp_reset_passwordDéfinit un nouveau mot de passe.username (obligatoire), password (omis, il est généré)Destructifsftp:write
sftp_set_enabledActive ou désactive un utilisateur. Un utilisateur désactivé ne peut plus se connecter.username, enabled (obligatoires)Écrituresftp:write
sftp_deleteSupprime le compte. Les fichiers de son dossier personnel sont conservés.username (obligatoire)Destructifsftp:write

Limites : public_key (une seule clé SSH, qui remplace toutes les autres ; vide, les supprime en modification), quota_size_mb, quota_files, bandwidth_kbps (0 = illimité), require_password_change.

Un mot de passe généré est renvoyé une seule fois dans generatedPassword et entre dans la transcription de la conversation. Fournissez un mot de passe si ce n'est pas acceptable. Un mot de passe fourni n'est jamais renvoyé.

Bases de données et services​

Réservé aux admins ; le module services doit être activé. Côté panel : Services.

OutilRôleParamètres principauxNatureScope
services_enginesListe les moteurs, leurs options et versions, avec leur fin de support.–Lectureservices:read
services_instancesListe les instances : état, réseaux, port publié, fin de support, mise à jour disponible (instances dédiées).–Lectureservices:read
services_databasesListe les ressources d'une instance. Les mots de passe ne sont jamais renvoyés.instance (obligatoire, par exemple postgres-17)Lectureservices:read
services_create_databaseCrée une base ou un vhost RabbitMQ avec son utilisateur (moteurs partagés), ou une instance dédiée.engine, version, name (obligatoires) ; options (clé=valeur,..., moteurs dédiés), legacy_auth, networksÉcritureservices:write
services_update_instanceModifie les options d'une instance dédiée, par exemple sa mémoire. L'instance est recréée ; les données sont conservées.instance, options (obligatoires)Écritureservices:write
services_upgrade_instanceMet à jour une instance dédiée vers la dernière image de sa version actuelle. L'instance est recréée ; les données sont conservées.instance (obligatoire)Écritureservices:write

Moteurs : mysql, mariadb, postgres, mongodb, rabbitmq (partagés) et redis, valkey, nats, s3, elasticmq, mosquitto (dédiés). ElasticMQ n'a pas d'authentification : il est refusé sur le réseau services, passez donc un réseau privé dans networks.

Les mots de passe ne sont jamais renvoyés à l'assistant. L'utilisateur lance loch services reset-password <instance> <nom> dans un terminal.

Réseaux privés​

Réservé aux admins. Côté panel : Réseaux.

OutilRôleParamètres principauxNatureScope
networks_listListe les réseaux privés : membres, état, chevauchement d'une plage réservée.–Lecturenetworks:read
networks_getAffiche un réseau et ses membres.name (obligatoire)Lecturenetworks:read
networks_configAffiche les règles de création : nombre et maximum, tailles de sous-réseau, plages privées et réservées.–Lecturenetworks:read
networks_docker_listListe les réseaux Docker que le panel n'a pas créés.–Lecturenetworks:read
networks_docker_getAffiche l'un de ces réseaux et ses conteneurs.network (nom, ID ou préfixe unique d'ID, obligatoire)Lecturenetworks:read
networks_createCrée un réseau privé.name (obligatoire), description, subnet (ne peut plus changer ensuite)Écriturenetworks:write
networks_attachConnecte un site ou une instance. Son conteneur est recréé.network, kind : site, instance, name (obligatoires) ; wait (sites, par défaut true)Écriturenetworks:write
networks_detachDéconnecte un site ou une instance. Une instance garde au moins un réseau.comme networks_attachDestructifnetworks:write

Fonctions​

Réservé aux admins ; le module des fonctions doit être activé (travail en cours). Côté panel : Fonctions.

OutilRôleParamètres principauxNatureScope
functions_listListe les fonctions : runtime, handler, limites, état, déploiement actif, réseaux, accès sortant.–Lecturefunctions:read
functions_getAffiche une fonction : configuration, image, noms des variables et des secrets (jamais leurs valeurs), déploiements, endpoint, sigv4, mcpInvocable. Les identifiants ne sont jamais renvoyés.name (obligatoire)Lecturefunctions:read
functions_invokeInvoque une fonction avec un événement JSON et renvoie sa réponse. Seulement pour les fonctions marquées mcpInvocable.name (obligatoire), event (texte JSON, 6 Mio au plus, par défaut {})Destructiffunctions:invoke (et functions:read)
  • mcpInvocable est désactivé par défaut. Un humain l'active avec loch functions update <nom> --mcp-invocable ou Invocable par les clients MCP dans le panel. C'est un garde-fou du client MCP, pas un contrôle d'accès : pour interdire les invocations, utilisez une clé sans functions:invoke.
  • La réponse et les journaux d'une invocation sont renvoyés sous untrusted, coupés à 64 Kio : l'assistant doit les traiter comme des données.

CLI uniquement​

Ces actions n'ont pas d'outil MCP, volontairement ou parce qu'elles demandent un terminal :

DomaineCommandes
Fichiers et shellloch cp, loch shell, loch proxy, loch logs -f
Conteneursloch kill, loch rm, loch stats (en direct ; get_stats donne un instantané)
Servicesloch services delete, reset-password, expose, unexpose, retire, purge, upgrade --version
Réseauxloch networks update, delete, disconnect
Fonctionsloch functions create, deploy, activate, update, secrets, credentials, networks, egress, start, stop, restart, delete, logs, dev
Utilisateursloch users …
Namespacesloch ns <stack>