Linux系统工具服务器

一个基于Python的服务器,通过模型上下文协议提供对Linux系统操作和信息的访问。

  • by guolisen
  • Python
  • 本地部署
  • 9 星标
  • 更新于
在 GitHub 查看 guolisen/mcp_lcu_server

使用说明

MCP Linux通用实用程序服务器

模型上下文协议(MCP)Linux通用工具(LCU)服务器是一个基于Python的服务器,通过模型上下文协议提供对各种Linux系统操作和信息的访问。

特性

  • CPU操作:CPU信息、使用率、平均负载等。
  • 存储器操作:内存和交换信息、使用统计。
  • 进程/线程操作:流程列表、信息和管理。
  • 存储操作:磁盘、卷和分区信息。
  • 文件系统操作:文件创建、删除、更新和信息。
  • 硬件操作:硬件检测和信息。
  • 网络运营:接口信息、连接测试和数据传输。
  • 监控操作:系统状态监测和健康检查。
  • 日志操作:跨多个来源访问系统日志、日志分析和统计数据。

安装

先决条件

  • Python 3.10或更高版本
  • Linux 操作系统

安装步骤

  1. 克隆存储库:

    git clone https://github.com/yourusername/mcp_lcu_server.git
    cd mcp_lcu_server
    
  2. 安装软件包:

    uv venv
    source .venv/bin/activate
    python -m build
    

配置

服务器可以使用YAML配置文件进行配置。默认情况下,它会在以下位置查找配置文件:

  • ./config.yaml
  • ./config/config.yaml
  • /etc/mcp-lcu-server/config.yaml
  • ~/.config/mcp-lcu-server/config.yaml

您还可以使用以下命令指定自定义配置文件路径 --config 命令行选项。

配置文件示例

server:
  name: mcp-lcu-server
  transport: both  # stdio, sse, or both
  port: 8000
  host: 127.0.0.1

monitoring:
  enabled: true
  interval: 30  # seconds
  metrics:
    - cpu
    - memory
    - disk
    - network

filesystem:
  allowed_paths:
    - /
  max_file_size: 10485760  # 10MB

network:
  allow_downloads: true
  allow_uploads: true
  max_download_size: 104857600  # 100MB
  max_upload_size: 10485760  # 10MB
  allowed_domains:
    - "*"  # Allow all domains

process:
  allow_kill: false
  allowed_users: []

logs:
  # Custom log paths (optional)
  paths: 
    # syslog: /var/log/syslog
    # auth: /var/log/auth.log
  max_entries: 1000  # Maximum entries to return

用法

启动服务器

您可以使用命令行界面启动服务器:

mcp-lcu-server [OPTIONS]

可用选项:

  • --config, -c:配置文件的路径
  • --transport, -t:传输类型(stdio、sse或两者)
  • --port, -p:SSE运输港口
  • --host, -h:SSE传输主机
  • --debug, -d:启用调试日志记录

运输类型

服务器支持以下传输类型:

  • stdio:标准输入/输出传输
  • sse:服务器发送事件传输

例子

使用stdio传输启动服务器:

mcp-lcu-server --transport stdio

在端口8000上使用SSE传输启动服务器:

mcp-lcu-server --transport sse --port 8000

使用两种传输方式启动服务器:

mcp-lcu-server --transport both

API文档

工具

服务器提供了各种与Linux系统交互的工具:

CPU工具

  • get_cpu_info:获取详细的CPU信息
  • get_cpu_usage:获取CPU使用率百分比
  • get_load_average:获取系统负载平均值
  • analyze_cpu_performance:分析CPU性能

内存工具

  • get_memory_info:获取详细的内存信息
  • get_memory_usage:获取内存使用情况
  • get_swap_info:获取交换信息
  • analyze_memory_performance:分析内存性能

工艺工具

  • list_processes:列出所有进程
  • get_process_info:获取有关流程的详细信息
  • search_processes:搜索流程
  • analyze_top_processes:按CPU和内存使用情况分析顶级进程

存储工具

  • list_disks:列出物理磁盘
  • list_partitions:列出磁盘分区
  • get_disk_usage:获取磁盘使用情况
  • analyze_storage_usage:分析存储使用情况

文件系统工具

  • list_directory:列出目录的内容
  • read_file:读取文件内容
  • write_file:将内容写入文件
  • delete_file:删除文件或目录
  • copy_file:复制文件或目录
  • move_file:移动文件或目录
  • search_files:搜索与模式匹配的文件
  • search_file_contents:搜索包含图案的文件

五金工具

  • get_system_info:获取一般系统信息
  • get_cpu_info:获取CPU信息
  • get_memory_info:获取内存信息
  • get_storage_info:获取存储信息
  • get_pci_devices:获取PCI设备信息
  • get_usb_devices:获取USB设备信息
  • analyze_hardware:分析硬件配置

网络工具

  • get_network_interfaces:获取网络接口信息
  • get_network_connections:获取网络连接
  • get_network_stats:获取网络统计信息
  • ping_host:Ping主机
  • traceroute_host:跟踪到主机的路由
  • http_get_request:执行HTTP GET请求
  • download_file_from_url:从URL下载文件
  • upload_file_to_url:将文件上传到URL
  • analyze_network:分析网络配置和连接

监视工具

  • get_system_status:获取系统状态
  • check_system_health:检查系统运行状况
  • monitor_resources:监视资源使用情况
  • get_system_uptime:获得系统正常运行时间
  • get_system_load:获取系统负载
  • analyze_system_performance:分析系统性能

日志工具

  • log_list_available_logs:列出系统上所有可用的日志源
  • log_get_journal_logs:从systemd日志中获取日志
  • log_get_system_logs:从系统日志文件中获取日志
  • log_get_dmesg:从dmesg获取内核日志
  • log_get_application_logs:获取特定应用程序的日志
  • log_get_audit_logs:获取审核日志
  • log_get_boot_logs:获取启动日志
  • log_get_service_status_logs:获取与特定systemd服务相关的日志
  • log_search_logs:跨多个日志源搜索
  • log_analyze_logs:分析日志以确定模式和问题
  • log_get_statistics:获取日志量和特征的统计信息

资源

服务器还提供可通过MCP访问的各种资源:

系统资源

  • linux://system/info:系统信息
  • linux://system/cpu:CPU信息
  • linux://system/memory:内存信息
  • linux://system/uptime:系统正常运行时间

监控资源

  • linux://monitoring/status:系统状态
  • linux://monitoring/health:系统运行状况
  • linux://monitoring/resources:资源使用情况

文件系统资源

  • linux://fs/dir/{path}:目录列表
  • linux://fs/info/{path}:文件信息
  • linux://fs/file/{path}:文件内容
  • linux://fs/usage/{path}:目录使用情况分析

网络资源

  • linux://network/interfaces:网络接口
  • linux://network/connections:网络连接
  • linux://network/stats:网络统计
  • linux://network/ping/{host}:Ping主机
  • linux://network/traceroute/{host}:跟踪到主机的路由
  • linux://network/analysis:网络分析

日志资源

  • linux://logs/available:可用日志源列表
  • linux://logs/journal/{parameters}:来自systemd日志的日志
  • linux://logs/system/{log_type}/{parameters}:来自系统日志文件的日志
  • linux://logs/kernel/{count}:来自内核环形缓冲区(dmesg)的日志
  • linux://logs/application/{app_name}/{parameters}:特定应用程序的日志
  • linux://logs/audit/{parameters}:Linux审计系统的日志
  • linux://logs/boot/{count}:与系统启动相关的日志
  • linux://logs/service/{service}/{count}:特定systemd服务的日志
  • linux://logs/search/{query}/{parameters}:跨多个日志源搜索
  • linux://logs/analysis/{parameters}:日志模式和问题分析
  • linux://logs/statistics/{parameters}:日志量和特征统计

安全考虑

服务器提供对各种系统操作的访问,如果误用,可能会有潜在的危险。确保:

  • 配置文件系统操作的允许路径
  • 为网络操作配置允许的域
  • 限制终止进程的能力
  • 以适当的权限运行服务器

命令执行安全

服务器包括一个强大的命令执行工具,允许在主机系统上运行shell命令。如果配置不当或在不受信任的环境中使用,此功能可能会带来重大的安全风险。

警告: 如果你不想使用命令执行功能,你有两个选择:

  1. 通过设置禁用它 command.enabled: false 在您的配置文件中:
    command:
      enabled: false
    
  2. 通过修改服务器实现,删除与命令执行相关的MCP工具。

启用命令执行时,请考虑以下附加安全措施:

  • 使用 allowed_commands 限制可以执行的命令
  • 使用 blocked_commands 明确阻止危险命令
  • 设置适当的超时和输出大小限制
  • 使用禁用sudo访问 allow_sudo: false 除非绝对必要

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。