基于 Model Context Protocol (MCP) 的 SSH 服务器工具集,支持在远程服务器上执行命令和传输文件。
本工具支持两种连接 SSH 服务器的方式:
直接在工具调用中指定服务器信息,适合临时操作:
{
"tool": "ssh_execute_command",
"arguments": {
"host": "192.168.1.100",
"port": 22,
"username": "root",
"password": "your_password",
"command": "docker ps"
}
}预先配置服务器信息,通过名称调用,适合频繁使用的服务器:
- 创建
ssh-mcp.config.json配置文件 - 使用
server参数指定服务器名称
{
"tool": "ssh_execute_command",
"arguments": {
"server": "production",
"command": "docker ps"
}
}优势:
- 无需每次输入密码
- 支持多服务器配置
- 通过
ssh_list_servers工具查询可用服务器 - Agent 可自主发现并使用服务器
npm install
npm run build配置文件位置:C:\Users\<用户名>\.config\opencode\opencode.jsonc
{
"mcp": {
"ssh-mcp": {
"type": "local",
"command": ["node", "path/to/ssh-mcp/dist/index.js"],
"enabled": true
}
}
}配置文件位置:C:\Users\<用户名>\.claude\CLAUDE.json
{
"mcpServers": {
"ssh-mcp": {
"command": "node",
"args": ["/path/to/ssh-mcp/dist/index.js"],
"disabled": false
}
}
}配置文件位置:
- Windows:
%APPDATA%/Claude/claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"ssh-mcp": {
"command": "node",
"args": ["/path/to/ssh-mcp/dist/index.js"],
"disabled": false
}
}
}{
"servers": {
"production": {
"host": "192.168.1.100",
"port": 22,
"username": "root",
"password": "your_password",
"timeout": 60000
},
"development": {
"host": "192.168.1.50",
"port": 2222,
"username": "admin",
"password": "dev_password"
}
},
"defaultServer": "development"
}SSH_MCP_CONFIG环境变量指定路径- 当前项目目录
ssh-mcp.config.json - 当前项目目录
.ssh-mcp-config.json - 用户主目录
.ssh-mcp-config.json
| 参数 | 必填 | 默认值 | 说明 |
|---|---|---|---|
host |
是 | - | SSH 服务器地址 |
port |
否 | 22 | SSH 端口 |
username |
是 | - | 用户名 |
password |
是 | - | 密码 |
timeout |
否 | 30000 | 超时时间(毫秒) |
{
"tool": "ssh_list_servers"
}使用配置文件中的服务器:
{
"tool": "ssh_execute_command",
"arguments": {
"server": "production",
"command": "docker ps -a"
}
}直接指定参数:
{
"tool": "ssh_execute_command",
"arguments": {
"host": "192.168.1.100",
"port": 22,
"username": "root",
"password": "123",
"command": "df -h",
"response_format": "markdown"
}
}指定工作目录:
{
"tool": "ssh_execute_command",
"arguments": {
"server": "production",
"working_dir": "/var/www/app",
"command": "npm run build"
}
}使用配置文件:
{
"tool": "ssh_upload_file",
"arguments": {
"server": "production",
"local_path": "./config/app.yml",
"remote_path": "/etc/myapp/config.yml"
}
}直接指定参数:
{
"tool": "ssh_upload_file",
"arguments": {
"host": "192.168.1.100",
"port": 22,
"username": "root",
"password": "123",
"local_path": "./deploy.sh",
"remote_path": "/opt/deploy/deploy.sh"
}
}从服务器下载日志文件:
{
"tool": "ssh_download_file",
"arguments": {
"server": "production",
"remote_path": "/var/log/app/error.log",
"local_path": "./logs/error.log"
}
}指定输出格式:
{
"tool": "ssh_download_file",
"arguments": {
"server": "development",
"remote_path": "/etc/nginx/nginx.conf",
"local_path": "./config/nginx.conf",
"response_format": "json"
}
}部署应用到服务器:
{
"tool": "ssh_upload_directory",
"arguments": {
"server": "production",
"local_path": "./dist",
"remote_path": "/var/www/myapp"
}
}同步配置目录:
{
"tool": "ssh_upload_directory",
"arguments": {
"server": "development",
"local_path": "./config",
"remote_path": "/etc/myapp/config"
}
}下载服务器日志目录:
{
"tool": "ssh_download_directory",
"arguments": {
"server": "production",
"remote_path": "/var/log/myapp",
"local_path": "./logs"
}
}备份项目目录:
{
"tool": "ssh_download_directory",
"arguments": {
"server": "production",
"remote_path": "/opt/project",
"local_path": "./backup/project"
}
}| 工具 | 说明 |
|---|---|
ssh_list_servers |
列出所有已配置的服务器 |
ssh_execute_command |
执行命令 |
ssh_upload_file |
上传文件 |
ssh_download_file |
下载文件 |
ssh_upload_directory |
上传目录 |
ssh_download_directory |
下载目录 |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
server |
string | 否 | 服务器名称(配置文件) |
host |
string | 否 | SSH 服务器地址 |
port |
number | 否 | SSH 端口,默认 22 |
username |
string | 否 | 用户名 |
password |
string | 否 | 密码 |
timeout |
number | 否 | 超时时间(毫秒) |
command |
string | 是 | 要执行的命令 |
working_dir |
string | 否 | 工作目录 |
response_format |
string | 否 | 输出格式(markdown/json) |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
server |
string | 否 | 服务器名称(配置文件) |
host |
string | 否 | SSH 服务器地址 |
port |
number | 否 | SSH 端口,默认 22 |
username |
string | 否 | 用户名 |
password |
string | 否 | 密码 |
timeout |
number | 否 | 超时时间(毫秒) |
local_path |
string | 是 | 本地文件路径 |
remote_path |
string | 是 | 远程目标路径 |
response_format |
string | 否 | 输出格式(markdown/json) |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
server |
string | 否 | 服务器名称(配置文件) |
host |
string | 否 | SSH 服务器地址 |
port |
number | 否 | SSH 端口,默认 22 |
username |
string | 否 | 用户名 |
password |
string | 否 | 密码 |
timeout |
number | 否 | 超时时间(毫秒) |
remote_path |
string | 是 | 远程文件路径 |
local_path |
string | 是 | 本地目标路径 |
response_format |
string | 否 | 输出格式(markdown/json) |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
server |
string | 否 | 服务器名称(配置文件) |
host |
string | 否 | SSH 服务器地址 |
port |
number | 否 | SSH 端口,默认 22 |
username |
string | 否 | 用户名 |
password |
string | 否 | 密码 |
timeout |
number | 否 | 超时时间(毫秒) |
local_path |
string | 是 | 本地目录路径 |
remote_path |
string | 是 | 远程目标目录 |
response_format |
string | 否 | 输出格式(markdown/json) |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
server |
string | 否 | 服务器名称(配置文件) |
host |
string | 否 | SSH 服务器地址 |
port |
number | 否 | SSH 端口,默认 22 |
username |
string | 否 | 用户名 |
password |
string | 否 | 密码 |
timeout |
number | 否 | 超时时间(毫秒) |
remote_path |
string | 是 | 远程目录路径 |
local_path |
string | 是 | 本地目标目录 |
response_format |
string | 否 | 输出格式(markdown/json) |