Procmon PML MCP
解析进程监视器的C#MCP(模型上下文协议)服务器 .PML 日志文件,使AI助手能够探索、过滤和分析ProcMon捕获。
概述
Process Monitor捕获详细的系统活动(文件系统、注册表、网络、进程事件),但其二进制文件 .PML 格式不透明。此MCP服务器实现了PML v9格式,并通过一组工具公开它,这些工具允许您查询事件、检查流程、解析堆栈跟踪,并按任何条件组合进行过滤。
支持Process Monitor UI的所有关键功能:
- 事件属性:日期/时间、线程ID、类、类别、操作、结果、路径、持续时间、详细信息(注册表类型/长度/数据、文件访问标志等)
- 工艺特性:PID、PPID、用户、完整性、架构、虚拟化、会话ID、身份验证ID、命令行、加载的模块
- 堆栈跟踪:K/U(内核/用户)帧指示器,模块+偏移分辨率
- 进程树:完整的父子层次结构视图
- 时机:相对时间、完成时间、时间
需求
- .NET 10.0+
- 进程监视器
.PML日志文件(用 Procmon)
项目结构
src/ C# MCP server source (ProcMonMcp.csproj)
tests/ xUnit tests (ProcMonMcp.Tests.csproj)
.mcp.json Project-level MCP server config构建与运行
dotnet build ./src
dotnet run --project ./src # starts MCP server on stdio运行测试
dotnet test ./tests用法
作为MCP服务器
此回购包括 .mcp.json 在项目根目录下,因此Claude Code在该目录下工作时会自动发现服务器。
在另一个项目中手动配置或全局配置(~/.claude/settings.json):
{
"mcpServers": {
"procmon": {
"command": "dotnet",
"args": ["run", "--project", "C:\\github\\Procmon-PML-MCP\\src"]
}
}
}工具
| 工具 | 说明 |
|---|---|
load_pml | 加载a .PML 分析文件(必须先调用) |
get_pml_info | 文件头信息、事件类分布、时间范围 |
list_processes | 使用PID、用户、完整性、虚拟化、命令行列出捕获的进程 |
get_process_details | 流程详细信息,包括所有加载的模块及其地址和版本 |
get_process_tree | 流程树(父子层次结构),可选地以特定流程为根 |
get_events | 按索引范围浏览事件,包括类别和相对时间 |
get_event_detail | 单个事件的完整细节:路径、解析的细节属性(注册表类型/长度/数据、文件访问标志)、类别、相对时间、完成时间 |
get_event_stacktrace | 带有K/U指示器和模块+偏移分辨率的堆栈跟踪 |
search_events | 按流程、事件类、操作、路径、结果、时间、持续时间过滤 |
search_by_path | 查找涉及特定文件/注册表/网络路径的事件 |
get_events_summary | 统计摘要:顶级流程、操作、结果、类别 |
get_process_activity | 单个流程的活动细分 |
find_errors | 查找有错误结果的事件 |
find_slow_events | 按持续时间查找最慢的事件 |
示例工作流程
load_pml通往你的路.PML文件get_pml_info了解捕获范围get_process_tree查看流程层次结构get_events_summary获取高级概述search_events或search_by_path深入特定活动get_event_detail检查特定事件的属性get_event_stacktrace查看任何事件的调用堆栈
PML格式
解析器处理PML版本9(Procmon 4.x的最新版本),支持:
- 带有节偏移(事件、进程、字符串、图标)的文件头(936字节)
- 事件记录:5类(进程、文件系统、注册表、网络、分析)
- 用于随机访问的事件偏移表(每个条目5个字节)
- 带有加载模块列表的进程记录(108字节标头)(每个模块64字节)
- 字符串表(带偏移数组的UTF-16LE)
- 针对流程模块列表的堆栈帧分辨率(K/U分类)
- 注册表事件详细信息解析,包括值类型、长度和数据提取
- 捕获的注册表值的额外数据段解析
许可证
麻省理工学院
