进程监控日志分析服务

一个解析Process Monitor日志文件的C# MCP服务器,支持AI助手探索、过滤和分析系统活动数据。

  • by amithegde
  • C#
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 amithegde/Procmon-PML-MCP

使用说明

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 按持续时间查找最慢的事件

示例工作流程

  1. load_pml 通往你的路 .PML 文件
  2. get_pml_info 了解捕获范围
  3. get_process_tree 查看流程层次结构
  4. get_events_summary 获取高级概述
  5. search_events 或 search_by_path 深入特定活动
  6. get_event_detail 检查特定事件的属性
  7. get_event_stacktrace 查看任何事件的调用堆栈

PML格式

解析器处理PML版本9(Procmon 4.x的最新版本),支持:

  • 带有节偏移(事件、进程、字符串、图标)的文件头(936字节)
  • 事件记录:5类(进程、文件系统、注册表、网络、分析)
  • 用于随机访问的事件偏移表(每个条目5个字节)
  • 带有加载模块列表的进程记录(108字节标头)(每个模块64字节)
  • 字符串表(带偏移数组的UTF-16LE)
  • 针对流程模块列表的堆栈帧分辨率(K/U分类)
  • 注册表事件详细信息解析,包括值类型、长度和数据提取
  • 捕获的注册表值的额外数据段解析

许可证

麻省理工学院