返回市场
SSH-MCP

SSH-MCP

作者:mixelpixx11 星标更新:2025-06-16

项目介绍

MCP SSH 服务器

这是一个提供对远程服务器SSH访问的模型上下文协议(MCP)服务器,允许像Claude Desktop或VS Code这样的AI工具安全地连接到您的VPS进行网站管理。

特性

  • 基于密码或密钥的身份验证的SSH连接管理
  • 具有超时处理的远程命令执行
  • 通过SFTP上传和下载文件
  • 目录列表
  • 安全连接处理
  • 兼容Claude Desktop、VS Code和其他兼容MCP的客户端

预备条件

  • Node.js 18或更高版本
  • npm 或 yarn
  • 兼容Windows、macOS和Linux

安装

  1. 克隆仓库:

    git clone https://github.com/yourusername/mcp-ssh-server.git
    cd mcp-ssh-server
    
  2. 安装依赖项:

    npm install
    
  3. 构建项目:

    npm run build
    
  4. 全局安装(可选):

    npm install -g .
    

配置

Claude Desktop配置

  1. 打开Claude Desktop
  2. 转到设置 > 开发者(或按Ctrl+Shift+D)
  3. 编辑MCP配置
  4. 添加以下配置:
{
  "mcpServers": {
    "ssh-server": {
      "command": "node",
      "args": ["/path/to/mcp-ssh-server/build/index.js"],
      "env": {
        "NODE_NO_WARNINGS": "1"
      }
    }
  }
}

重要:/path/to/mcp-ssh-server/build/index.js替换为您构建的index.js文件的绝对路径。

VS Code配置(如果使用MCP扩展)

在工作区中创建或编辑.vscode/mcp.json

{
  "mcpServers": {
    "ssh-server": {
      "command": "node",
      "args": ["/path/to/mcp-ssh-server/build/index.js"]
    }
  }
}

可用工具

ssh_connect

建立与远程服务器的SSH连接。

参数:

  • host(必需) - 主机名或IP地址
  • username(必需) - SSH用户名
  • password(可选) - SSH密码
  • privateKeyPath(可选) - 私钥文件路径
  • passphrase(可选) - 私钥的密码短语
  • port(可选) - SSH端口(默认:22)
  • connectionId(可选) - 连接的唯一标识符

返回值:

  • success - 表示成功的布尔值
  • connectionId - 后续命令使用的ID
  • message - 连接状态消息

示例:

使用用户名'admin'和密码认证连接到example.com上的我的服务器

ssh_exec

在远程服务器上执行命令。

参数:

  • connectionId(必需) - 来自ssh_connect的ID
  • command(必需) - 要执行的命令
  • cwd(可选) - 工作目录
  • timeout(可选) - 命令超时时间(以毫秒为单位,默认:60000)

返回值:

  • code - 退出代码
  • signal - 终止进程的信号(如果有)
  • stdout - 标准输出
  • stderr - 标准错误

示例:

在服务器上运行"ls -la /var/www/html"

ssh_upload_file

将文件上传到远程服务器。

参数:

  • connectionId(必需) - 来自ssh_connect的ID
  • localPath(必需) - 本地文件路径
  • remotePath(必需) - 远程目标路径

返回值:

  • success - 表示成功的布尔值
  • message - 上传状态消息

ssh_download_file

从远程服务器下载文件。

参数:

  • connectionId(必需) - 来自ssh_connect的ID
  • remotePath(必需) - 远程文件路径
  • localPath(必需) - 本地目标路径

返回值:

  • success - 表示成功的布尔值
  • message - 下载状态消息

ssh_list_files

列出远程服务器目录中的文件。

参数:

  • connectionId(必需) - 来自ssh_connect的ID
  • remotePath(必需) - 要列出的目录路径

返回值:

  • files - 文件对象数组,包含属性:
    • filename - 文件名
    • isDirectory - 表示是否为目录的布尔值
    • size - 文件大小
    • lastModified - 最后修改时间

ssh_disconnect

关闭SSH连接。

参数:

  • connectionId(必需) - 来自ssh_connect的ID

返回值:

  • success - 表示成功的布尔值
  • message - 断开连接状态消息

使用示例与Claude

  1. 连接到您的服务器:

    请使用用户名'admin'和位于~/.ssh/id_rsa的SSH密钥连接到我在example.com上的VPS
    
  2. 检查服务器状态:

    运行命令"systemctl status nginx"以检查Web服务器状态
    
  3. 上传网站文件:

    将我本地的~/websites/index.html文件上传到服务器上的/var/www/html/index.html
    
  4. 列出网站文件:

    显示/var/www/html目录中的所有文件
    
  5. 下载备份:

    将/var/backups/website-backup.tar.gz文件下载到我的本地Downloads文件夹
    
  6. 完成时断开连接:

    请断开SSH会话
    

计划的Ubuntu网站管理工具

基础已经就绪,可以在src/ubuntu-website-tools.ts中添加Ubuntu网站管理工具。未来增强功能将包括:

  • 网站服务器控制(Apache/Nginx)
  • 系统包更新
  • 备份网站部署
  • SSL证书管理(Let's Encrypt)
  • 服务器性能监控
  • 网站备份功能
  • WordPress管理
  • 防火墙(UFW)管理

安全注意事项

  • 安全存储SSH私钥
  • 尽可能使用基于密钥的身份验证
  • 限制SSH访问特定的IP地址
  • 保持您的服务器更新
  • 使用强密码或密码短语
  • 考虑在.env文件中设置环境变量以保护敏感信息

故障排除

服务器无法启动

  • 检查Node.js是否已安装:node --version
  • 验证所有依赖项是否已安装:npm install
  • 重新构建项目:npm run build

连接问题

  • 验证目标上的SSH服务器是否正在运行
  • 检查防火墙设置
  • 确认凭据正确
  • 首先手动测试SSH连接

Claude Desktop集成

  • 确保配置中的路径是绝对路径
  • 在更改配置后重启Claude Desktop
  • 检查开发者控制台中的错误消息

开发

要修改或扩展服务器:

  1. 编辑src/中的源文件
  2. 重新构建:npm run build
  3. 测试您的更改
  4. 重启Claude Desktop或VS Code以应用更改

开发模式运行

为了在开发期间快速测试:

npm run dev

贡献

欢迎提交额外工具和功能的贡献。请随时提交拉取请求或打开问题以提出改进和修复错误。

许可证

MIT许可证