使用说明

项目简介

本项目 'linux-mcp-server' 是一个基于 Spring AI 框架构建的 MCP (Model Context Protocol) 服务器,旨在为大型语言模型 (LLM) 应用提供在 Linux 系统上执行 Shell 命令的功能。它允许 LLM 通过 MCP 协议调用预定义的工具来执行本地或远程 Linux 主机上的 shell 命令,从而扩展 LLM 的能力边界,使其能够与 Linux 系统进行交互。

主要功能点

  • 本地 Shell 命令执行: 支持在 MCP 服务器运行的 Linux 系统上执行 Shell 命令。
  • 远程 Shell 命令执行: 支持通过 SSH 连接到远程 Linux 主机并执行 Shell 命令。
  • 主机配置管理: 通过 'host.config' 文件集中管理远程主机的连接信息,方便快捷地配置和管理远程执行目标。
  • 工具注册与发现: 使用 Spring AI 的 '@Tool' 注解将 Shell 命令执行功能注册为 MCP 工具,供 LLM 客户端发现和调用。
  • Spring Boot 框架: 基于成熟的 Spring Boot 框架开发,易于部署和扩展。

安装步骤

  1. 环境准备: 确保已安装 JDK 17 或更高版本以及 Maven。
  2. 下载代码: 从 GitHub 仓库 https://github.com/MartinDai/linux-mcp-server 克隆代码到本地。
    git clone https://github.com/MartinDai/linux-mcp-server.git
    cd linux-mcp-server
  3. 编译打包: 使用 Maven 构建项目,生成可执行的 JAR 文件。
    mvn clean package
    构建成功后,JAR 文件通常位于 'target' 目录下,例如 'linux-mcp-server-0.0.1-SNAPSHOT.jar'。

服务器配置

MCP 客户端需要配置以下信息才能连接到 'linux-mcp-server' 服务器。由于该服务器基于 Spring Boot 开发,并默认使用 HTTP 或其他 Spring Boot 支持的协议暴露服务(但代码中未明确展示 MCP 协议的具体实现方式,推测可能通过 Spring AI 框架做了抽象),以下提供一种通用的 Spring Boot 应用启动配置方式,你需要根据实际情况调整。

MCP 客户端配置 (JSON 格式):

{
  "serverName": "linux-shell-server",
  "command": "java",
  "args": [
    "-jar",
    "path/to/linux-mcp-server-0.0.1-SNAPSHOT.jar"
  ],
  "protocol": "stdio"
}

参数说明:

  • 'serverName': 服务器名称,可以自定义,用于在 MCP 客户端中标识该服务器。例如: '"linux-shell-server"'。
  • 'command': 启动服务器的命令,这里是 'java',表示使用 Java 运行时环境。
  • 'args': 启动命令的参数列表。
    • '"-jar"': 指定运行 JAR 文件。
    • '"path/to/linux-mcp-server-0.0.1-SNAPSHOT.jar"': 请替换为实际的 JAR 文件路径。 这应该是你编译打包后生成的 JAR 文件在服务器上的绝对路径或相对路径。
  • 'protocol': MCP 客户端与服务器通信的协议。 根据 MCP 定义和 Spring Boot 的常用方式,这里假设使用 'stdio' 协议,表示通过标准输入/输出流进行通信。 请注意,实际协议可能需要根据服务器的具体实现调整,如果服务器使用 HTTP 或 WebSocket 等协议,则需要相应修改客户端配置。 仓库代码中未明确指定协议,'stdio' 是一个合理的默认假设。

远程主机配置 (host.config):

如果需要使用远程 Shell 命令执行功能,需要在 'src/main/resources/host.config' 文件中配置远程主机的连接信息。

'host.config' 文件格式为每行一个主机配置,格式为:'主机IP 用户名 密码',使用空格分隔。

例如:

192.168.1.100 user1 password_for_user1
192.168.1.101 user2 password_for_user2

注意: 'host.config' 文件中的密码以明文形式存储,生产环境中请考虑更安全的配置管理方式,例如使用密钥认证或配置中心。

基本使用方法

  1. 启动 MCP 服务器: 在部署服务器上执行以下命令启动 'linux-mcp-server':

    java -jar path/to/linux-mcp-server-0.0.1-SNAPSHOT.jar

    请替换 'path/to/linux-mcp-server-0.0.1-SNAPSHOT.jar' 为实际的 JAR 文件路径。

  2. 配置 MCP 客户端: 在 LLM 应用或 MCP 客户端中,根据上述 "服务器配置" 中的 JSON 格式配置连接信息,并确保 'command' 和 'args' 指向正确的服务器启动命令和 JAR 文件路径。

  3. 调用 Shell 命令执行工具: 在 LLM 应用中,通过 MCP 客户端向 'linux-shell-server' 发送工具调用请求,指定要执行的 Shell 命令、目标主机 IP (可选,默认为本地) 和工作目录 (可选)。服务器将执行命令并将结果返回给 LLM 客户端。

示例工具调用 (假设工具名为 'executeShell'):

{
  "tool_calls": [
    {
      "id": "call_123",
      "type": "function",
      "function": {
        "name": "executeShell",
        "arguments": {
          "machineIp": "192.168.1.100",
          "path": "/tmp",
          "shell": "ls -l"
        }
      }
    }
  ]
}

注意: 以上 JSON 仅为示例,实际的工具调用格式和参数需要参考 MCP 协议和 Spring AI 框架的具体定义。 由于仓库代码只展示了 '@Tool' 注解的使用,更详细的 MCP 协议交互细节需要查看 Spring AI 框架文档和实际运行测试才能确定。

信息

分类

开发者工具