SSH远程服务器管理工具

RunPod SSH MCP Server是一个允许通过SSH在远程RunPod GPU服务器上执行命令和传输文件的工具,适用于开发者和AI代理。

  • by markattarcolgate64
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 markattarcolgate64/runpod-ssh-mcp-server

使用说明

RunPod SSH MCP服务器-Mark Attar

我这样做是因为我厌倦了必须将RunPod输出复制粘贴到我的编码代理实例中

MCP服务器,允许Claude Code/其他编码代理通过SSH在远程RunPod GPU服务器上执行命令,并从服务器传输文件。

设置

# Install dependencies
cd ~/Developer/runpod-ssh-mcp-server
uv sync

快速开始

  1. 使用Claude Code注册MCP服务器(一次性):
claude mcp add --transport stdio --scope user runpod-ssh-gpu -- uv run ~/Developer/runpod-ssh-mcp-server/server.py
  1. 从RunPod的web UI复制SSH命令并将其粘贴到Claude中:

对于直接TCP模式,复制如下字符串(只有此模式支持SFTP&SCP):

“连接到我的pod: ssh root@192.168.1.10 -p 22345 -i ~/.ssh/id_ed25519" 对于SSH代理模式,复制中的字符串,如下所示:

“连接到我的pod: ssh oaplvaencc9qc0-64411be6@ssh.runpod.io -i ~/.ssh/id_ed25519"

或者,如果你的代理有一个好的浏览器MCP,它可能能够直接从RunPod中提取字符串。

就是这样——代理将解析字符串并自动保存连接配置。

连接模式

服务器支持两种连接模式,可从SSH字符串中自动检测到:

模式 SSH字符串 功能
直接 ssh root@<ip> -p <port> -i <key> 完整的SSH:exec,SFTP上传/下载
代理 ssh <podid>@ssh.runpod.io -i <key> 仅基于PTY的exec(无文件传输)

直接模式 用途 exec_command() 用于干净的stdout/stderr/exit_code。 代理模式 用途 invoke_shell() 基于标记的输出解析(RunPod的SSH代理需要)。

要切换Pod,只需拨打 connect 再次使用新的SSH字符串。

Paramiko用于SSH连接和SFTP上传/下载,而FastMCP用于打包MCP。

工具

工具 描述 模式
connect 从RunPod UI解析SSH字符串并保存连接配置 两者都有
run_command 在RunPod上执行shell命令 两者都有
upload_file 通过SFTP将本地文件上传到RunPod 仅限Direct
download_file 通过SFTP从RunPod下载文件 仅限Direct
start_background_job 在tmux会话中运行命令 两者
check_job 获取tmux会话的最新输出 两者都有

配置

这 connect 工具将配置保存到 ~/.config/runpod-ssh.json。您也可以手动创建此文件或使用环境变量(RUNPOD_HOST, RUNPOD_PORT, RUNPOD_USER, SSH_KEY_PATH)作为倒退。

使用MCP检查员进行测试

npx @modelcontextprotocol/inspector uv run server.py