/ 目录 / 演练场 / mcp-ssh-manager
● 社区 bvisible ⚡ 即开即用

mcp-ssh-manager

作者 bvisible · bvisible/mcp-ssh-manager

用 Claude 管理 Linux 服务器集群的 37 个 SSH 工具 — 执行、上传、下载、备份、健康监控 — 支持 SSH 密钥和 agent 认证

mcp-ssh-manager 是一个 Node SSH 包装器,暴露 37 个工具用于跨多个远程服务器进行 DevOps 风格的操作。除了基础的执行/上传/下载,它还提供了备份、健康监控和数据库操作辅助工具。通过 .env 或 TOML 配置命名主机。

为什么要用

核心特性

实时演示

实际使用效果

ssh-manager.replay ▶ 就绪
0/0

安装

选择你的客户端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "ssh-manager": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-ssh-manager"
      ],
      "_inferred": true
    }
  }
}

打开 Claude Desktop → Settings → Developer → Edit Config。保存后重启应用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "ssh-manager": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-ssh-manager"
      ],
      "_inferred": true
    }
  }
}

Cursor 使用与 Claude Desktop 相同的 mcpServers 格式。项目级配置优先于全局。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "ssh-manager": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-ssh-manager"
      ],
      "_inferred": true
    }
  }
}

点击 Cline 侧栏中的 MCP Servers 图标,然后选 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "ssh-manager": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-ssh-manager"
      ],
      "_inferred": true
    }
  }
}

格式与 Claude Desktop 相同。重启 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "ssh-manager",
      "command": "npx",
      "args": [
        "-y",
        "mcp-ssh-manager"
      ]
    }
  ]
}

Continue 使用服务器对象数组,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "ssh-manager": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "mcp-ssh-manager"
        ]
      }
    }
  }
}

加入 context_servers。Zed 保存后热重载。

claude mcp add ssh-manager -- npx -y mcp-ssh-manager

一行命令搞定。用 claude mcp list 验证,claude mcp remove 卸载。

使用场景

实战用法: mcp-ssh-manager

在聊天中对 VPS 服务器集群进行分诊

👤 单人运维人员、小型 SRE 团队 ⏱ ~15 min intermediate

何时使用: 你管理 5-20 个 VPS,需要快速检查一遍。

前置条件
  • SSH 密钥在 agent 中ssh-add ~/.ssh/id_ed25519
  • 命名主机配置 — TOML 配置,映射 name → host/user/key path
步骤
  1. 并行执行健康检查
    对我集群中的每个服务器运行:uptime、df -h、free -h、journalctl 的最后错误。总结所有需要关注的内容。✓ 已复制
    → 按主机汇总 + 标记出现的问题
  2. 深入诊断问题
    在服务器 X 磁盘 95% 满的情况下,查找 /var 下最大的 10 个目录。✓ 已复制
    → du 输出
  3. 修复或上报
    删除 /var/log/old-*.gz 是否安全?运行前请向我确认。✓ 已复制
    → 计划 + 等待确认

结果: 5 分钟内完成整个集群的分诊。

注意事项
  • 命令超时只是建议性的 — 挂起的命令可能会留下运行的进程 — 对于可能挂起的任何操作,显式使用 timeout 30 <cmd>

从远程服务器进行单次备份

👤 家庭实验室管理员、个人开发者 ⏱ ~15 min intermediate

何时使用: 你意识到重要的 VPS 没有备份,现在需要手动备份一次。

步骤
  1. 确定要备份的目标
    在服务器 'homelab' 中,列出 /home 和 /var 下我应该备份的目录。排除日志和缓存。✓ 已复制
    → 目标列表
  2. 创建并下载备份
    将它们 tar+gzip 到 /tmp/backup-$(date +%F).tgz,然后下载到我的本地 ~/Backups/。✓ 已复制
    → 备份已下载到本地

结果: 在一次对话中完成临时备份。

注意事项
  • 大型备份会填满远程 /tmp — 直接流式传输:ssh host 'tar cz ...' > local.tgz(通过 exec + download 实现)
搭配使用: filesystem

在不离开聊天的情况下将小应用部署到 VPS

👤 独立开发者发布副业项目 ⏱ ~10 min intermediate

何时使用: 没有 Coolify、没有 Dokku — 只有一个裸 VPS 和你的代码。

步骤
  1. 上传代码
    将我的 ./dist/ 目录上传到服务器 'myvps' 的 /opt/myapp/,保留权限。✓ 已复制
    → 上传完成
  2. 重启服务
    在 myvps 上运行 sudo systemctl restart myapp,然后检查状态。将状态输出发送给我。✓ 已复制
    → active (running) 或 error

结果: 2 分钟内完成部署。

注意事项
  • 需要 sudo 密码 — 在 /etc/sudoers.d/ 中为特定服务配置 NOPASSWD

组合

与其他 MCP 搭配,撬动十倍杠杆

ssh-manager + filesystem

下载远程文件 + 本地编辑 + 上传回去

下载 /etc/nginx/sites-enabled/example.conf,编辑添加 gzip_comp_level 6,上传并重启 nginx。✓ 已复制

工具

此 MCP 暴露的能力

工具输入参数何时调用成本
execute host, command, timeout?: int 任何远程 shell 命令 free
upload host, local_path, remote_path 发送文件或目录 free
download host, remote_path, local_path 从服务器拉取文件 free
sync host, local, remote, delete?: bool 通过 rsync 进行批量目录同步 free
health_check host 快速检查 free

成本与限制

运行它的成本

API 配额
无限制
每次调用 Token 数
执行命令的输出可能很大 — | tail -50 是你的好帮手
费用
免费,MIT
提示
限制长输出:cmd | head -100,永远不要 cat 整个日志文件。

安全

权限、密钥、影响范围

最小权限: 仅具有所需远程权限的 SSH 密钥
凭据存储: 私钥存放在 ~/.ssh;有口令的密钥使用 SSH agent
数据出站: 流量到你配置的主机
切勿授予: 不要将与 root 等效的密钥授予可以接入互联网的 agent

故障排查

常见错误与修复

Permission denied (publickey)

密钥不在 agent 中,或远程 ~/.ssh/authorized_keys 配置错误。使用 ssh-add -l 验证。

验证: ssh -i key host 'echo ok' directly first
命令超时但进程仍在远程运行

timeout 包装命令:execute('host', 'timeout 30 long-command')

验证: ssh in and `ps aux`
rsync 需要 sshpass

在本地安装 sshpass 或为该主机切换到 SSH 密钥认证。

替代方案

mcp-ssh-manager 对比其他方案

替代方案何时用它替代权衡
通过终端使用原始 ssh你不使用 LLM 进行运维手动操作,但容易理解
Ansible你用可重复的 playbook 管理 50+ 个主机更重量级;聊天驱动的临时操作不是它的强项

更多

资源

📖 阅读 GitHub 上的官方 README

🐙 查看未解决的 issue

🔍 浏览全部 400+ MCP 服务器和 Skills