返回市场
我的MCP SSH服务器

我的MCP SSH服务器

作者:ffpy4 星标更新:2025-09-19

项目介绍

my-mcp-ssh

EN 文档 CN 文档

基于模型上下文协议(MCP)的SSH连接工具,允许大型语言模型通过SSH安全地连接到远程服务器,并通过MCP协议执行文件操作。

功能

  • SSH 连接管理:连接到远程SSH服务器
  • 命令执行:在远程服务器上执行命令
  • 文件传输:上传和下载文件
  • 会话管理:维护和关闭SSH会话

安装

依赖项

  • Python >= 3.12
  • uv 包管理器
# 克隆项目
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连接的默认值,在频繁连接同一服务器或自动化环境中非常有用:

  • SSH_HOST: SSH服务器主机名或IP地址
  • SSH_PORT: SSH服务器端口
  • SSH_USERNAME: SSH用户名
  • SSH_PASSWORD: SSH密码(如果使用密码认证)
  • SSH_KEY_PATH: SSH私钥文件路径(如果使用密钥认证)
  • SSH_KEY_PASSPHRASE: SSH私钥密码短语(如果需要)

何时使用SSH环境变量:

  • 重复连接:当多次连接到同一服务器时
  • CI/CD流水线:用于自动化部署脚本
  • 开发环境:设置常用的服务器默认值
  • 容器部署:配置默认值而不修改代码

注意:传递给connect工具的参数始终覆盖环境变量。

服务器配置

可以配置额外的服务器行为:

  • SESSION_TIMEOUT: 会话超时时间(分钟),默认为30分钟
  • MAX_OUTPUT_LENGTH: 命令输出的最大长度(字符数),默认为5000个字符

SSH凭证文件

为了更好的安全性,您可以将SSH凭证存储在一个本地配置文件中,而不是作为参数传递密码。

  1. 复制示例文件:
cp ssh-credentials.json.example ssh-credentials.json
  1. 编辑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} - 匹配列出的任意选项

认证优先级顺序:

  1. 传递给连接工具的参数(password, key_path
  2. 凭证文件中的精确匹配(username@host
  3. 凭证文件中的模式匹配(通配符)
  4. 环境变量密码(SSH_PASSWORD
  5. 环境变量密钥(SSH_KEY_PATH
  6. 默认SSH密钥(如果存在~/.ssh/id_rsa

安全性:

  • 文件权限自动设置为600(仅限所有者读写)
  • 文件被添加到.gitignore以防止意外提交

注意:

  • 凭证文件更改立即生效,无需重启服务器
  • 每次尝试连接时都会重新读取文件

工具列表

connect

连接到SSH服务器

参数:

  • host: SSH服务器主机名或IP地址(可选)
  • port: SSH服务器端口(可选,默认为22)
  • username: SSH用户名(可选)
  • password: 用于认证的SSH密码(可选)
  • key_path: 用于认证的SSH私钥文件路径(可选)
  • key_passphrase: 如果需要,SSH私钥密码短语(可选)

disconnect

从SSH会话断开连接

参数:

  • session_id: 要断开的会话ID

list_sessions

列出所有活动的SSH会话

参数:

execute

在SSH服务器上执行命令

参数:

  • session_id: 会话ID
  • command: 要执行的命令
  • stdin: 提供给命令的输入字符串,默认为空
  • timeout: 命令超时时间(秒),默认为60秒

upload

上传文件到SSH服务器

参数:

  • session_id: 会话ID
  • local_path: 本地文件路径
  • remote_path: 远程文件路径

download

从SSH服务器下载文件

参数:

  • session_id: 会话ID
  • remote_path: 远程文件路径
  • local_path: 本地文件路径

调试

运行./inspector.sh进行在线调试

许可证

my-mcp-ssh 根据Apache许可证2.0版发布