SSH服务器工具

一个提供SSH访问远程服务器的MCP服务器,支持AI工具如Claude Desktop或VS Code安全连接到VPS进行网站管理。

  • by mbarki-abd
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 mbarki-abd/SSH-MCP

使用说明

MCP SSH服务器

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

特性

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

先决条件

  • Node.js 18或更高版本
  • npm或纱线
  • 与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桌面配置

  1. 打开克劳德桌面
  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代码配置(如果使用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 -连接状态消息

例子:

Connect to my server at example.com using username 'admin' and password authentication

ssh_exec

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

参数:

  • connectionId (必填)-来自ssh_connect的ID
  • command (必填)-执行命令
  • cwd (可选)-工作目录
  • timeout (可选)-命令超时(毫秒)(默认值:60000)

退货:

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

例子:

Run "ls -la /var/www/html" on the server

ssh_upload_file

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

参数:

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

退货:

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

ssh下载文件

从远程服务器下载文件。

参数:

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

退货:

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

ssh列表文件

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

参数:

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

退货:

  • files -具有属性的文件对象数组:
    • filename -文件名
    • isDirectory -布尔值,指示它是否是一个目录
    • size -文件大小
    • lastModified -上次修改时间

ssh断开连接

关闭SSH连接。

参数:

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

退货:

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

Claude使用示例

  1. 连接到您的服务器:

    Please connect to my VPS at example.com using username 'admin' and my SSH key at ~/.ssh/id_rsa
    
  2. 检查服务器状态:

    Run the command "systemctl status nginx" to check web server status
    
  3. 上传网站文件:

    Upload my local file ~/websites/index.html to /var/www/html/index.html on the server
    
  4. 列出网站文件:

    Show me all files in the /var/www/html directory
    
  5. 下载备份:

    Download the file /var/backups/website-backup.tar.gz to my local Downloads folder
    
  6. 完成后断开连接:

    Please disconnect from the SSH session
    

计划中的Ubuntu网站管理工具

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

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

安全说明

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

故障排除

服务器无法启动

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

连接问题

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

Claude桌面集成

  • 确保配置中的路径是绝对的
  • 配置更改后重新启动Claude Desktop
  • 检查开发人员控制台以获取错误消息

发展

要修改或扩展服务器,请执行以下操作:

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

以开发模式运行

在开发过程中进行快速测试:

npm run dev

贡献

欢迎对其他工具和功能的贡献。请随时提交pull请求或开放问题以进行增强和bug修复。

许可证

MIT许可证