使用说明
项目简介
本项目 '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 框架开发,易于部署和扩展。
安装步骤
- 环境准备: 确保已安装 JDK 17 或更高版本以及 Maven。
- 下载代码: 从 GitHub 仓库 https://github.com/MartinDai/linux-mcp-server 克隆代码到本地。
git clone https://github.com/MartinDai/linux-mcp-server.git cd linux-mcp-server - 编译打包: 使用 Maven 构建项目,生成可执行的 JAR 文件。
构建成功后,JAR 文件通常位于 'target' 目录下,例如 'linux-mcp-server-0.0.1-SNAPSHOT.jar'。mvn clean package
服务器配置
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' 文件中的密码以明文形式存储,生产环境中请考虑更安全的配置管理方式,例如使用密钥认证或配置中心。
基本使用方法
-
启动 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 文件路径。
-
配置 MCP 客户端: 在 LLM 应用或 MCP 客户端中,根据上述 "服务器配置" 中的 JSON 格式配置连接信息,并确保 'command' 和 'args' 指向正确的服务器启动命令和 JAR 文件路径。
-
调用 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 框架文档和实际运行测试才能确定。
信息
分类
开发者工具