项目简介

'mcp_linux_ssh' 是一个基于 Model Context Protocol (MCP) 的服务器,旨在让AI助手能够安全、高效地与远程Linux系统进行交互。它通过SSH协议,为AI模型提供远程命令执行、文件读取以及系统管理的能力,将复杂的系统操作转化为AI可理解和调用的工具与资源。

主要功能点

  • 远程命令执行: 允许AI助手在指定的远程Linux主机上运行任何命令,并获取其输出。这使得AI能够执行诊断、服务管理(如启动/停止Nginx)、软件包安装等任务。
  • 远程文件访问: 提供统一资源标识符 (URI) 模板,使AI助手能够轻松读取远程Linux系统上的文件内容,例如配置文件 ('/etc/nginx/nginx.conf') 或日志文件 ('/var/log/syslog')。
  • 灵活的SSH认证: 利用用户现有的SSH配置和密钥进行认证,支持无密码连接,保障通信安全。用户只需确保本地SSH配置正确,AI即可借用这些权限。
  • AI系统管理员角色: 内置一个Linux系统管理员的AI角色指令,帮助AI更好地理解运维上下文,并以专业的姿态执行诊断和修复任务。

安装步骤

  1. 前置条件:

    • 确保您的系统已安装 'Rust' 编程语言的工具链 (版本 1.70 或更高)。
    • 您的系统上已安装 'SSH' 客户端。
    • 您已配置好SSH访问目标Linux系统,并强烈建议设置SSH密钥实现无密码认证,以提高安全性和便利性。
  2. 克隆仓库: 打开终端,执行以下命令克隆项目仓库:

    git clone https://github.com/subpop/mcp_linux_ssh
    cd mcp_linux_ssh
  3. 构建项目: 在项目根目录下执行构建命令:

    cargo build --release

    构建完成后,可执行文件将在 'target/release/mcp_linux_ssh' 路径下生成。

服务器配置

MCP服务器需要通过MCP客户端(如Claude Desktop, VSCode MCP扩展等)启动和连接。以下是一个通用的配置示例,请根据您使用的MCP客户端的具体要求进行调整。核心是提供服务器可执行文件的路径。

例如,在您的MCP客户端的配置中,添加如下MCP服务器条目:

{
  "mcpServers": {
    "linux-ssh": {
      "command": "/path/to/your/mcp_linux_ssh/target/release/mcp_linux_ssh",
      "args": [],
      "env": {
        "RUST_LOG": "info" // 可选:设置环境变量以查看服务器日志
      }
    }
  }
}
  • 'linux-ssh': 您为这个MCP服务器实例定义的名称,可自定义。
  • 'command': 指向您在安装步骤中构建生成的可执行文件的完整路径。
  • 'args': 启动服务器时要传递的额外命令行参数(通常为空数组 '[]')。
  • 'env': 启动服务器时要设置的环境变量(可选,例如设置 'RUST_LOG: "info"' 可以查看详细日志输出)。

基本使用方法

  1. 配置SSH: 在使用前,确保您的本地系统已正确配置SSH,能够无密码连接到目标远程Linux服务器。这通常涉及生成SSH密钥并将其复制到远程服务器,以及在 '~/.ssh/config' 文件中配置主机别名,以便简化连接命令。

  2. 通过AI助手交互: 配置并启动MCP客户端后,您的AI助手将自动发现 'mcp_linux_ssh' 服务器提供的能力。

    • 执行命令: AI助手可以使用 'run_command_ssh' 工具,指定远程主机、用户名和要执行的命令及参数。AI会根据您的自然语言指令,智能地构建并调用此工具。

      • 工具参数示例:
        • 'remote_host': '"myserver"' (对应您SSH配置中的主机别名或IP地址)
        • 'remote_user': '"admin"' (可选,指定远程用户,默认为当前用户)
        • 'command': '"ls"'
        • 'args': '["-la", "/home"]' AI将通过调用此工具来获取 '/home' 目录的详细列表。
    • 读取文件: AI助手可以通过 'ssh://' URI 格式直接请求读取远程文件内容。AI客户端会识别此URI格式并自动通过 'mcp_linux_ssh' 服务器获取内容。

      • URI 示例:
        • 'ssh://[email protected]/etc/nginx/nginx.conf' (读取web服务器的Nginx配置)
        • 'ssh://192.168.1.100/var/log/syslog' (读取IP为192.168.1.100的系统日志)

AI助手将根据您的指令,自动调用这些工具和资源来与远程Linux系统交互,帮助您进行故障排查、配置管理和日常运维。

信息

分类

开发者工具