崩溃分析服务器

专业的MCP服务器,用于崩溃转储分析和内核调试,支持多种崩溃转储格式和实时崩溃命令执行。

  • by 42Research
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ablagodarenko/crash_mcp

使用说明

动态MCP服务器

用于崩溃转储分析和内核调试的专业MCP(模型上下文协议)服务器。

特性

  • 真实碰撞实用程序集成:使用实际输出执行实际崩溃实用程序命令
  • 自动碰撞转储发现:查找并列出崩溃转储 /var/crash
  • 智能内核匹配:自动内核调试符号检测和匹配
  • 会话管理:强大的崩溃分析会话生命周期管理
  • 多种转储格式:支持vmcore、core、崩溃和转储文件
  • 专业法医:真正的内核调试和系统取证功能

需求

  • 碰撞实用程序:版本8.0.4+(系统包: crash)
  • python:3.10+(推荐3.11+)
  • 内核调试符号:可用 /usr/lib/debug/lib/modules/
  • 崩溃转储:可进入 /var/crash/ 或自定义位置
  • 权限:读取崩溃转储和内核文件的访问权限

安装

快速安装(推荐)

# Install directly from source
pip install -e .

开发安装

# Create virtual environment (optional but recommended)
python3 -m venv dynamic_mcp_env
source dynamic_mcp_env/bin/activate

# Install dependencies and package
pip install -e .

系统安装

# Install system-wide (requires sudo)
sudo pip install .

使用Systemd服务进行系统安装

# Install system-wide with automatic systemd service setup
sudo pip install .

这会自动:

  • 安装软件包
  • 复制systemd服务文件
  • 创建动态mcp用户和组
  • 创建所需目录
  • 在systemd中注册服务

看 系统_安装.md 有关详细的systemd设置说明。

用法

运行MCP服务器

标准模式(默认)

# Run the server with stdio transport
dynamic-mcp

# Or with module syntax
python -m dynamic_mcp.server

HTTP/SSE模式

# Run the server with HTTP transport on default port 8080
dynamic-mcp-http

# Or with module syntax
python -m dynamic_mcp.server --http

# Access the server at: http://localhost:8080/sse

MCP客户端配置

用于标准运输

添加到您的MCP客户端配置中(例如,Claude Desktop):

{
  "mcpServers": {
    "dynamic-mcp": {
      "command": "python",
      "args": ["-m", "dynamic_mcp.server"],
      "env": {
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

用于HTTP/SSE传输

配置您的MCP客户端以连接到HTTP端点:

{
  "mcpServers": {
    "dynamic-mcp": {
      "url": "http://localhost:8080/sse",
      "env": {
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

测试

# Run crash analysis tests
pytest tests/crash/

# Test crash utility integration
python tests/crash/test_crash_server.py

# Run all tests
pytest

配置

创建 .env 具有可选配置的文件:

# Crash dump paths
CRASH_DUMP_PATH=/var/crash
KERNEL_PATH=/boot

# Session timeouts
CRASH_SESSION_TIMEOUT=180
CRASH_COMMAND_TIMEOUT=120

# Logging configuration
LOG_LEVEL=INFO
SUPPRESS_MCP_WARNINGS=true

MCP工具

服务器提供5个全面的崩溃分析工具:

1.碰撞命令

使用实际输出执行崩溃实用程序命令。

参数:

  • command (string):要执行的崩溃实用程序命令
  • timeout (整数,可选):命令超时时间(秒)(默认值:120)

例子:

{
  "command": "sys",
  "timeout": 60
}

2.get_crash_info

获取有关当前崩溃转储和会话的信息。

退货:

  • 活动会话详细信息
  • 可用的崩溃转储
  • 系统需求状态

3.列表_故障_泵

列出所有可用的崩溃转储。

参数:

  • max_dumps (整数,可选):要返回的最大转储数(默认值:10)

退货:

  • 崩溃转储详细信息(名称、路径、大小、时间戳)
  • 可读性状态

4.启动_故障_会话

启动新的碰撞分析会话。

参数:

  • dump_name (字符串,可选):特定转储名称(如果未指定,则使用最新名称)
  • timeout (整数,可选):会话启动超时(默认值:180)

退货:

  • 会话启动状态
  • 匹配的内核信息

5.关闭_故障_会话

关闭当前正在进行的碰撞分析会话。

退货:

  • 会话关闭状态

示例用法

基本碰撞分析工作流程

  1. 列出可用的崩溃转储:

    # Use the list_crash_dumps tool
    
  2. 启动崩溃会话:

    # Use start_crash_session tool (auto-selects latest dump)
    
  3. 执行崩溃命令:

    # System information
    crash_command: "sys"
    
    # Backtrace
    crash_command: "bt"
    
    # Process list
    crash_command: "ps"
    
    # Kernel log
    crash_command: "log"
    
    # Module information
    crash_command: "mod"
    
  4. 完成后关闭会话:

    # Use close_crash_session tool
    

故障排除

系统要求

未找到崩溃实用程序:

# Install crash utility (RHEL/CentOS/Fedora)
sudo yum install crash
# or
sudo dnf install crash

# Install crash utility (Ubuntu/Debian)
sudo apt-get install crash

未找到碰撞转储:

  • 检查 /var/crash/ 目录存在并且有崩溃转储
  • 确保对崩溃转储文件的读取权限
  • 验证崩溃转储的格式是否有效(vmcore、core等)

缺少内核调试符号:

  • 安装内核调试包
  • 检查 /usr/lib/debug/lib/modules/ 用于调试符号
  • 确保内核版本与崩溃转储匹配

MCP初始化警告

您可能会看到以下警告:

WARNING - Failed to validate request: Received request before initialization was complete

这是正常的MCP协议行为 并且不影响功能。

要抑制这些警告:

export SUPPRESS_MCP_WARNINGS=true

运作原理

  1. 碰撞转储发现:自动扫描 /var/crash/ 用于紧急停车场
  2. 核匹配:在中查找匹配的内核调试符号 /usr/lib/debug/
  3. 会话管理:使用正确的内核和转储启动崩溃实用程序进程
  4. 命令执行:使用pexpect与崩溃实用程序进程进行交互
  5. 输出捕获:返回具有正确格式的实际崩溃实用程序输出

支持的崩溃分析

碰撞命令

  • 系统信息: sys, mach, help
  • 过程分析: ps, task, files
  • 内存分析: kmem, vm, search
  • 堆栈分析: bt, bt -a, bt -f
  • 内核分析: log, dmesg, mod
  • 反汇编: dis, gdb
  • 光泽分析:用于文件系统调试的Lustre特定命令

崩溃转储格式

  • 虚拟机核心:标准Linux内核崩溃转储
  • 核心:核心转储文件
  • 崩溃:崩溃实用程序格式
  • 倾倒:通用转储文件

内核支持

  • 调试符号:自动检测 /usr/lib/debug/
  • 内核版本:支持多个内核版本
  • Lustre内核:对Lustre文件系统内核的特殊支持

建筑

  • MCP协议:完全符合模型上下文协议
  • 真正的融合:使用实际碰撞实用程序(非模拟)
  • 会话管理:稳健的流程生命周期管理
  • 错误处理:全面的错误处理和恢复
  • 日志记录:调试和监控的详细日志记录

许可证

该项目根据MIT许可证获得许可。

版权所有©2025 42Research有限公司

特此免费授予任何获得此软件副本的人权限 以及相关文档文件(“软件”),无限制地处理软件, 包括但不限于使用、复制、修改、合并、发布、分发、再许可的权利, 和/或出售软件的副本。

有关完整的许可条款,请参阅 许可证 文件。

联系:电子邮件:software@42research.co.uk|网址:https://42research.co.uk

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 添加新功能的测试
  5. 提交拉取请求

支持

对于问题和疑问:

  • 检查上面的故障排除部分
  • 审查系统要求
  • 确保正确安装了崩溃实用程序和调试符号