使用说明
@nl4ever/sshmcp
让AI管理您的远程服务器。 一个模型上下文协议(MCP)服务器,为AI助手提供完全的SSH访问权限——通过自然对话执行命令、传输文件、同时管理多个服务器。
You: "Deploy the latest build to production server"
AI: connects → uploads build → restarts service → verifies status
特性
- 21工具 --连接、执行、上传、下载、写入文件等
- 连接池 --同时操作多个服务器,每个命令都标记有
server_id - 零令牌文件传输 --基于SFTP路径的传输,文件内容永远不会进入AI上下文
- 目录上传 --自动tar.gz压缩→ 上传→ 远程解压(对于许多小文件来说速度很快)
- 异步传输+进度 --具有实时进度跟踪功能的大文件后台传输
- 快速连接 --未保存配置的临时连接,返回
host:port作为临时ID - SOCKS4/5代理 --每连接代理支持
- 跳转主机 --SSH ProxyJump用于堡垒/网关访问
- 多重认证 --密码、私钥、ssh代理、键盘交互(OTP/2FA)
快速开始
全局安装
npm install -g @nl4ever/sshmcp
添加到克劳德代码
claude mcp add sshmcp sshmcp
添加到克劳德桌面
编辑 claude_desktop_config.json:
{
"mcpServers": {
"sshmcp": {
"command": "npx",
"args": ["-y", "@nl4ever/sshmcp"]
}
}
}
添加到光标
转到“设置”→ MCP服务器→ Add:
{
"sshmcp": {
"command": "npx",
"args": ["-y", "@nl4ever/sshmcp"]
}
}
工具概述
连接管理
| 工具 | 说明 |
|---|---|
list_servers |
列出所有已配置的服务器和活动连接 |
get_server |
查看服务器配置详细信息 |
add_server |
添加/更新服务器配置(密码、密钥、代理、OTP) |
update_server |
修改服务器配置(仅限要更改的传递字段) |
delete_server |
删除服务器 |
rename_server |
重命名服务器ID |
connect |
手动连接(通常不需要,工具自动连接) |
quick_connect |
临时连接,返回 host:port 作为ID |
disconnect |
断开特定服务器或所有连接 |
test_connection |
在不影响现有连接的情况下测试连接 |
命令执行
| 工具 | 说明 |
|---|---|
execute |
在远程服务器上运行shell命令(具有可配置的超时) |
文件操作
| 工具 | 说明 |
|---|---|
read_file |
读取远程文件内容(可选行范围) |
write_file |
将文本内容写入远程文件 |
upload_file |
上传本地文件到远程(支持异步模式) |
upload_directory |
自动压缩上传目录→ 转移→ 减压 |
download_file |
将远程文件下载到本地(支持异步模式) |
download_directory |
远程压缩下载目录→ 转移→ 局部减压 |
transfer_status |
检查异步传输的进度(大小/速度/ETA) |
代理管理
| 工具 | 说明 |
|---|---|
list_proxies |
列出所有SOCKS代理预设 |
add_proxy |
添加SOCKS4/5代理预设 |
delete_proxy |
删除代理预设 |
连接池:多服务器操作
所有操作工具都需要 server_id 参数。连接池自动管理连接,无需手动连接/断开连接:
AI: execute(server_id="prod", command="nginx -s reload") ← auto-connects to prod
AI: execute(server_id="dev", command="tail -f /var/log/app.log") ← auto-connects to dev, prod stays
AI: execute(server_id="prod", command="curl localhost") ← reuses prod connection
对于临时服务器,请使用 quick_connect 返回 host:port 作为ID:
AI: quick_connect(host="1.2.3.4", username="root", password="***")
→ "Connected: root@1.2.3.4:22, use server_id="1.2.3.4:22""
AI: execute(server_id="1.2.3.4:22", command="df -h")
AI: disconnect(server_id="1.2.3.4:22")
异步传输(大文件)
对于大文件,启用后台传输模式以避免阻塞:
AI: upload_file(server_id="prod", local_path="big.tar.gz", remote_path="/data/", async_transfer=true)
→ "Background upload started: tf_1"
AI: transfer_status("tf_1")
→ "🔄 Uploading: 638.2 MB / 1.2 GB (53.2%) — 12.4 MB/s, ETA 46s"
AI: transfer_status("tf_1")
→ "✅ Upload complete: 1.2 GB, 98s, 12.3 MB/s"
默认情况下,小文件使用同步模式,不需要配置。
连接示例
密码认证
AI: add_server(server_id="prod", name="Production", host="10.0.0.1", username="deploy", password="***")
AI: execute(server_id="prod", command="systemctl status nginx")
私钥身份验证
AI: add_server(server_id="aws", name="AWS EC2", host="ec2-xx.compute.amazonaws.com", username="ubuntu", private_key="~/.ssh/id_rsa")
快速连接(未保存配置)
AI: quick_connect(host="192.168.1.100", username="root", password="***")
→ server_id="192.168.1.100:22"
AI: execute(server_id="192.168.1.100:22", command="df -h")
AI: disconnect(server_id="192.168.1.100:22")
通过SOCKS5代理
AI: add_proxy(proxy_id="tunnel", name="SSH Tunnel", host="127.0.0.1", port=1080, type="5")
AI: add_server(server_id="internal", ..., proxy="tunnel")
通过跳转主机
AI: add_server(server_id="bastion", name="Bastion", host="bastion.example.com", username="admin", private_key="~/.ssh/id_rsa")
AI: add_server(server_id="internal", name="Internal DB", host="10.0.0.5", username="dbadmin", password="***", jump_host="bastion")
配置位置
服务器和代理配置存储在:
~/.ssh-mcp/config.json
密码以明文形式存储。对于生产使用,首选私钥身份验证。
需求
- Node.js>=18
- MCP兼容客户端(克劳德代码、克劳德桌面、光标等)
- 具有SSH访问权限的远程服务器
许可证
麻省理工学院
