小贴士:按下Ctrl+D 或 ⌘+D,一键收藏本站,方便下次快速访问!
3
最近更新:2个月前

通过使用存储在SQLite数据库中的凭证执行SSH命令,实现安全的远程服务器管理,无需离开对话界面即可提供命令执行和凭证管理工具。

SSH MCP 服务器

一个基于模型上下文协议(MCP)实现的 SSH 服务器。该服务器支持通过 MCP 协议进行安全的远程访问和命令执行。

功能特性

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

环境要求

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

安装指南

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

使用说明

配置

服务器使用 SQLite 数据库(ssh.db)存储 SSH 认证信息。数据库文件会在服务器启动时自动创建。

工具集

服务器提供以下工具:

ssh_exec

通过 SSH 执行命令。

输入参数:

  • host: 目标主机地址(必填)
  • command: 需要执行的命令(必填)
  • username: SSH 连接用户名(必填)
  • privateKeyPath: 私钥文件路径(必填)

使用示例:

json 复制代码
{
    "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: 连接用户名(必填)
  • privateKeyPath: 私钥文件路径(必填)

使用示例:

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

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

list_credentials

列出所有存储的 SSH 凭据。

输入参数:

使用示例:

json 复制代码
{
    "tool_name": "list_credentials",
    "arguments": {}
}

remove_credential

删除存储的 SSH 凭据。

输入参数:

  • name: 需要删除的凭据名称(必填)

使用示例:

json 复制代码
{
    "tool_name": "remove_credential",
    "arguments": {
        "name": "my_credential"
    }
}

启动服务器

bash 复制代码
npm start

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

项目结构

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

依赖项

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

开发指南

修改项目步骤:

  1. src/ 目录中进行更改
  2. 重新构建项目:
bash 复制代码
npm run build
  1. 启动服务器测试更改:
bash 复制代码
npm start

许可证

ISC

贡献指南

  1. Fork 代码库
  2. 创建特性分支
  3. 提交更改
  4. 推送到分支
  5. 创建新的 Pull Request