返回市场
ssh-mcp

ssh-mcp

作者:blakerouse2 星标更新:2025-11-04

项目介绍

SSH MCP

SSH MCP 是一个在本地主机上运行的 MCP 服务器,提供管理并与远程 SSH 主机交互的能力。它支持将主机组织成组,并同时在多个主机上执行命令。

工具

主机管理

  • add_host - 将新的 Linux 或 Windows 主机添加到 SSH 配置中,自动检测操作系统。连接字符串中的用户名和密码是可选的 - 如果未提供,则使用当前用户和 SSH 代理进行身份验证。
  • remove_host - 根据组名和主机名从 SSH 配置中移除主机。
  • get_groups - 获取 SSH 配置中的所有组列表。
  • get_hosts - 获取 SSH 配置中的主机列表。可以按组过滤。
  • get_os_info - 获取 Linux 和 Windows 主机的缓存操作系统信息。您可以指定单个主机或整个组。
  • update_os_info - 更新 Linux 和 Windows 主机的缓存操作系统信息。您可以指定单个主机或整个组。

命令执行

  • perform_command - 登录到远程机器并执行命令。您可以指定单个主机或整个组。超过 30 秒的命令会自动移到后台执行。使用 background=true 立即在后台运行。

命令管理

  • get_command_status - 根据命令ID获取后台命令的状态和结果。如果没有提供ID,则返回最近的命令。
  • list_commands - 列出所有后台命令及其当前状态。对于跟踪长时间运行的命令很有用。
  • cancel_command - 根据命令ID取消正在运行的后台命令。

特性

  • 跨平台支持 - 支持 Linux 和 Windows 远程主机,自动检测操作系统
  • 基于组的组织 - 将主机组织成组以方便管理
  • 多种认证方法 - 支持密码、SSH 代理和 SSH 密钥文件(如 ~/.ssh/id_rsa, id_ed25519 等)
  • 安全主机验证 - 使用 ~/.ssh/known_hosts 进行主机密钥验证,并自动添加主机
  • 并发执行 - 在多个主机上同时执行命令
  • 自动后台执行 - 超过 30 秒的命令会自动移到后台执行,并返回命令ID以便追踪状态
  • 持久存储 - 使用 BadgerDB 进行高效的本地存储

限制

  • SSH 代理支持仅限于 Unix(SSH_AUTH_SOCK) - 密码和密钥文件认证在所有平台上都可用
  • 远程主机可以是 Linux 或 Windows(自动检测操作系统)

如何设置

检出仓库:

$ git clone https://github.com/blakerouse/ssh-mcp

构建二进制文件:

$ go build .

更新 Claude Desktop 的 MCP 配置:

{
  "mcpServers": {
    "ssh": {
      "command": "<PATH_TO_BUILT_BINARY>"
    }
  }
}

重启 Claude Desktop

如何使用

添加主机

向组中添加主机(支持多种格式 - ssh:// 前缀是可选的):

将主机添加到生产组,连接地址为 10.0.1.5
将名为 web01 的主机添加到生产组,连接地址为 user@10.0.1.5:2222
将主机添加到测试组,连接地址为 user:pass@10.0.1.10

列出组和主机

列出所有组:

显示所有组

列出所有主机:

列出我所有的主机

列出特定组中的主机:

显示生产组中的主机

获取操作系统信息

获取组内所有主机的操作系统信息:

显示生产组的操作系统信息

获取特定主机的操作系统信息:

显示生产组:web01 和 生产组:web02 的操作系统信息

执行命令

在组内的所有主机上运行命令:

在生产组上运行 "uptime"
检查测试组的磁盘空间

在特定主机上运行命令:

在生产组:web01 和 生产组:web02 上运行 "systemctl status nginx"

在 30 秒内完成的命令会立即返回结果。较长的命令会自动移到后台:

在生产组上运行 "apt-get update && apt-get upgrade -y"
# 如果这需要 >30 秒,您将得到一个命令ID以供稍后检查

强制命令立即在后台运行:

在生产组上以后台方式运行 "apt-get update && apt-get upgrade -y"

管理后台命令

检查后台命令的状态:

显示命令 abc-123-def 的状态
显示最后一个命令的状态

列出所有后台命令:

列出所有后台命令
显示所有正在运行的命令

取消正在运行的命令:

取消命令 abc-123-def
停止正在运行的命令 abc-123-def

更新操作系统信息

更新缓存的操作系统信息:

更新生产组的操作系统信息
刷新测试组:db01 的操作系统信息

管理主机

移除主机:

移除生产组:web01
从测试组移除主机 web02