关于 JVMind MAT Heap Dump Analyzer
JVMind MAT Heap Dump Analyzer 是基于 Eclipse MAT 的 Java 堆转储分析 MCP 服务,面向排查内存问题的 Java 开发者。它支持分析本地 `.hprof` 文件或捕获运行中 JVM 的堆转储,并提供 MAT 查询及诊断工具;数据保留在本机。
主要功能
- 01打开并解析本地堆转储
- 02发现本地 JVM 并捕获堆转储
- 03查看堆概览、直方图和支配树
- 04检查线程、对象及 GC 根路径
- 05诊断内存泄漏、OOM 和连接池问题
适用场景
- 01排查 Java 应用的内存泄漏
- 02分析 OOM 前的堆转储
- 03检查线程中的 SQL 与局部变量
- 04捕获运行中 JVM 的堆状态
MCP 相关
它通过本地 stdio MCP 服务向客户端提供 Eclipse MAT 堆分析工具,共 19 项。堆转储在本机处理,不会离开设备。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
17收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 |
详细介绍
JVMind × MAT — 堆转储分析
English | 中文
基于 Eclipse Memory Analyzer(MAT)引擎的 Java 堆转储分析: 上传 → 解析 → 类 MAT 网页查询 → 领域诊断(连接池泄漏 等)→ 自然语言 Agent 诊断。
状态:Java 解析器和查询服务已通过测试。MCP 服务
v0.2.1已发布到 PyPI 和官方 MCP Registry。Python 平台集成仍在进行中。 请参阅 PROJECT-STATUS.md。
快速开始
- 项目概览 → 本文件 +
mat-study/README.md(设计蓝图;中文)。 - 当前进度 → PROJECT-STATUS.md(已完成的工作、 剩余任务、经验总结)。
- Python 团队入门 → TODO-PYTHON-TEAM.md (任务列表、API 契约、验收标准)。
- 运行查询服务 → query-service/DEPLOY.md (部署 + curl 验证)。
- 运行解析器 → parser-cli/v1-parsehd/README.md (无需构建;使用 MAT 发行版)。
- 从 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
| 渠道 | 位置 |
|---|---|
| PyPI | https://pypi.org/project/jvmind-mat-mcp/ |
| 官方 MCP Registry | io.github.kengrary/jvmind-mat |
| MCPRush | https://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_idget_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 查询并返回行及可复用的结果集 IDmat_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.md | Python 集成任务列表、API 契约、验收标准 |
mat-study/ — 设计文档(中文)
| # | 文档 | 涵盖内容 |
|---|---|---|
| — | README.md | 设计蓝图(四层架构、决策、里程碑) |
| 01 | MAT 源码研究与架构设计 | MAT 的工作原理及复用方式;索引文件格式 |
| 02 | 核心算法深入分析与落地方案 | 支配树、路径、保留大小;Web 后端设计 |
| 03 | 超越 OOM:连接池泄漏 | 堆转储还能解答哪些问题;连接池、线程池、类加载器 |
| 04 | 面向 Agent 的 MAT API 工具化 | 大模型如何驱动 MAT;工具粒度和输出精简 |
| 05 | 端到端集成设计 | 上传、队列、进度、三层软引用缓存 |
| 06 | 技术选型确认与四视图 API | 最终确定的选型和四视图 API 契约 |
| 07 | 与 JVMind 集成 | 如何连接现有平台(Python 团队必读) |
| 08 | MAT 功能清单与缺口 | 已审查 57 个查询;缺口优先级 |
| 09 | 前端实现指南 | 让 Web UI 呈现 MAT 的体验 |
| 10 | MAT Inspector 功能 | Inspector 功能及已实现内容 |
| 12 | Python 集成计划 | Python 侧的分阶段计划 |
| 13 | 线程级 OOM 诊断 | 找出触发 OOM 的线程及其 SQL |
| 14 | 堆转储前端设计 | 端点映射、异步状态机、集成规则 |
parser-cli/ — 解析层(hprof → 索引)
| 文件 | 内容 |
|---|---|
| README.md | 解析器概览(V1/V2 路线) |
| MAT-DEPENDENCIES.md | 如何获取 MAT 依赖项、版本/JDK 矩阵、捆绑包列表 |
| v1-parsehd/README.md | V1(无需构建;MAT 发行版 + 文本进度)— 当前版本 |
| v1-parsehd/VERIFICATION.md | V1 验证报告(真实 hprof、修复了三个错误) |
v1-parsehd/mat_parse_runner.py | 进度解析器(Python;可供工作进程复用) |
python-worker-snippet.py | 用于调用解析器的工作进程代码片段 |
src/.../*.java | V2 框架(自行构建 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.py | MCP SDK 工具注册 |
src/jvmind_mat_mcp/engine.py | 堆转储注册表、后台解析、MAT 生命周期管理 |
src/jvmind_mat_mcp/vendor/ | 随软件包提供的查询服务 OSGi 捆绑包 |
| Dockerfile | Glama 审核镜像(不包含 MAT/JDK;需在运行时挂载) |
tests/ | 单元测试、stdio 协议测试、可选的真实 MAT 集成测试 |
marketplace/ — 目录提交包(🟡 已准备,尚未提交)
| 文件 | 内容 |
|---|---|
| README.md | 平台状态、剩余步骤、质量差距 |
| metadata.json | 共享名称、描述、标签、安装命令 |
smithery/manifest.json | MCPB 清单(跳过 Smithery,留待后续) |
| mcp.so.md / glama.md / pulsemcp.md | 各平台的表单文案和步骤 |
模块状态
| 模块 | 形式 | 状态 | 入口点 |
|---|---|---|---|
| parser-cli | V1 = MAT 命令;V2 = 独立 jar | ✅ V1 已测试 | v1-parsehd/mat_parse_runner.py |
| query-service | OSGi 捆绑包(HTTP :8090) | ✅ 已测试 | QueryServiceApp.java / QueryHttpServer.java |
| mcp-server | Python stdio MCP(PyPI + 官方 Registry) | ✅ v0.2.1 已发布 | src/jvmind_mat_mcp/server.py |
| marketplace | 目录副本(跳过 Smithery) | 🟡 已准备,待提交 | marketplace/README.md |
| Python integration | FastAPI + 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 许可证,且不随项目分发
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。