使用说明
RunPod SSH MCP服务器-Mark Attar
我这样做是因为我厌倦了必须将RunPod输出复制粘贴到我的编码代理实例中
MCP服务器,允许Claude Code/其他编码代理通过SSH在远程RunPod GPU服务器上执行命令,并从服务器传输文件。
设置
# Install dependencies
cd ~/Developer/runpod-ssh-mcp-server
uv sync
快速开始
- 使用Claude Code注册MCP服务器(一次性):
claude mcp add --transport stdio --scope user runpod-ssh-gpu -- uv run ~/Developer/runpod-ssh-mcp-server/server.py
- 从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
