S

SSH-MCP服务器

@KinoThe-Kafkaesque/ssh-mcp-server
1 Stars 851 次浏览 KinoThe-Kafkaesque 更新于 2026-08-23

一种实现了模型上下文协议的服务器,它通过SSH启用安全的远程命令执行,并具有管理和使用SSH凭据的功能。

该服务暂未提供标准配置,请参考 README 手动接入

可用工具 (5 个)

该服务在 MCP 协议中暴露的工具,AI 可按需调用

ssh_exec 4 个参数 需填 4 项

Execute command over SSH using private key file path

必填参数:host、command、username、privateKeyPath

add_credential 4 个参数 需填 4 项

Add a new SSH credential with private key file path

必填参数:name、host、username、privateKeyPath

list_credentials

List all stored SSH credentials

该工具无需必填参数,直接调用即可

remove_credential 1 个参数 需填 1 项

Remove a stored SSH credential

必填参数:name

rsync_copy 4 个参数 需填 4 项

Copy files/directories between local and remote server via rsync

必填参数:credentialName、localPath、remotePath、direction

服务介绍

SSH MCP 服务器

这是一个使用模型上下文协议(MCP)实现的SSH服务器,它允许通过MCP协议进行安全的远程访问和执行。

功能

  • 使用MCP协议实现的SSH服务器
  • 集成SQLite数据库以实现数据持久化
  • 使用TypeScript实现,以确保类型安全并提供更好的开发体验

前提条件

  • Node.js(推荐v16或更高版本)
  • npm 或 yarn 包管理器
  • 开发时需要具备TypeScript知识

安装

  1. 克隆仓库:
git clone <repository-url>
cd ssh-server
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build

使用方法

配置

服务器使用一个SQLite数据库 (ssh.db) 来存储SSH凭证。当服务器启动时,该数据库文件将自动创建。

工具

服务器提供了以下工具:

ssh_exec

通过SSH执行命令。

输入参数:

  • host: 要连接到的主机。(必需)
  • command: 要执行的命令。(必需)
  • username: 用于SSH连接的用户名。(必需)
  • privateKeyPath: 私钥文件的路径。(必需)

示例用法:

{
    "tool_name": "ssh_exec",
    "arguments": {
        "host": "example.com",
        "command": "ls -l",
        "username": "user",
        "privateKeyPath": "/path/to/private/key"
    }
}

注意: privateKeyPath 必须是一个有效的私钥文件路径。

add_credential

添加一个新的SSH凭证。

输入参数:

  • name: 凭证的名称。(必需)
  • host: 要连接到的主机。(必需)
  • username: 用于SSH连接的用户名。(必需)
  • privateKeyPath: 私钥文件的路径。(必需)

示例用法:

{
    "tool_name": "add_credential",
    "arguments": {
        "name": "my_credential",
        "host": "example.com",
        "username": "user",
        "privateKeyPath": "/path/to/private/key"
    }
}

注意: privateKeyPath 必须是一个有效的私钥文件路径。

list_credentials

列出所有存储的SSH凭证。

输入参数:

示例用法:

{
    "tool_name": "list_credentials",
    "arguments": {}
}

remove_credential

移除一个已存储的SSH凭证。

输入参数:

  • name: 要移除的凭证名称。(必需)

示例用法:

{
    "tool_name": "remove_credential",
    "arguments": {
        "name": "my_credential"
    }
}

启动服务器

npm start

服务器将在配置的端口上运行(默认设置可以在源代码中修改)。

项目结构

  • src/ - 源代码目录
  • build/ - 编译后的JavaScript输出
  • node_modules/ - 项目依赖

依赖项

  • @modelcontextprotocol/sdk: MCP协议实现
  • sqlite3: SQLite数据库驱动
  • typescript: 支持TypeScript的开发依赖

开发

要对项目进行更改:

  1. src/目录下进行更改
  2. 重新构建项目:
npm run build
  1. 启动服务器以测试您的更改:
npm start

许可证

ISC

贡献

  1. 叉分仓库
  2. 创建您的功能分支
  3. 提交您的更改
  4. 推送到分支
  5. 创建新的拉取请求

相关 MCP 服务