使用说明
动态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.关闭_故障_会话
关闭当前正在进行的碰撞分析会话。
退货:
- 会话关闭状态
示例用法
基本碰撞分析工作流程
-
列出可用的崩溃转储:
# Use the list_crash_dumps tool -
启动崩溃会话:
# Use start_crash_session tool (auto-selects latest dump) -
执行崩溃命令:
# System information crash_command: "sys" # Backtrace crash_command: "bt" # Process list crash_command: "ps" # Kernel log crash_command: "log" # Module information crash_command: "mod" -
完成后关闭会话:
# 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
运作原理
- 碰撞转储发现:自动扫描
/var/crash/用于紧急停车场 - 核匹配:在中查找匹配的内核调试符号
/usr/lib/debug/ - 会话管理:使用正确的内核和转储启动崩溃实用程序进程
- 命令执行:使用pexpect与崩溃实用程序进程进行交互
- 输出捕获:返回具有正确格式的实际崩溃实用程序输出
支持的崩溃分析
碰撞命令
- 系统信息:
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
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加新功能的测试
- 提交拉取请求
支持
对于问题和疑问:
- 检查上面的故障排除部分
- 审查系统要求
- 确保正确安装了崩溃实用程序和调试符号
