Token导航 LogoToken导航TokenDH.com
MCP SFTP Orchestrator logo
运维云端未说明官方级别未说明来源级核验

MCP SFTP Orchestrator

MCP Server

一个强大的SSH/SFTP任务编排服务器,支持多服务器管理、远程命令执行、文件传输和系统监控。

工具数

24

提示词数

0

GitHub Stars

0

资源数

0
系统监控JavaScript云端部署

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

fkom13

提供方

fkom13

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

🚀 MCP Orchestrator-SSH/SFTP编排服务器

](https://github.com/fkom13/mcp-sftp-orchestrator) ![License](LICENSE) ](https://nodejs.org)

用于协调远程任务的强大MCP(模型上下文协议)服务器。它管理SSH和SFTP连接,这是一个持久的任务队列,并通过与LLM兼容的stdio接口公开了一套丰富的服务器管理、监控和命令执行工具。

✨ 主要特点

🔐 服务器管理

  • ✅ 具有别名的多服务器配置
  • ✅ 支持SSH密钥或密码身份验证
  • ✅ 配置的安全存储

📡 SSH执行

  • ✅ 简单命令和序列
  • ✅ 具有提示自动响应的交互模式
  • ✅ 日志流(PM2、Docker、Tail、JournalCTL)
  • ✅ 持续断开连接
  • ✅ 失败时自动重试

📁 SFTP传输

  • ✅ 上传/下载文件和文件夹
  • ✅ 支持模式glob(*.txt, **/*.js)
  • ✅ 一个订单中的多次转账
  • ✅ 自动创建父文件夹

📊 监控和API

  • ✅ 系统监控(CPU、RAM、磁盘)
  • ✅ 服务法规(systemd、Docker、PM2)
  • ✅ 具有身份验证的HTTP/HTTPS健康检查
  • ✅ 可定制API目录
  • ✅ Fail2Ban状态

🎯 任务管理

  • ✅ 具有自动备份的持久队列
  • ✅ 混合执行(同步/异步)
  • ✅ 订单历史
  • ✅ 手动和自动重试
  • ✅ 详细统计

______________________________________________________________________

📦 安装

使用此工具有两种方法:

方法1:通过NPM(推荐)

这是最简单的方法。该工具将根据要求下载并运行 npx.

向您的客户注册此MCP(例如: gemini-cli)具有以下配置:

{
  "mcpServers": {
    "orchestrator": {
      "command": "npx",
      "args": [
        "@fkom13/mcp-sftp-orchestrator"
      ],
      "env": {
        "MCP_DATA_DIR": "/chemin/absolu/vers/votre/dossier/de/donnees"
      }
    }
  }
}

重要 替换: /chemin/absolu/vers/votre/dossier/de/donnees 通过机器上的真实路径,例如 ~/.config/mcp-orchestrator.

方法2:来自源代码(Git)

如果要更改代码,此方法非常有用。

  1. 克隆存储库:
   git clone https://github.com/fkom13/mcp-sftp-orchestrator.git
   cd mcp-sftp-orchestrator
  1. 安装依赖项:
   npm install
  1. 配置MCP客户端 将lancer le脚本本地化:
   {
     "mcpServers": {
       "orchestrator": {
         "command": "node",
         "args": [
           "/chemin/vers/mcp-sftp-orchestrator/server.js"
         ],
         "env": {
           "MCP_DATA_DIR": "/chemin/vers/mcp-sftp-orchestrator/data"
         }
       }
     }
   }

______________________________________________________________________

🛠️ 配置

服务器配置按优先级顺序进行:

  1. MCP客户端环境变量 (乐集团 env 在JSON中): 最高优先级这是定义数据文件夹的推荐方法。
  2. 文件 .env :如果在本地启动项目(方法2),则可以创建文件 .env 在根上。如果MCP客户端未定义变量,则将使用该变量。
  3. 默认值 :如果未定义任何内容,则默认数据文件夹将为 ~/.config/mcp-orchestrator.

可用变量:

  • MCP_DATA_DIR:(推荐)存储数据(服务器配置、历史记录等)的文件夹。
  • MCP_SYNC_TIMEOUT_S:长任务进入后台之前的延迟(秒)。默认情况下: 30.

______________________________________________________________________

🧰 工具参考(API)

以下是MCP服务器公开的工具的完整列表。

服务器管理

  • server_add:保存或更新服务器的连接信息。
  • server_list:显示所有已配置服务器别名的列表。
  • server_remove:从配置中删除服务器别名。

任务的执行

  • task_exec:执行SSH(同步/异步混合)命令。
  • task_transfer:通过SFTP(同步/异步混合)传输文件或文件夹。
  • task_exec_interactive:执行交互式ssh命令(处理提示) yes/no等等)。
  • task_exec_sequence:在同一服务器上连续运行多个SSH命令。
  • task_transfer_multi:使用模式支持传输多个文件/文件夹 glob.

监测和诊断

输出描述
get_system_resources检索重要的系统指标(CPU、RAM、磁盘)。
get_services_status获取服务状态(systemd、docker、pm2)。
get_fail2ban_status获取Fail2Ban服务信息。
check_api_healthURL上的直接HTTP测试(无目录)。

日志恢复

  • get_pm2_logs:获取PM2日志的快捷方式。
  • get_docker_logs:从Docker容器获取日志的快捷方式。
  • tail_file:显示远程文件的最后几行。

队列管理(队列)

  • task_queue:显示队列中所有任务的状态。
  • task_status:按任务ID获取任务的详细信息。
  • task_history:显示最近启动的任务的历史记录。
  • task_retry:重新启动失败或崩溃的任务。
  • queue_stats:显示任务队列统计信息。

API管理(外部监控)

  • api_add:将API添加到监控目录。
  • api_list:显示所有配置的API。
  • api_remove:从目录中删除API。
  • api_check:在API上运行健康测试。

MCP服务器管理

  • task_logs:显示MCP系统本身的日志。
  • pool_stats:显示SSH连接池的统计信息。

______________________________________________________________________

先决条件

  • Node.js>=18.0.0
  • npm瓯纱
  • SSH访问目标服务器

安装速度快


# Cloner le dépôt
git clone https://github.com/fkom13/mcp-sftp-orchestrator.git
cd mcp-sftp-orchestrator

# Installer les dépendances
npm install

# Copier et configurer l`environnement
cp .env.example .env
nano .env

# Démarrer le serveur
node server.js

⚙️ Configuration
Variables d`environnement (.env)
Bash

# Répertoire de données (configs, historique, queue)
MCP_DATA_DIR="/home/user/.config/mcp-orchestrator"

# Délai avant passage en arrière-plan (secondes)
MCP_SYNC_TIMEOUT_S=30

# Timeouts d`exécution (millisecondes)
MCP_DEFAULT_CMD_TIMEOUT_MS=300000      # 5 minutes
MCP_INTERACTIVE_CMD_TIMEOUT_MS=120000  # 2 minutes

# Pool de connexions SSH
MAX_CONNECTIONS_PER_SERVER=5
MIN_CONNECTIONS_PER_SERVER=1
IDLE_TIMEOUT=300000           # 5 minutes
KEEP_ALIVE_INTERVAL=30000     # 30 secondes

# Queue
MAX_QUEUE_SIZE=1000
SAVE_INTERVAL=5000            # Sauvegarde toutes les 5s
HISTORY_RETENTION=2678400000  # 31 jours

# Debug log wraper erreor in stdio.error
MCP_DEBUG=false

Structure des données
text

~/.config/mcp-orchestrator/
├── servers.json      # Configurations serveurs
├── apis.json         # Catalogue d`APIs
├── queue.json        # Queue de tâches
├── queue.backup.json # Backup de sécurité
└── history.json      # Historique

🛠️ Guide d`Utilisation
1. Configuration d`un serveur
JavaScript

// Avec clé SSH
{
  "tool": "server_add",
  "arguments": {
    "alias": "prod_vps",
    "host": "192.168.1.100",
    "user": "admin",
    "keyPath": "/home/user/.ssh/id_rsa"
  }
}

// Avec mot de passe
{
  "tool": "server_add",
  "arguments": {
    "alias": "staging",
    "host": "staging.example.com",
    "user": "deploy",
    "password": "SecureP@ssw0rd"
  }
}
2. Exécution de commandes
Commande simple
JavaScript

{
  "tool": "task_exec",
  "arguments": {
    "alias": "prod_vps",
    "cmd": "uptime && df -h"
  }
}
Commande interactive
JavaScript

{
  "tool": "task_exec_interactive",
  "arguments": {
    "alias": "prod_vps",
    "cmd": "sudo apt-get update && sudo apt-get upgrade",
    "autoRespond": true,
    "responses": {
      "Do you want to continue": "Y",
      "Restart services": "yes"
    }
  }
}
Séquence de commandes
JavaScript

{
  "tool": "task_exec_sequence",
  "arguments": {
    "alias": "prod_vps",
    "commands": [
      "cd /var/www/app",
      "git pull origin main",
      "npm install",
      "pm2 restart app"
    ],
    "continueOnError": false
  }
}
3. Transferts SFTP
Upload simple
JavaScript

{
  "tool": "task_transfer",
  "arguments": {
    "alias": "prod_vps",
    "direction": "upload",
    "local": "/home/user/config.json",
    "remote": "/etc/app/config.json"
  }
}
Transferts multiples avec glob
JavaScript

{
  "tool": "task_transfer_multi",
  "arguments": {
    "alias": "prod_vps",
    "direction": "upload",
    "files": [
      {
        "local": "/home/user/logs/*.log",
        "remote": "/var/log/app/"
      },
      {
        "local": "/home/user/configs/**/*.json",
        "remote": "/etc/app/configs/"
      }
    ]
  }
}
4. Monitoring
Ressources système
JavaScript

{
  "tool": "get_system_resources",
  "arguments": {
    "alias": "prod_vps"
  }
}
// Retourne: CPU, RAM, Disque, Load Average
Statut des services
JavaScript

{
  "tool": "get_services_status",
  "arguments": {
    "alias": "prod_vps"
  }
}
// Retourne: systemd, Docker, PM2
Logs Docker
JavaScript

{
  "tool": "get_docker_logs",
  "arguments": {
    "alias": "prod_vps",
    "container": "nginx",
    "lines": 100,
    "since": "1h",
    "timestamps": true
  }
}
Logs PM2
JavaScript

{
  "tool": "get_pm2_logs",
  "arguments": {
    "alias": "prod_vps",
    "app": "api-server",
    "lines": 200,
    "errors": true
  }
}
5. Catalogue d`APIs
Ajouter une API
JavaScript

{
  "tool": "api_add",
  "arguments": {
    "alias": "main_api",
    "url": "https://api.example.com",
    "health_check_endpoint": "/health",
    "health_check_method": "GET",
    "auth_method": "api_key",
    "api_key": "your-api-key-here",
    "auth_header_name": "X-API-Key",
    "auth_scheme": ""
  }
}
Vérifier une API
JavaScript

{
  "tool": "api_check",
  "arguments": {
    "alias": "main_api",
    "server_alias": "prod_vps"
  }
}
// Retourne: status (UP/DOWN), http_code, response_time_ms
6. Gestion de la Queue
Voir toutes les tâches
JavaScript

{
  "tool": "task_queue",
  "arguments": {}
}
Statut d`une tâche
JavaScript

{
  "tool": "task_status",
  "arguments": {
    "id": "a3f8c2d1"
  }
}
Réessayer une tâche
JavaScript

{
  "tool": "task_retry",
  "arguments": {
    "id": "a3f8c2d1"
  }
}
Statistiques
JavaScript

{
  "tool": "queue_stats",
  "arguments": {}
}
// Retourne: total, byStatus, byType, avgDuration, successRate
Diagnostic complet
JavaScript

{
  "tool": "system_diagnostics",
  "arguments": {
    "verbose": true
  }
}
🏗️ Architecture
Composants Principaux
text

┌─────────────────────────────────────────────┐
│           MCP Server (server.js)            │
│  • Enregistrement des tools                 │
│  • Validation des inputs (Zod)              │
│  • Gestion des requêtes/réponses           │
└─────────────┬───────────────────────────────┘
              │
    ┌─────────┴─────────┐
    │                   │
┌───▼────┐       ┌──────▼────────┐
│ SSH    │       │ SFTP          │
│ Module │       │ Module        │
└───┬────┘       └──────┬────────┘
    │                   │
    └─────────┬─────────┘
              │
      ┌───────▼──────────┐
      │  SSH Pool        │
      │  • Connexions    │
      │  • Keep-alive    │
      │  • Auto-cleanup  │
      └───────┬──────────┘
              │
      ┌───────▼──────────┐
      │  Queue Manager   │
      │  • Jobs          │
      │  • History       │
      │  • Persistence   │
      └──────────────────┘
Flux d`Exécution
text

Client → Tool Call → Validation → Job Creation
                                       ↓
                              Pool Get Connection
                                       ↓
                              Execute (SSH/SFTP)
                                       ↓
                         ┌─────────────┴──────────────┐
                         │                            │
                    Quick Job                    Long Job
                    ( 30s)
                         │                            │
                    Sync Return               Async Background
                         │                            │
                    Update Queue              Update Queue
                         │                            │
                    Save History              Save History
📊 Gestion des Erreurs
Codes d`erreur
Code	Description	Action recommandée
CONNECTION_FAILED	Échec de connexion SSH	Vérifier host/port/réseau
AUTH_FAILED	Authentification refusée	Vérifier user/key/password
COMMAND_TIMEOUT	Commande timeout	Augmenter timeout ou vérifier commande
TRANSFER_FAILED	Échec de transfert	Vérifier chemins et permissions
QUEUE_FULL	Queue saturée	Nettoyer ou augmenter MAX_QUEUE_SIZE
RETRY_LIMIT_EXCEEDED	Max tentatives atteint	Vérifier la cause et retry manuellement
Exemple de réponse d`erreur
JSON

{
  "error": true,
  "code": "CONNECTION_FAILED",
  "message": "Impossible de se connecter au serveur",
  "details": {
    "alias": "prod_vps",
    "host": "192.168.1.100",
    "reason": "ECONNREFUSED"
  },
  "timestamp": "2024-11-14T10:30:45.123Z"
}
🔒 Sécurité
Bonnes pratiques
Clés SSH

Utilisez des clés plutôt que des mots de passe
Protégez vos clés privées (chmod 600)
Utilisez des passphrases
Permissions

Limitez l`accès au répertoire MCP_DATA_DIR
Ne commitez jamais .env ou les fichiers de données
Réseau

Utilisez un VPN ou bastion pour l`accès SSH
Configurez Fail2Ban sur les serveurs
Limitez les IPs autorisées
Mots de passe

Stockez-les dans des variables d`environnement
Utilisez des gestionnaires de secrets (Vault, etc.)
Fichiers à exclure du versioning
gitignore

# .gitignore
.env
data/
*.json
!package.json
node_modules/
logs/
*.log
.DS_Store
🧪 Tests
Bash

# Tests unitaires
npm test

# Tests de fonctionnalités
node test_features.js

# Tests de connexion (nécessite un serveur configuré)
npm run test:integration
🐛 Débogage
Activer les logs verbeux
Bash

# Dans .env
MCP_DEBUG=true
Consulter les logs système
JavaScript

{
  "tool": "task_logs",
  "arguments": {
    "level": "error",
    "search": "timeout",
    "limit": 100
  }
}
Diagnostic complet
JavaScript

{
  "tool": "system_diagnostics",
  "arguments": {
    "verbose": true
  }
}
🚀 Performance
Optimisations
Pool de connexions: Réutilisation des connexions SSH
Queue persistante: Sauvegarde incrémentale toutes les 5s
Cleanup automatique: Nettoyage des vieilles tâches toutes les heures
Keep-alive: Maintien des connexions actives
Métriques typiques
Opération	Temps moyen
Commande simple	200-500ms
Upload 10MB	2-5s
Download 50MB	5-15s
Pool get connection	< 50ms (si disponible)
📈 Roadmap
 v6.0: Pool de connexions SSH
 v7.0: Gestion des prompts interactifs
 v8.0: Streaming de logs amélioration et correction bug path
 v9.0: Interface Web de monitoring
 v10.0: Support multi-utilisateurs
 v11.0: Chiffrement E2E des données sensibles
🤝 Contribution
Les contributions sont les bienvenues !

Fork le projet
Créez une branche (git checkout -b feature/amazing)
Committez (git commit -m `Add amazing feature`)
Push (git push origin feature/amazing)
Ouvrez une Pull Request
📝 Licence
MIT © [Votre Nom]

💬 Support
📧 Email: support@example.com
🐛 Issues: GitHub Issues
📖 Docs: Documentation complète
🙏 Remerciements
Model Context Protocol
ssh2
ssh2-sftp-client

目录标签

目录标签

系统监控JavaScript云端部署SSH管理本地部署SFTP传输远程任务编排服务器管理

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

api-key

部署方式(deploymentType,部署类型)

remote-capable

工具数量(toolCount,工具数)

24

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明api-keyremote-capable

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP