Proxmox SSH命令执行服务

一个基于SSH的模型上下文协议(MCP)服务器,允许AI助手在Proxmox主机上执行命令,提供安全的SSH密钥认证和危险命令拦截功能。

  • by Zaptimist
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 Zaptimist/mcp-proxmox

使用说明

Proxmox SSH MCP服务器

一种模型上下文协议(MCP)服务器,使AI助手能够通过SSH在Proxmox主机上执行命令。

特性

  • 基于SSH密钥的身份验证(代码中没有密码)
  • 内置安全:危险命令被阻止
  • 单一工具: proxmox_run_host_command

先决条件

  • Node.js 18+
  • SSH密钥对(~/.ssh/id_ed25519)
  • 公钥已添加到Proxmox服务器 ~/.ssh/authorized_keys

安装

git clone https://github.com/Zaptimist/mcp-proxmox.git
cd mcp-proxmox
npm install

配置

通过环境变量设置Proxmox主机或编辑 index.js:

选项1:环境变量(推荐)

export PROXMOX_HOST=192.168.1.100
export PROXMOX_USER=root
export PROXMOX_PORT=22
export PROXMOX_KEY_PATH=~/.ssh/id_ed25519

选项2:直接编辑index.js

const sshConfig = {
  host: process.env.PROXMOX_HOST || '192.168.1.100',  // Your Proxmox IP
  username: process.env.PROXMOX_USER || 'root',
  port: parseInt(process.env.PROXMOX_PORT) || 22,
  privateKeyPath: process.env.PROXMOX_KEY_PATH || path.join(os.homedir(), '.ssh', 'id_ed25519')
};

SSH密钥设置

MCP服务器将自动检测SSH密钥是否丢失或未配置,并提供设置说明。但这是手动过程:

  1. 生成密钥(如果您没有密钥):

    ssh-keygen -t ed25519
    
  2. 将公钥复制到Proxmox:

    Windows(PowerShell):

    type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@YOUR_PROXMOX_IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
    

    Linux/Mac:

    ssh-copy-id root@YOUR_PROXMOX_IP
    
  3. 测试连接:

    ssh root@YOUR_PROXMOX_IP "echo 'SSH key auth works!'"
    

如果您还没有设置SSH密钥,当您尝试使用它时,MCP服务器将返回有用的说明。

MCP客户端配置

添加到您的MCP客户端配置中(例如。, ~/.kiro/settings/mcp.json):

{
  "mcpServers": {
    "proxmox": {
      "command": "node",
      "args": ["/path/to/mcp-proxmox/index.js"],
      "env": {
        "PROXMOX_HOST": "192.168.1.100"
      },
      "disabled": false,
      "autoApprove": ["proxmox_run_host_command"]
    }
  }
}

用法

服务器公开了一个工具:

proxmox_run_host_command

在Proxmox主机上执行命令。

输入:

  • command (string,必填):要执行的命令

例子:

{
  "command": "qm list"
}

答复:

{
  "success": true,
  "command": "qm list",
  "host": "192.168.1.100",
  "exitCode": 0,
  "stdout": "VMID NAME STATUS MEM(MB) ...",
  "stderr": ""
}

安全

为了安全起见,以下命令被阻止:

  • VM/容器删除(qm destroy, pct destroy)
  • 文件操作(rm, rmdir, dd)
  • 系统操作(shutdown, reboot, halt)
  • 包裹移除(apt remove, apt purge)
  • 服务管理(systemctl stop)
  • 存储删除(zfs destroy, lvremove)

必须通过Proxmox web界面手动执行破坏性操作。

许可证

麻省理工学院