返回市场
Linux-MCP-服务器

Linux-MCP-服务器

作者:rhel-lightspeed14 星标更新:2025-11-23

项目介绍

CI Coverage PyPI

Linux MCP Server

一个用于只读Linux系统管理、诊断和故障排除的模型上下文协议(MCP)服务器,适用于基于RHEL的系统。

功能

  • 只读操作:所有工具都是严格的只读模式,以确保安全的诊断
  • 远程SSH执行:通过SSH密钥认证在远程系统上执行命令
  • 多主机管理:在同一会话中连接到不同的远程主机
  • 全面诊断:系统信息、服务、进程、日志、网络和存储
  • 可配置的日志访问:通过环境变量控制可以访问哪些日志文件
  • 专注于RHEL/systemd:针对Red Hat Enterprise Linux系统进行了优化

安装

需要Python 3.10或更高版本。

使用pip安装

创建并激活虚拟环境,然后使用pip进行安装:

pip install linux-mcp-server

或者安装在Python用户目录下

pip install --user linux-mcp-server

使用uv安装

使用uv进行安装

uv tool install linux-mcp-server

更多详细信息,请参阅完整的安装指南

从容器运行

需要容器运行时,如PodmanDocker

由于MCP服务器使用SSH连接到远程主机,因此SSH密钥需要在容器内可用。如果SSH密钥是加密的,则需要提供密码短语来解密密钥。

配置

关键环境变量:

  • LINUX_MCP_ALLOWED_LOG_PATHS - 可以访问的日志文件的逗号分隔列表
  • LINUX_MCP_LOG_LEVEL - 日志级别(DEBUG, INFO, WARNING, ERROR, CRITICAL)
  • LINUX_MCP_SSH_KEY_PATH - 远程执行用的SSH私钥路径
  • LINUX_MCP_USER - 用于SSH连接的用户名

更多详细信息,请参阅环境变量

示例配置

对于以下示例配置,请确保提供真实的SSH密钥和日志文件路径。

[!NOTE] 如果配置了ssh-agent,则会自动使用加载到会话中的任何密钥。

[!NOTE] 当使用Docker时

  • SSH密钥必须由UID 1001拥有
  • 必须提前创建日志目录,并由1001拥有
  • 移除--userns参数

这是一个设置容器主机上的文件示例,以便它们可以在运行的容器中访问。

ORIGINAL_UMASK=$(umask)

umask  0002
mkdir -p ~/.local/share/linux-mcp-server/logs
sudo chown -R 1001 .local/share/linux-mcp-server/logs

cp ~/.ssh/id_ed25519 ~/.local/share/linux-mcp-server/
sudo chown 1001 ~/.local/share/linux-mcp-server/id_ed25519

umask ${ORIGINAL_UMASK}

Claude Desktop配置

<details> <summary>容器</summary>
{
  "mcpServers": {
    "Linux Tools": {
      "command": "podman",
      "args": [
        "run",
        "--rm",
        "--interactive",
        "--userns", "keep-id:uid=1001,gid=0",
        "-e", "LINUX_MCP_KEY_PASSPHRASE",
        "-e", "LINUX_MCP_USER",
        "-v", "/home/tljones/.ssh/id_ed25519:/var/lib/mcp/.ssh/id_ed25519:ro,Z",
        "-v", "/home/tljones/.local/share/linux-mcp-server/logs:/var/lib/mcp/.local/share/linux-mcp-server/logs:rw,Z",
        "quay.io/redhat-services-prod/rhel-lightspeed-tenant/linux-mcp-server:latest"
      ],
      "env": {
        "LINUX_MCP_KEY_PASSPHRASE": "<secret>",
        "LINUX_MCP_USER": "tljones"
      }
    }
  }
}

</details> <details> <summary>本地</summary>
{
  "mcpServers": {
    "Linux Tools": {
      "command": "[venv]/bin/linux-mcp-server",
    }
  }
}
</details>

Goose配置

<details> <summary>容器</summary>
extensions:
  linux-tools:
  enabled: true
  type: stdio
  name: linux-tools
  description: Linux tools
  cmd: podman
  args:
    - run
    - --rm
    - --interactive
    --userns,
    "keep-id:uid=1001,gid=0",
    - -e
    - LINUX_MCP_KEY_PASSPHRASE
    - -e
    - LINUX_MCP_USER
    - -v
    - /home/tljones/.ssh/id_ed25519:/var/lib/mcp/.ssh/id_ed25519:ro
    - -v
    - /home/tljones/.local/share/linux-mcp-server/logs:/var/lib/mcp/.local/share/linux-mcp-server/logs:rw
    - quay.io/redhat-services-prod/rhel-lightspeed-tenant/linux-mcp-server:latest
  envs: {}
  env_keys:
    - LINUX_MCP_KEY_PASSPHRASE
    - LINUX_MCP_USER
  timeout: 30
  bundled: null
  available_tools: []
</details> <details> <summary>本地</summary>
extensions:
  linux-tools:
  enabled: true
  type: stdio
  name: linux-tools
  description: Linux tools
  cmd: [venv]/bin/linux-mcp-server
  envs: {}
  env_keys:
    - LINUX_MCP_KEY_PASSPHRASE
    - LINUX_MCP_USER
  timeout: 30
  bundled: null
  available_tools: []
</details>

审计日志

所有服务器操作都以人类可读和JSON格式记录,并具有自动每日轮换和可配置保留期。日志存储在~/.local/share/linux-mcp-server/logs/

工具执行

所有工具都支持一个可选的host参数,用于通过SSH进行远程执行:

  • 身份验证:仅支持SSH密钥认证(不支持密码)
  • 密钥发现:自动从~/.ssh/发现SSH密钥,或使用LINUX_MCP_SSH_KEY_PATH
  • 连接池:复用SSH连接以提高效率
  • 多主机:每个工具调用可以针对不同的远程主机

要求

  • 远程主机上必须配置SSH密钥认证
  • 远程用户必须具有适当的权限以执行诊断命令

使用

运行服务器

使用pip安装

从虚拟环境中运行:

[path to virtual environment]/bin/linux-mcp-server

或者从Python用户目录运行:

~/.local/bin/linux-mcp-server

使用uv安装

uv tool run linux-mcp-server

有关详细使用说明、可用工具和示例故障排除会话,请参阅使用

与Claude Desktop集成

有关完整的Claude Desktop集成说明,包括特定平台的配置文件位置和替代配置,请参阅Claude Desktop集成

可用工具

系统信息

  • get_system_information - 操作系统版本、内核、主机名、运行时间
  • get_cpu_information - CPU详情和负载平均值
  • get_memory_information - 内存使用情况和交换分区详情
  • get_disk_usage - 文件系统使用情况和挂载点
  • get_hardware_information - 硬件详情(CPU架构、PCI/USB设备、内存硬件)

服务管理

  • list_services - 列出所有systemd服务及其状态
  • get_service_status - 特定服务的详细状态
  • get_service_logs - 特定服务的最近日志

进程管理

  • list_processes - 正在运行的进程及其CPU/内存使用情况
  • get_process_info - 特定进程的详细信息

日志及审计

  • get_journal_logs - 使用过滤器查询systemd日志
  • get_audit_logs - 读取审计日志(如果有)
  • read_log_file - 读取特定日志文件(受白名单控制)

网络诊断

  • get_network_interfaces - 网络接口信息
  • get_network_connections - 活动网络连接
  • get_listening_ports - 系统上监听的端口

存储及磁盘分析

  • list_block_devices - 块设备和分区
  • list_directories - 在指定路径下列出目录,带有各种排序选项

架构概述

graph TB
    Client["客户端层<br/>MCP客户端(例如Claude Desktop)"]

    subgraph Server["MCP服务器"]
        FastMCP[FastMCP服务器]

        subgraph Tools["工具类别"]
            direction LR
            subgraph Row1[" "]
                SystemInfo[系统信息]
                Services[服务]
                Processes[进程]
            end
            subgraph Row2[" "]
            Logs[日志及审计]
                Network[网络]
                Storage[存储]
            end
        end

        Executor[SSH执行器]
        Logger[审计日志]
    end

    subgraph Targets["执行目标"]
        direction LR
        Local[本地系统]
        Remote[远程主机<br/>SSH]
    end

    Client -->|MCP协议| FastMCP
    FastMCP --> Tools
    Tools --> Executor
    Executor --> Targets

    FastMCP -.-> Logger
    Executor -.-> Logger

    style Client fill:#4a9eff,stroke:#2563eb,color:#fff
    style FastMCP fill:#f59e0b,stroke:#d97706,color:#fff
    style SystemInfo fill:#64748b,stroke:#475569,color:#fff
    style Services fill:#64748b,stroke:#475569,color:#fff
    style Processes fill:#64748b,stroke:#475569,color:#fff
    style Logs fill:#64748b,stroke:#475569,color:#fff
    style Network fill:#64748b,stroke:#475569,color:#fff
    style Storage fill:#64748b,stroke:#475569,color:#fff
    style Executor fill:#10b981,stroke:#059669,color:#fff
    style Logger fill:#8b5cf6,stroke:#7c3aed,color:#fff
    style Local fill:#eab308,stroke:#ca8a04,color:#fff
    style Remote fill:#eab308,stroke:#ca8a04,color:#fff
    style Row1 fill:none,stroke:none
    style Row2 fill:none,stroke:none

关键组件

  • FastMCP服务器:核心MCP协议服务器,处理工具注册和调用
  • 工具类别:六个类别的只读诊断工具(系统信息、服务、进程、日志、网络、存储)
  • SSH执行器:将命令路由到本地子进程或远程SSH执行,并具有连接池
  • 审计日志:全面的日志记录,具有人类可读和JSON格式,并自动轮换
  • 多目标执行:单个服务器实例可以执行本地系统或多个远程主机上的命令