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・接続プールの診断
活用シーン
- 01Javaアプリケーションのメモリリーク調査
- 02OOM発生後のヒープダンプ分析
- 03スレッド内のSQLやローカル変数の確認
- 04実行中JVMのヒープ状態の取得
MCP 対応
ローカルstdio MCPサーバーを通じて、Eclipse MATのヒープ分析ツールをクライアントに公開します。全19種類のツールを備え、ヒープダンプは端末内で処理されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
17掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい |
詳細
JVMind × MAT — ヒープダンプ解析
English | 中文
Eclipse Memory Analyzer(MAT)エンジンを基盤とする、Java ヒープダンプ解析です: アップロード → 解析 → MAT のような Web クエリ → ドメイン診断(コネクションプール のリークなど)→ 自然言語によるエージェント診断。
ステータス:Java パーサーとクエリサービスのテストが完了しています。MCP Server
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 Server(公開済み)
MAT によるヒープ解析機能を Claude Desktop、Cursor、VS Code に提供する、ローカル stdio MCP サーバーです。ローカルの 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/ |
| Official 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_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.md | Python 統合タスクリスト、API 契約、受け入れ条件 |
mat-study/ — 設計ドキュメント(中国語)
| # | ドキュメント | 内容 |
|---|---|---|
| — | README.md | 設計の青写真(4 層アーキテクチャ、決定事項、マイルストーン) |
| 01 | MAT ソースの調査とアーキテクチャ設計 | MAT の仕組みと再利用方法、インデックスファイル形式 |
| 02 | コアアルゴリズムと実装 | ドミネーターツリー、パス、リテインドサイズ、Web バックエンドの設計 |
| 03 | OOM にとどまらない:接続プールのリーク | ヒープダンプで解析できるその他の問題、接続プール、スレッドプール、クラスローダー |
| 04 | エージェント向け MAT API のツール化 | LLM による MAT の操作方法、ツールの粒度、出力のトリミング |
| 05 | エンドツーエンド統合設計 | アップロード、キュー、進捗、3 層ソフト参照キャッシュ |
| 06 | 技術選定と 4 ビュー API | 確定した選択事項と 4 ビュー API 契約 |
| 07 | JVMind との統合 | 既存プラットフォームへの接続方法(Python チーム必須) |
| 08 | MAT 機能の一覧と不足点 | 57 件のクエリを確認し、不足点の優先度を設定 |
| 09 | フロントエンド実装ガイド | MAT のような使用感の Web UI の作成 |
| 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、修正済みの 3 つのバグ) |
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 files) | サービスの実装: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/ | パッケージに同梱される query-service の 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 + エージェント | ⏳ 進行中 | TODO-PYTHON-TEAM.md |
重要事項(再確認不要)
- MAT の依存関係は Maven Central にないため、p2 リポジトリまたはローカルの Directory ターゲットとともに Tycho(
eclipse-plugin)を使用してください。<dependencies>は追加しないでください。 - バージョン ↔ JDK:1.17 → JDK 21、1.14 → JDK 17、1.12 → JDK 11(3 か所すべてのバージョンを同期してください)。
- デプロイ: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 に古いバンドルが含まれます。 - 初回使用時、MCP サーバーは MAT の
plugins/とbundles.infoにcom.jvmind.mat.queryを書き込みます。MAT のインストール先は書き込み可能である必要があります。 - ライブキャプチャでは
jmap -dump:liveを使用します。ライブオブジェクトのみをダンプし、Full GC を実行するため、対象の JVM が一時停止する可能性があります。デフォルトの出力先はサーバーの現在の作業ディレクトリです。JVMIND_MCP_DUMP_DIRまたはツールのoutput_dirで変更できます。 - Smithery は現時点では対象外です。ウェブ 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 - プラットフォーム/エージェント:Python + FastAPI(既存の JVMind プラットフォーム)
- ストレージ:NFS(ダンプファイル)+ PostgreSQL(タスク/レポート)
- 配布:PyPI + 公式 MCP Registry。mcp.so、Glama、PulseMCP 向けの資料を準備済みです。Smithery は対象外です。
- ライセンス:このプロジェクトは MIT(LICENSE を参照)。Eclipse MAT は EPL-2.0 で、再配布されません
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。