mcpField
L
linux-mcp-server

linux-mcp-server

本地服务
github.com/MartinDai开发工具639 周前更新

关于 linux-mcp-server

linux-mcp-server 是基于 Spring Boot 与 Spring AI 的 MCP 服务端,面向需要通过 AI 助手操作 Linux 主机的运维与开发场景。它将本地进程执行和远程 SSH 命令统一封装为 `executeShell` 工具。

主要功能

  1. 01本地与远程 Shell 执行
  2. 02通过 SSH 连接远程主机
  3. 03缓存并复用 SSH 连接
  4. 04使用 hosts.json 配置主机
  5. 05支持 Streamable HTTP

适用场景

  1. 01从 MCP 客户端运行本机命令
  2. 02通过 SSH 在远程 Linux 主机执行脚本
  3. 03查看命令的标准输出和错误日志

MCP 相关

它通过 Streamable HTTP 暴露 `executeShell` 工具,供 MCP 客户端指定主机、目录和命令,在本地或远程 Linux 上执行。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

来自项目 README

Linux MCP Server

基于 Spring Boot 与 Spring AI 构建的 Model Context Protocol (MCP) 服务端,实现对本地与远程 Linux 主机的安全 Shell 命令执行。通过 MCP 标准接口,可被 Claude Desktop 等支持 MCP 的 AI 助手直接接入,扩展 AI 的运维能力。

目录

简介

Linux MCP Server 将 Shell 执行封装成一个 MCP 工具 executeShell,由 Spring AI 自动注册到 MCP Server。客户端通过标准 MCP 调用,指定目标主机和命令,即可在本地或远程 Linux 机器上执行脚本,返回标准输出与错误日志。

功能亮点

  • 双模式执行:自动判断命令执行位置,支持本地进程调度与远程 SSH 执行。
  • 连接池管理:基于 Caffeine 缓存复用 SSH 连接,默认 5 分钟自动过期清理。
  • 轻量配置:使用简单的 hosts.json 维护远程主机清单,可热重启生效。
  • Spring Boot 原生集成:开箱即用的 mvn spring-boot:run/可执行 JAR 部署方式,默认监听 3001 端口。
  • MCP 协议兼容:依赖 spring-ai-starter-mcp-server-webmvc,支持 STREAMABLE HTTP 通道,适配主流 MCP 客户端。

快速开始

环境准备
  • Java 17+
  • Maven 3.6+(推荐使用仓库自带的 ./mvnw/mvnw.cmd)
  • 具备 SSH 服务的目标 Linux 主机
获取代码
git clone <repository-url>
cd linux-mcp-server
配置远程主机

编辑 src/main/resources/hosts.json:

[
  {
    "ip": "192.168.1.100",
    "username": "devops",
    "password": "your_password"
  }
]
  • ip:目标主机地址,需与 executeShell 中的 machineIp 对应。
  • username/password:SSH 登录凭据,目前采用密码认证,可在代码中扩展密钥登录。

⚠️ 建议不要将生产凭据提交到版本库,使用环境变量或配置中心管理敏感信息。

启动服务

开发环境直接运行:

mvn spring-boot:run

或打包独立运行:

mvn clean package
java -jar target/linux-mcp-server-1.0.0.jar

启动完成后,默认在 http://localhost:3001/mcp 暴露 MCP 接入点。

配置说明

关键配置集中在 src/main/resources/application.yml:

server:
  port: 3001            # MCP Server 监听端口
spring.ai.mcp.server:
  name: linux-mcp-server
  version: 1.0.0
  protocol: STREAMABLE  # 使用流式 HTTP 传输
  streamable-http:
    mcp-endpoint: /mcp  # MCP 入口路径

如需自定义:

  • 更改端口或 mcp-endpoint 时,记得同步更新 MCP 客户端配置。
  • 若需要连接更多主机,直接在 hosts.json 中追加条目并重启服务。

与 AI 助手集成

以 Claude Desktop 为例,可在其 claude_desktop_config.json 中添加:

{
  "mcpServers": [
    {
      "name": "linux-mcp-server",
      "type": "http",
      "command": "http",
      "args": ["http://localhost:3001/mcp"]
    }
  ]
}

连接成功后,Claude 将自动发现工具 executeShell:

  • machineIp(可选):为空或本地地址执行本机命令。
  • path(可选):命令执行目录,缺省为 /。
  • shell(必填):需要执行的完整命令。

安全建议

  • 凭据管理:hosts.json 以明文保存密码,仅用于开发或受控环境;生产环境请改用密钥认证或外部安全存储。
  • 主机校验:当前使用 PromiscuousVerifier 跳过主机指纹校验,部署到生产前应替换为已知主机列表以防中间人攻击。
  • 权限最小化:为远程机器创建受限用户,避免使用 root 账户并限制可执行命令范围。
  • 网络限制:通过防火墙/安全组限制 MCP Server 与目标主机的访问来源。

开发与调试

  • 代码结构主要位于 src/main/java/com/doodl6/mcp/linux,可按需扩展新的工具方法。
  • 如需调整 SSH 缓存策略,可修改 RemoteShellService 中的 CACHE_DURATION_MINUTES、MAX_CACHE_SIZE。
  • 修改完成后建议手动触发一次 executeShell(本地与远程各一次)验证输出与错误处理逻辑。

许可证

项目基于 MIT 许可证 开源,可自由使用与二次开发。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。