MCP SFTP Orchestrator
The MCP SFTP Orchestrator is a Model Context Protocol server for orchestrating remote SSH/SFTP tasks, server management, and system monitoring through an LLM-compatible stdio interface.
Core Capabilities:
Server Management: Add, list, and remove server configurations with SSH key or password authentication and secure credential storage.
SSH Command Execution: Execute simple, interactive, or sequential commands with auto-response to prompts, persistent connection pools, automatic retry, and log streaming (PM2, Docker, tail, journalctl).
SFTP File Transfers: Upload/download files and folders with glob pattern support (
*.txt,**/*.js), multi-file transfers, and automatic parent directory creation.System Monitoring: Check system resources (CPU, RAM, Disk, load average), service status (systemd, Docker, PM2), Fail2Ban information, and perform HTTP/HTTPS health checks with authentication.
API Management: Configure and manage an API catalog for health monitoring with various authentication methods (API key, Basic Auth, both, or none).
Log Retrieval: Access PM2 application logs, Docker container logs with timestamp/time-range filters, tail remote files, and view MCP system logs with filtering.
Task Queue Management: Persistent, auto-saving queue with hybrid sync/async execution, detailed task history, manual/automatic retry, and comprehensive statistics including success rates and average durations.
System Administration: Monitor SSH connection pool statistics, system diagnostics, and performance metrics with structured error handling and security best practices.
Enables monitoring and retrieval of Docker container logs, including container status checks and log streaming with configurable parameters.
Supports configuration through .env files for managing environment variables and server settings.
Provides SFTP-based file transfer capabilities including upload/download of files and directories with glob pattern support and automatic parent directory creation.
Enables monitoring and management of NGINX services through systemd service status checks and log retrieval.
Supports installation and execution via npm/npx package manager for streamlined deployment.
Provides dedicated tools for retrieving PM2 process logs, monitoring application status, and managing PM2-controlled services.
Recommended for secure storage and management of secrets and API credentials as part of security best practices.
Uses Zod schema validation for input validation and type safety of tool arguments and configuration.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP SFTP Orchestratorcheck the CPU and memory usage on my production server"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🚀 MCP Orchestrator — Serveur d'orchestration SSH/SFTP
Version : 9.0.1
License : MIT
Node : >= 18.0.0
Un serveur MCP (Model Context Protocol) qui donne à un agent IA la capacité d'exécuter des commandes SSH, des transferts SFTP, et du monitoring sur des serveurs distants. File d'attente persistante, pool de connexions SSH, exécution hybride synchrone/asynchrone.
📦 Installation
git clone https://github.com/fkom13/mcp-sftp-orchestrator.git
cd sftp-mcp
npm install
cp .env.example .env
# Éditer .env avec vos cheminsPrérequis : Node.js >= 18.0.0
Related MCP server: SSH MCP Server
⚙️ Configuration (.env)
Toutes les variables sont optionnelles. Les valeurs par défaut sont conçues pour un usage standard.
Variable | Défaut | Description |
|
| Dossier où sont stockés |
|
| Délai en secondes avant qu'une tâche passe en arrière-plan (retour immédiat au client, tâche continue) |
|
| Timeout SSH par défaut en secondes. |
|
| Timeout pour les commandes interactives. |
|
| Timeout maximum pour l'outil |
|
| Nombre max de connexions SSH simultanées par serveur |
|
| Nombre min de connexions SSH maintenues par serveur |
|
| Délai en ms avant fermeture d'une connexion SSH inactive (5 min) |
|
| Intervalle keepalive SSH en ms (30s) |
|
| Nombre maximum de jobs dans la file d'attente |
|
| Intervalle de sauvegarde de la queue sur disque en ms (5s) |
|
|
|
🔌 Connexion au client MCP (OpenCode, Claude Desktop, etc.)
{
"mcpServers": {
"orchestrator": {
"command": "node",
"args": ["/chemin/vers/sftp-mcp/server.js"],
"env": {
"MCP_DATA_DIR": "/chemin/vers/sftp-mcp/data"
}
}
}
}🧰 Référence des Outils (29 outils)
Diagnostic & Aide
Outil | Description |
| Guide complet : liste des outils, variables .env, astuces d'utilisation |
| Diagnostic complet (queue, pool, serveurs, APIs). |
Gestion des Serveurs
Outil | Description |
| Ajouter/modifier un alias de serveur (host, user, keyPath ou password) |
| Lister tous les serveurs configurés avec leurs détails |
| Supprimer un alias de serveur |
Gestion du Catalogue API
Outil | Description |
| Ajouter une API au catalogue de monitoring |
| Lister toutes les APIs configurées |
| Supprimer une API du catalogue |
| Test de santé d'une API via son alias (utilise SSH + curl) |
Exécution de Tâches
Outil | Description |
| Exécuter une commande SSH. Paramètre |
| SSH avec gestion des prompts (yes/no, menus, passwords). Supporte |
| Séquence de plusieurs commandes SSH sur le même serveur |
| Transfert SFTP fichier ou dossier. |
| Transferts SFTP multiples avec support de patterns glob ( |
Monitoring
Outil | Description |
| CPU, RAM, Disque d'un serveur |
| Statut des services systemd, Docker, PM2 |
| Statut Fail2Ban (toutes les jails ou une spécifique) |
| Test HTTP direct sur une URL (via SSH + curl) |
Logs
Outil | Description |
| Logs PM2 d'une application spécifique ou toutes |
| Logs d'un container Docker |
| Dernières lignes d'un fichier distant (équivalent |
File d'Attente & Suivi
Outil | Description |
| Voir toutes les tâches (en cours, en attente, terminées) |
| Détail complet d'une tâche par son ID |
| Historique des tâches exécutées, filtrable par alias |
| Relancer une tâche échouée ou crashée |
| Attendre la fin d'une tâche passée en arrière-plan (jusqu'à 600s) |
| Logs internes du système MCP |
| Statistiques de la file d'attente |
| Statistiques du pool de connexions SSH |
đź“– Guide d'Utilisation
Commandes longues (docker build, grosses installs)
1. Lancer avec timeout:0 → task_exec { alias: "vps", cmd: "docker build ...", timeout: 0 }
2. Si ça dépasse 120s → passe en arrière-plan avec un ID
3. Récupérer le résultat → task_wait { id: "abc123" }Transferts SFTP (façon FileZilla)
Fichier nouveau : upload/download sans rien de spécial
Fichier existe déjà : refusé avec message "Utilisez force:true pour écraser"
Avec
force: true: écrase sans rien demanderDossier → dossier : transfert récursif automatique
Patterns glob :
task_transfer_multiavec*.txt,data?.json, etc.
Mode interactif
{
"alias": "vps",
"cmd": "apt upgrade",
"interactive": true,
"autoRespond": true,
"responses": {
"Do you want to continue": "y",
"restart services": "yes"
}
}Les clés de responses supportent les expressions régulières. Ex: "[YyNn]\\\\?" → "y".
🏗️ Architecture
Client MCP (stdio ou HTTP)
│
server.js ─── 29 outils MCP enregistrés
│
├── queue.js ─── File d'attente persistante (JSON + backup auto)
├── ssh.js ───── Exécution SSH (pool ou connexion dédiée interactive)
├── sftp.js ──── Transferts SFTP (upload/download, glob, force)
├── sshPool.js ─ Pool de connexions SSH persistantes (max 5/serveur)
├── servers.js ─ CRUD alias de serveurs
├── apis.js ──── CRUD catalogue d'APIs
├── history.js ─ Historique des 500 dernières tâches
├── config.js ── Configuration centralisée (CLI > .env > defaults)
└── utils.js ─── Utilitaires (escapeShellArg)Cycle de vie d'un job
pending → running → completed / failed
↓ (si redémarrage pendant running)
crashed → retry → pending🔒 Sécurité
escapeShellArg(): toutes les URLs et chemins sont échappés avant d'être passés à curl/shellDétection de secrets en clair : au démarrage, un warning est loggé si
servers.jsonouapis.jsoncontiennent des mots de passe/clés APIRecommandation : utilisez des clés SSH (pas de mots de passe) et stockez les clés API dans Vaultwarden plutôt qu'en clair
đź§Ş Tests
node diagnose.js # Diagnostic complet
node test_mcp.js # Test smoke MCP
node test_features.js # Tests unitaires (queue, pool, glob, prompts, crash)🛣️ Roadmap
Version | Changement |
8.2.0 | Ménage, uniformisation erreurs, nettoyage logs |
8.3.0 | Transferts SFTP blindés (fichier vs dossier, force:true) |
8.4.0 | Timeouts longues opérations, task_wait |
8.5.0 | SSH interactif amélioré (menus, regex, password) |
8.6.0 | Sécurité (escapeShellArg, détection secrets) |
9.0.0 | Nettoyage, uniformisation finale, outil help, transport stdio uniquement |
9.0.1 | Corrections sécurité (injection shell, vestiges code) |
đź“„ Licence
MIT — Copyright (c) 2025-2026 Franck (fkom13)
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/fkom13/mcp-sftp-orchestrator'
If you have feedback or need assistance with the MCP directory API, please join our Discord server