io.github.fkom13/mcp-sftp-orchestrator
Serveur MCP pour l'orchestration de tâches distantes (SSH/SFTP) avec une file d'attente persistante.
Versions
8.0.4scoredTrust breakdown
Tools 85
policy_blocklist_list Affiche la liste des patterns de commandes bloquées par la politique de sécurité.
policy_blocklist_add Ajoute un pattern de commande à la liste noire. Le pattern peut contenir * comme joker.
policy_blocklist_remove Supprime un pattern de commande de la liste noire.
api_add Ajoute ou met à jour une API dans le catalogue de monitoring.
api_list Affiche toutes les APIs configurées dans le catalogue.
api_remove Supprime une API du catalogue en utilisant son alias.
api_check Lance un test de santé sur une API du catalogue.
get_system_resources Récupère les métriques système vitales (CPU, RAM, Disque) d'un serveur.
get_services_status Récupère le statut de tous les services connus (systemd, Docker, PM2) sur un serveur.
check_api_health Vérifie la disponibilité et le temps de réponse d'un endpoint HTTP/S.
get_fail2ban_status Récupère les informations du service Fail2Ban, pour toutes les jails ou une jail spécifique.
work_end Ferme la session et met à jour last_intervention sur la note serveur (note:true).
server_inventory hostname, disk, mem, pm2, docker, top-level $HOME, présence tailscale. force:true pour rafraîchir.
ssh_authorize_key Ajoute une clé PUBLIQUE dans authorized_keys d'un serveur. source: string|local_path|.pub|alias (dérive .pub depuis keyPath). Ne copie JAMAIS de private key. dry_run:true par défaut.
system_diagnostics Exécute un diagnostic complet du système MCP.
server_add Enregistre ou met à jour les informations de connexion d'un serveur. Vous devez fournir soit un chemin de clé, soit un mot de passe.
server_list Affiche la liste de tous les alias de serveurs configurés avec leurs détails.
server_remove Supprime un alias de serveur de la configuration.
server_group_list Affiche les groupes de serveurs (oci, contabo, …). Utilisable dans task_exec via alias 'group:nom' ou le nom du groupe.
server_group_set Définit un groupe nommé pointant vers une liste d'alias serveurs existants.
server_group_remove Supprime un groupe (ne supprime pas les serveurs).
fleet_status Ping SSH parallèle : latence, uptime/load/disk légers, clés manquantes. Filtrable par alias, liste, 'all' ou group:nom.
infra_audit Vue combinée : version orchestrator, serveurs (secrets masqués), groupes, notes, projets, crashed jobs, pool stats. Idéal en début de session.
project_list Registre sémantique projet ↔ serveur(s) ↔ paths local/remote.
project_get Retourne la config complète d'un projet (local, servers, ignore, runtime).
project_set Enregistre un projet. Ex: { name:'p-image', local:{path:'…'}, servers:{prod:{alias:'fkomprodmini2_prod', path:'/home/ubuntu/p-image', runtime:{pm2:'p-image', port:5002}}}, ignore:['node_modules'] }
project_remove Retourne { local, remote, ignore, runtime } prêts pour file_* / project_diff.
project_resolve Retourne { local, remote, ignore, runtime } prêts pour file_* / project_diff.
project_diff Compare le path local et le path remote du projet (ignorePatterns du registre). includeDiff pour le détail.
work_start Ouvre un journal d'intervention (option snapshot). Retourne sessionId. Fermer avec work_end (met à jour server_note).
work_log Ferme la session et met à jour last_intervention sur la note serveur (note:true).
work_list Ferme la session et met à jour last_intervention sur la note serveur (note:true).
task_transfer Lance un transfert SFTP. Si la tâche prend moins de ${config.syncTimeout / 1000}s, le résultat est direct. Sinon, elle passe en arrière-plan. direction 'server_to_server' transfert entre deux serveurs distants (via source_alias → alias).
task_exec Exécute une commande SSH. Si la tâche prend moins de ${config.syncTimeout / 1000}s, le résultat est direct. Sinon, elle passe en arrière-plan. Supporte alias unique, tableau, "all", "group:nom" ou nom de groupe. dry_run:true sur commande destructive = preview sans exécuter.
task_queue Affiche la queue récente. Filtrable par statut et paginable pour éviter de déverser des centaines de jobs dans le contexte.
task_status Récupère les détails d'une seule tâche, avec un rappel si nécessaire.
task_history Historique récent des tâches, filtrable par alias et paginable. Utiliser task_status pour le détail complet d'un job précis.
task_transfer_multi Lance des transferts SFTP multiples avec support de patterns glob (*, ?, []).
task_exec_interactive Exécute une commande SSH avec gestion des prompts interactifs (yes/no, passwords, etc.).
task_exec_sequence Exécute plusieurs commandes SSH en séquence sur le même serveur.
pool_stats Affiche les statistiques du pool de connexions SSH persistantes.
queue_stats Affiche les statistiques détaillées de la queue de tâches.
task_retry Relance une tâche qui a échoué ou crashé.
task_retry_all Relance en masse les jobs retryables (crashed et/ou failed). dry_run:true pour lister sans exécuter.
task_purge Supprime de la queue les jobs crashed/failed/completed. dry_run:true pour compter sans supprimer. olderThanDays optionnel.
task_logs Affiche les logs du système MCP.
get_pm2_logs Raccourci pour récupérer les logs PM2 d'une application spécifique ou de toutes les apps.
get_docker_logs Équivalent de tail -n pour afficher les dernières lignes d'un fichier distant.
tail_file Équivalent de tail -n pour afficher les dernières lignes d'un fichier distant.
help Affiche la documentation complète d'un outil ou la liste de tous les outils disponibles.
task_wait Prend un ID de job et attend jusqu'à ${config.maxWaitTimeout / 1000}s que la tâche se termine, puis retourne le résultat.
file_read Lit un fichier et retourne son contenu + hash SHA-256 (pour édition sécurisée). Supporte localhost (sans SSH) et remote (SFTP). encoding 'base64' pour les binaires. offset/limit (par lignes, utf8) pour consulter un gros fichier sans tout charger — le hash reste celui du fichier complet (edit-safe).
file_write Crée ou écrase un fichier. Crée les dossiers parents si besoin. Supporte localhost (sans SSH) et remote (SFTP). dryRun:true pour prévisualiser le diff sans écrire. backup:true pour snapshotter l'ancien fichier avant écrasement (undo via snapshot_restore). Pour modifier un fichier existant, préférez file_edit (édition chirurgicale).
file_edit Édite un fichier. DEUX MODES : (A) chirurgical via oldString/newString (remplace un bout précis, économe en tokens) ; (B) complet via newContent (remplace tout). Protection expectedHash optionnelle (anti-écrasement concurrent). dryRun:true = prévisualiser le diff sans écrire. backup:true = snapshot avant modif (undo via snapshot_restore). Workflow recommandé: file_read → file_edit avec oldString/newString + expectedHash.
diff_files Génère un diff unifié entre deux fichiers. N'importe quelle combinaison : local↔local, local↔remote, remote↔remote. Indique l'origine (serveur+chemin) de chaque source. Retourne identical:true si contenus identiques.
diff_folders Compare les arborescences de deux dossiers. Retourne les fichiers présents uniquement d'un côté, identiques, et modifiés (avec compteur +/- lignes). includeDiff:true pour le diff détaillé de chaque fichier modifié. ignorePatterns pour exclure (ex: ['node_modules','*.log']).
compare_all_sources Compare un fichier sur plusieurs sources (localhost + serveurs distants). Regroupe par hash : plus d'un groupe = drift. Chaque source peut avoir un chemin DIFFÉRENT (ex: .bashrc sur un VPS, .zshrc sur un autre) et un 'label' personnalisé pour un affichage clair. Le groupe majoritaire sert de référence ; includeDiff (défaut true) génère le diff réel référence→divergences.
shell_create Ouvre un shell PTY persistant sur un serveur distant où cd, export, activations d'env PERSISTENT entre les commandes (contrairement à task_exec qui isole chaque commande). Retourne un sessionId à utiliser avec shell_exec. Fermer avec shell_close quand terminé.
shell_exec Exécute une commande dans une session shell existante (créée via shell_create). L'état (répertoire courant, variables) PERSISTE entre les appels. Retourne { output, exitCode, timedOut }. Une seule commande à la fois par session. Respecte la blocklist (skip_policy:true pour forcer).
shell_list Affiche toutes les sessions shell persistantes en cours avec leur état (alias, âge, inactivité, nombre de commandes, occupée/fermée).
shell_close Termine proprement une session shell (ferme le shell et la connexion SSH dédiée). À faire quand la session n'est plus nécessaire. Les sessions inactives sont aussi fermées automatiquement après 30 min.
snapshot_create Capture l'état de fichiers/dossiers critiques (localhost sans SSH, ou serveur distant via SFTP). Déduplication automatique par contenu (hash). Idéal avant une modification risquée. Retourne un snapshotId.
snapshot_list Affiche les snapshots filtrés par source (localhost, serveur, tag). Résumé léger (id, serveur, tag, date, nb fichiers).
snapshot_diff Diff entre deux snapshots (par chemin). Fonctionne même entre un snapshot local et un snapshot remote (détection de drift local↔prod). includeDiff:true pour le détail ligne à ligne.
snapshot_restore Restaure les fichiers d'un snapshot vers une cible (local ou remote). DANGEREUX : dryRun:true par défaut (prévisualisation). Restauration réelle exige dryRun:false ET force:true. Peut restaurer un snapshot remote vers local (backup) et inversement (déploiement).
snapshot_delete Supprime un snapshot et nettoie les blobs devenus orphelins (dedup-aware : ne supprime que les contenus plus référencés). Retourne l'espace libéré.
server_note_set Attache un contexte à un serveur pour ne pas se perdre dans le parc : description, services critiques, avertissements, conventions, note libre. Merge partiel (seuls les champs fournis sont modifiés). 'intervention' met à jour automatiquement last_intervention.
server_note_get Récupère le contexte enregistré d'un serveur (description, services, warnings, conventions, dernière intervention). À consulter avant d'intervenir sur un serveur.
server_note_list Vue d'ensemble des notes/protocoles de tout le parc.
server_note_remove Supprime le contexte enregistré d'un serveur.
infra_overview Vue légère du parc sans alias; avec alias/group:/all, découverte live des ports, Docker/Compose, PM2, systemd et Nginx avec corrélation domaine → proxy → port → conteneur/service.
tmux_create Crée une nouvelle session tmux sur un serveur distant. La session survit aux déconnexions et aux redémarrages du MCP.
tmux_exec Envoie une commande à une session tmux existante.
tmux_read Récupère le contenu affiché dans une session tmux.
tmux_list Liste toutes les sessions tmux actives sur un serveur.
tmux_kill Supprime une session tmux.
tunnel_create Crée un tunnel SSH (local/remote/SOCKS5). source=null → local, source=alias → tmux sur le serveur distant. Le tunnel persiste via tmux si source est un serveur.
tunnel_list Liste tous les tunnels SSH actifs et leur état.
tunnel_close Ferme un tunnel SSH par son nom.
tunnel_allowlist_add Autorise un port pour les tunnels SSH (sécurité).
tunnel_allowlist_remove Supprime un port de la liste des ports autorisés.
guide Manuel pour l'IA pilote : workflows copier-coller, cheatsheet, pièges à éviter. Complémentaire de 'help' (qui liste les outils). Appelle guide (section:'index') en début de session pour charger les bonnes pratiques.
test Test
test_tool Un test simple
test_tool_with_params Test avec paramètres
Permissions 3
filesystem Server uses filesystem capabilities via: fs sync ops, fs/promises shell Server uses shell capabilities via: child_process, spawn() env_vars Server uses env_vars capabilities via: process.env