关于 linux-mcp-server
linux-mcp-server 是基于 Spring Boot 与 Spring AI 的 MCP 服务端,面向需要通过 AI 助手操作 Linux 主机的运维与开发场景。它将本地进程执行和远程 SSH 命令统一封装为 `executeShell` 工具。
主要功能
- 01本地与远程 Shell 执行
- 02通过 SSH 连接远程主机
- 03缓存并复用 SSH 连接
- 04使用 hosts.json 配置主机
- 05支持 Streamable HTTP
适用场景
- 01从 MCP 客户端运行本机命令
- 02通过 SSH 在远程 Linux 主机执行脚本
- 03查看命令的标准输出和错误日志
MCP 相关
它通过 Streamable HTTP 暴露 `executeShell` 工具,供 MCP 客户端指定主机、目录和命令,在本地或远程 Linux 上执行。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
来自项目 READMELinux 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 许可证 开源,可自由使用与二次开发。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。