使用说明

项目简介

SSH MCP Server 是一个基于 Model Context Protocol (MCP) 实现的服务器,专注于提供 SSH 远程操作能力。它允许 LLM 客户端通过标准化的 MCP 协议,安全地执行 SSH 命令和管理 SSH 密钥凭据。该服务器使用 SQLite 数据库持久化存储密钥信息,并通过工具 (Tools) 的形式暴露 SSH 功能,使得 LLM 可以方便地集成和利用 SSH 能力。

主要功能点

  • SSH 命令执行 (ssh_exec): 允许 LLM 客户端通过指定主机、命令、用户名和私钥路径,远程执行 SSH 命令并获取执行结果。
  • SSH 密钥凭据管理:
    • 添加凭据 (add_credential): 存储 SSH 密钥凭据,包括凭据名称、主机、用户名和私钥路径,方便后续使用和管理。
    • 列出凭据 (list_credentials): 查看已存储的所有 SSH 密钥凭据信息。
    • 删除凭据 (remove_credential): 根据凭据名称删除已存储的 SSH 密钥凭据。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/KinoThe-Kafkaesque/ssh-mcp-server
    cd ssh-mcp-server
  2. 安装依赖: 确保已安装 Node.js (v16 或更高版本) 和 npm 或 yarn。

    npm install
  3. 构建项目:

    npm run build

服务器配置

MCP 客户端需要配置以下信息以连接到 SSH MCP Server:

{
  "serverName": "ssh-server",
  "command": "node",
  "args": ["build/index.js"]
}

配置参数说明:

  • 'serverName': 服务器名称,此处为 "ssh-server"。
  • 'command': 启动服务器的命令,由于是 Node.js 项目,此处为 "node"。
  • 'args': 启动命令的参数,指向编译后的服务器入口文件 'build/index.js'。

注意:

  • 首次启动服务器时,会在用户Home目录下(例如 '~' 目录)自动创建 SQLite 数据库文件 'ssh.db' 用于存储 SSH 凭据。
  • 私钥文件路径 ('privateKeyPath') 应为服务器能够访问的绝对路径。

基本使用方法

  1. 启动服务器: 在仓库根目录下执行:

    npm start

    服务器将在标准输入/输出 (stdio) 上运行,并等待 MCP 客户端连接。

  2. MCP 客户端调用工具: MCP 客户端可以使用 'CallToolRequest' 请求调用服务器提供的工具,例如:

    • 执行 SSH 命令 (ssh_exec):

      {
          "method": "call_tool",
          "params": {
              "tool_name": "ssh_exec",
              "arguments": {
                  "host": "example.com",
                  "command": "ls -l",
                  "username": "user",
                  "privateKeyPath": "/path/to/your/private/key"
              }
          }
      }
    • 添加 SSH 凭据 (add_credential):

      {
          "method": "call_tool",
          "params": {
              "tool_name": "add_credential",
              "arguments": {
                  "name": "my_server_credential",
                  "host": "another-example.com",
                  "username": "another_user",
                  "privateKeyPath": "/path/to/another/private/key"
              }
          }
      }
    • 列出 SSH 凭据 (list_credentials):

      {
          "method": "call_tool",
          "params": {
              "tool_name": "list_credentials",
              "arguments": {}
          }
      }
    • 删除 SSH 凭据 (remove_credential):

      {
          "method": "call_tool",
          "params": {
              "tool_name": "remove_credential",
              "arguments": {
                  "name": "my_server_credential"
              }
          }
      }

    客户端发送这些 JSON-RPC 请求到 SSH MCP Server,服务器会执行相应的操作并将结果以 JSON-RPC 响应的形式返回。

信息

分类

开发者工具