mcpField
J
JVMind MAT Heap Dump Analyzer

JVMind MAT Heap Dump Analyzer

本地服务
github.com/kengrary开发工具11 周前更新

关于 JVMind MAT Heap Dump Analyzer

JVMind MAT Heap Dump Analyzer 是基于 Eclipse MAT 的 Java 堆转储分析 MCP 服务,面向排查内存问题的 Java 开发者。它支持分析本地 `.hprof` 文件或捕获运行中 JVM 的堆转储,并提供 MAT 查询及诊断工具;数据保留在本机。

主要功能

  1. 01打开并解析本地堆转储
  2. 02发现本地 JVM 并捕获堆转储
  3. 03查看堆概览、直方图和支配树
  4. 04检查线程、对象及 GC 根路径
  5. 05诊断内存泄漏、OOM 和连接池问题

适用场景

  1. 01排查 Java 应用的内存泄漏
  2. 02分析 OOM 前的堆转储
  3. 03检查线程中的 SQL 与局部变量
  4. 04捕获运行中 JVM 的堆状态

MCP 相关

它通过本地 stdio MCP 服务向客户端提供 Eclipse MAT 堆分析工具,共 19 项。堆转储在本机处理,不会离开设备。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"kengrary-jvmind-mat": {
"command": "uvx",
"args": [
"jvmind-mat-mcp"
]
}
}
}
启动命令uvx jvmind-mat-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypijvmind-mat-mcp0.2.1

工具

17

收录的工具列表 · 更新于 1 周前

参数类型必填说明
pathstring是

详细介绍

JVMind × MAT — 堆转储分析

JVMind MAT 堆转储分析器 MCP 服务

English | 中文

基于 Eclipse Memory Analyzer(MAT)引擎的 Java 堆转储分析: 上传 → 解析 → 类 MAT 网页查询 → 领域诊断(连接池泄漏 等)→ 自然语言 Agent 诊断。

状态:Java 解析器和查询服务已通过测试。MCP 服务 v0.2.1 已发布到 PyPI 和官方 MCP Registry。Python 平台集成仍在进行中。 请参阅 PROJECT-STATUS.md。


快速开始

  1. 项目概览 → 本文件 + mat-study/README.md (设计蓝图;中文)。
  2. 当前进度 → PROJECT-STATUS.md(已完成的工作、 剩余任务、经验总结)。
  3. Python 团队入门 → TODO-PYTHON-TEAM.md (任务列表、API 契约、验收标准)。
  4. 运行查询服务 → query-service/DEPLOY.md (部署 + curl 验证)。
  5. 运行解析器 → parser-cli/v1-parsehd/README.md (无需构建;使用 MAT 发行版)。
  6. 从 Claude/Cursor/VS Code 分析堆转储 → mcp-server/README.md(uvx jvmind-mat-mcp,本地 stdio)。

MCP 服务(已发布)

一个本地 stdio MCP 服务,可向 Claude Desktop、Cursor 和 VS Code 提供 MAT 堆分析功能。它可以发现本地 Java 进程并从运行中的 JVM 捕获实时 堆转储,也可以打开现有的 .hprof 文件。堆转储不会离开本机;MAT 助手仅绑定到 127.0.0.1。

uvx jvmind-mat-mcp doctor      # checks JDK 21 / MAT 1.17 / permissions
渠道位置
PyPIhttps://pypi.org/project/jvmind-mat-mcp/
官方 MCP Registryio.github.kengrary/jvmind-mat
MCPRushhttps://mcprush.com/kengrary/jvmind-mat-heap-dump-analyzer-mcp
文档mcp-server/README.md

功能:list_java_processes / dump_java_heap 用于实时捕获, open_heapdump 用于打开现有文件,随后可使用 mat_overview / mat_histogram / mat_dominator / mat_threads / mat_object / mat_path2gc / mat_oql / mat_leak_suspects / mat_diagnose_oom 等工具——总计 19 个工具。

要求:Python 3.10+、JDK 21+、Eclipse MAT 1.17.x(首次使用时会将一个小型查询 包安装到 MAT 中)。

工具

所有分析工具都需要使用 open_heapdump 返回的 report_id。

  • open_heapdump — 打开本地 .hprof 文件,启动后台索引并返回 report_id
  • get_heapdump_status — 轮询解析状态、进度和阶段
  • list_heapdumps — 列出此 MCP 服务已知的堆转储
  • close_heapdump — 释放堆转储句柄,并可选择停止 MAT 辅助进程
  • list_java_processes — 查找本地可附加的 JVM(pid、主类、命令;不包括 MAT 辅助进程)
  • dump_java_heap — 预览并捕获实时堆转储,然后启动 MAT 解析(confirm=true)
  • mat_overview — 堆概览:已用/已提交/存活堆、对象/类/类加载器数量、JDK 版本
  • mat_histogram — 按浅层大小、保留大小或对象数量排序的类直方图
  • mat_dominator — 最大保留对象的支配树,并可向下查看父对象
  • mat_threads — 列出线程,或深入查看堆栈帧和帧局部变量
  • mat_threadlocals — 按值的类或线程分组检查 ThreadLocal 值
  • mat_object — 检查单个对象的字段、静态字段、引用和 GC 根
  • mat_path2gc — 对象到 GC 根的最短路径
  • mat_oql — 运行 OQL 查询并返回行及可复用的结果集 ID
  • mat_leak_suspects — 运行 LeakHunter,返回可疑对象及其保留大小和说明
  • mat_diagnose_oom — 综合 OOM 诊断:可疑泄漏对象 + 线程中的 SQL + 支配树分析
  • mat_connection_pools — 诊断数据库连接池和泄漏的连接
  • mat_top_consumers — 按保留堆大小列出内存消耗最多的对象
  • mat_sql_in_threads — 查找线程堆栈中的 SQL 语句

架构

  User uploads a heap dump
        │
   [Python/FastAPI]  ← in progress (TODO-PYTHON-TEAM.md)
   upload / queue / progress / auth / agent
        ├── fork ─────────────▶ [parser-cli / V1]  hprof → *.index   ✅ tested
        │                              (writes to NFS)
        └── reverse proxy ────▶ [query-service]    queries over indexes  ✅ tested
                                  (OSGi bundle, :8090)
                                  histogram / dominators / threads / OQL
                                  + Leak Suspects / path2gc etc.
         Shared: NFS (dump files) + PostgreSQL (tasks/reports)

  Local MCP path (v0.2.1 published):
  Claude Desktop / Cursor / VS Code
        │ stdio
        ▼
   [mcp-server] ──HTTP 127.0.0.1──▶ [query-service :8090]
        └── runs MAT ParseHeapDump when index files are missing
            (reuses the parser-cli V1 logic)

仓库结构

顶层
文件内容
README.md英文概览(本文件)
README.zh.md中文概览
PROJECT-STATUS.md里程碑、模块状态、TODO、经验总结
TODO-PYTHON-TEAM.mdPython 集成任务列表、API 契约、验收标准
mat-study/ — 设计文档(中文)
#文档涵盖内容
—README.md设计蓝图(四层架构、决策、里程碑)
01MAT 源码研究与架构设计MAT 的工作原理及复用方式;索引文件格式
02核心算法深入分析与落地方案支配树、路径、保留大小;Web 后端设计
03超越 OOM:连接池泄漏堆转储还能解答哪些问题;连接池、线程池、类加载器
04面向 Agent 的 MAT API 工具化大模型如何驱动 MAT;工具粒度和输出精简
05端到端集成设计上传、队列、进度、三层软引用缓存
06技术选型确认与四视图 API最终确定的选型和四视图 API 契约
07与 JVMind 集成如何连接现有平台(Python 团队必读)
08MAT 功能清单与缺口已审查 57 个查询;缺口优先级
09前端实现指南让 Web UI 呈现 MAT 的体验
10MAT Inspector 功能Inspector 功能及已实现内容
12Python 集成计划Python 侧的分阶段计划
13线程级 OOM 诊断找出触发 OOM 的线程及其 SQL
14堆转储前端设计端点映射、异步状态机、集成规则
parser-cli/ — 解析层(hprof → 索引)
文件内容
README.md解析器概览(V1/V2 路线)
MAT-DEPENDENCIES.md如何获取 MAT 依赖项、版本/JDK 矩阵、捆绑包列表
v1-parsehd/README.mdV1(无需构建;MAT 发行版 + 文本进度)— 当前版本
v1-parsehd/VERIFICATION.mdV1 验证报告(真实 hprof、修复了三个错误)
v1-parsehd/mat_parse_runner.py进度解析器(Python;可供工作进程复用)
python-worker-snippet.py用于调用解析器的工作进程代码片段
src/.../*.javaV2 框架(自行构建 jar + JSONL 进度;未启用)
query-service/ — 查询层(OSGi 捆绑包,:8090)✅
文件内容
README.md服务概览(端点、SnapshotManager、路线 2)
DEPLOY.md部署 + 端到端验证(bundles.info + -clean、curl 示例)
EQUINOX-A-VERIFICATION.md嵌入式 Equinox 测试和 CNF 修复(为何采用路线 2)
BUILD-TROUBLESHOOTING.md构建故障排查(p2 仓库、JDK 版本)
src/.../*.java(21 个文件)服务实现:core/http/model/task/view/equinox
mcp-server/ — 本地 stdio MCP(✅ v0.2.1 已发布)
文件内容
README.md安装、客户端配置、19 个工具、隐私、故障排查
src/jvmind_mat_mcp/server.pyMCP SDK 工具注册
src/jvmind_mat_mcp/engine.py堆转储注册表、后台解析、MAT 生命周期管理
src/jvmind_mat_mcp/vendor/随软件包提供的查询服务 OSGi 捆绑包
DockerfileGlama 审核镜像(不包含 MAT/JDK;需在运行时挂载)
tests/单元测试、stdio 协议测试、可选的真实 MAT 集成测试
marketplace/ — 目录提交包(🟡 已准备,尚未提交)
文件内容
README.md平台状态、剩余步骤、质量差距
metadata.json共享名称、描述、标签、安装命令
smithery/manifest.jsonMCPB 清单(跳过 Smithery,留待后续)
mcp.so.md / glama.md / pulsemcp.md各平台的表单文案和步骤

模块状态

模块形式状态入口点
parser-cliV1 = MAT 命令;V2 = 独立 jar✅ V1 已测试v1-parsehd/mat_parse_runner.py
query-serviceOSGi 捆绑包(HTTP :8090)✅ 已测试QueryServiceApp.java / QueryHttpServer.java
mcp-serverPython stdio MCP(PyPI + 官方 Registry)✅ v0.2.1 已发布src/jvmind_mat_mcp/server.py
marketplace目录副本(跳过 Smithery)🟡 已准备,待提交marketplace/README.md
Python integrationFastAPI + DB + Agent⏳ 进行中TODO-PYTHON-TEAM.md

关键事实(避免重复摸索)

  • MAT 依赖不在 Maven Central 上 → 使用带有 p2 仓库或本地 Directory target 的 Tycho(eclipse-plugin);不要添加 <dependencies>。
  • 版本 ↔ JDK:1.17 → JDK 21,1.14 → JDK 17,1.12 → JDK 11(确保这三处保持一致)。
  • 部署:将 jar 复制到 plugins/,在 bundles.info 中添加一行(auto-start=true),然后使用 -clean 重启(不要使用 dropins/)。
  • 查询服务没有身份验证,仅限内网使用。Python 代理会注入 dumpDir(即转储目录)。
  • 重新打开转储需要 hprof 和索引文件都位于支持随机访问的文件系统上(NFS 可用)。
  • MCP 包名为 jvmind-mat-mcp;Registry 名称为 io.github.kengrary/jvmind-mat。更改 Java 查询层后,重新运行 mcp-server/scripts/vendor-bundle.sh,否则 wheel 会打包过时的 bundle。
  • 首次使用时,MCP 服务会将 com.jvmind.mat.query 写入 MAT 的 plugins/ 和 bundles.info;MAT 安装目录必须可写。
  • 实时捕获使用 jmap -dump:live:仅转储存活对象、触发 Full GC,并可能导致目标 JVM 暂停。默认输出目录为服务的当前工作目录;可通过 JVMIND_MCP_DUMP_DIR 或工具的 output_dir 覆盖。
  • 目前暂不支持 Smithery:其 Web UI 仅支持远程 HTTPS URL,且 CLI 的服务创建端点已移除。MCPB 构件会保留,以便日后重试。Docker 镜像用于目录审查;实际分析仍需要主机上安装 MAT 和 JDK 21。

技术栈

  • 解析/查询:Java 21 + Eclipse MAT 1.17(OSGi/Equinox)
  • MCP 服务:Python 3.10+ / MCP Python SDK 2.x / uv / stdio
  • 平台/Agent:Python + FastAPI(现有的 JVMind 平台)
  • 存储:NFS(转储文件)+ PostgreSQL(任务/报告)
  • 分发:PyPI + 官方 MCP Registry;已准备 mcp.so、Glama 和 PulseMCP 的材料;暂不支持 Smithery
  • 许可证:本项目采用 MIT 许可证(参见 LICENSE);Eclipse MAT 采用 EPL-2.0 许可证,且不随项目分发

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。