基于模型上下文协议(MCP)的SSH连接工具,允许大型语言模型通过SSH安全地连接到远程服务器,并通过MCP协议执行文件操作。
# 克隆项目
git clone https://github.com/ffpy/my-mcp-ssh.git
# 进入项目目录
cd my-mcp-ssh
# 安装依赖项
uv sync
{
"mcpServers": {
"my-mcp-ssh": {
"command": "uv",
"args": [
"--directory",
"<your_path>/my-mcp-ssh",
"run",
"src/main.py"
],
"env": {}
}
}
}
环境变量提供了SSH连接的默认值,在频繁连接同一服务器或自动化环境中非常有用:
SSH_HOST: SSH服务器主机名或IP地址SSH_PORT: SSH服务器端口SSH_USERNAME: SSH用户名SSH_PASSWORD: SSH密码(如果使用密码认证)SSH_KEY_PATH: SSH私钥文件路径(如果使用密钥认证)SSH_KEY_PASSPHRASE: SSH私钥密码短语(如果需要)何时使用SSH环境变量:
注意:传递给connect工具的参数始终覆盖环境变量。
可以配置额外的服务器行为:
SESSION_TIMEOUT: 会话超时时间(分钟),默认为30分钟MAX_OUTPUT_LENGTH: 命令输出的最大长度(字符数),默认为5000个字符为了更好的安全性,您可以将SSH凭证存储在一个本地配置文件中,而不是作为参数传递密码。
cp ssh-credentials.json.example ssh-credentials.json
ssh-credentials.json并添加您的实际凭证:{
"root@192.168.1.100": "your_password",
"admin@web-[0-9].example.com": "web_password",
"deploy@server-{dev,test,staging}.company.com": "deploy_password",
"admin@*.internal.network": "internal_password"
}
支持的模式:
* - 匹配任意字符? - 匹配单个字符[0-9] - 匹配任意数字{dev,test,staging} - 匹配列出的任意选项认证优先级顺序:
password, key_path)username@host)SSH_PASSWORD)SSH_KEY_PATH)~/.ssh/id_rsa)安全性:
.gitignore以防止意外提交注意:
连接到SSH服务器
参数:
host: SSH服务器主机名或IP地址(可选)port: SSH服务器端口(可选,默认为22)username: SSH用户名(可选)password: 用于认证的SSH密码(可选)key_path: 用于认证的SSH私钥文件路径(可选)key_passphrase: 如果需要,SSH私钥密码短语(可选)从SSH会话断开连接
参数:
session_id: 要断开的会话ID列出所有活动的SSH会话
参数:
在SSH服务器上执行命令
参数:
session_id: 会话IDcommand: 要执行的命令stdin: 提供给命令的输入字符串,默认为空timeout: 命令超时时间(秒),默认为60秒上传文件到SSH服务器
参数:
session_id: 会话IDlocal_path: 本地文件路径remote_path: 远程文件路径从SSH服务器下载文件
参数:
session_id: 会话IDremote_path: 远程文件路径local_path: 本地文件路径运行./inspector.sh进行在线调试
my-mcp-ssh 根据Apache许可证2.0版发布