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. 01Javaアプリケーションのメモリリーク調査
  2. 02OOM発生後のヒープダンプ分析
  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 のような Web クエリ → ドメイン診断(コネクションプール のリークなど)→ 自然言語によるエージェント診断。

ステータス:Java パーサーとクエリサービスのテストが完了しています。MCP Server 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 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
チャネル場所
PyPIhttps://pypi.org/project/jvmind-mat-mcp/
Official 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設計の青写真(4 層アーキテクチャ、決定事項、マイルストーン)
01MAT ソースの調査とアーキテクチャ設計MAT の仕組みと再利用方法、インデックスファイル形式
02コアアルゴリズムと実装ドミネーターツリー、パス、リテインドサイズ、Web バックエンドの設計
03OOM にとどまらない:接続プールのリークヒープダンプで解析できるその他の問題、接続プール、スレッドプール、クラスローダー
04エージェント向け MAT API のツール化LLM による MAT の操作方法、ツールの粒度、出力のトリミング
05エンドツーエンド統合設計アップロード、キュー、進捗、3 層ソフト参照キャッシュ
06技術選定と 4 ビュー API確定した選択事項と 4 ビュー API 契約
07JVMind との統合既存プラットフォームへの接続方法(Python チーム必須)
08MAT 機能の一覧と不足点57 件のクエリを確認し、不足点の優先度を設定
09フロントエンド実装ガイドMAT のような使用感の Web UI の作成
10MAT Inspector の機能Inspector の機能と、すでに実装されている機能
12Python 統合計画Python 側の段階的な計画
13スレッドレベルの OOM 診断OOM の原因となったスレッドとその SQL の特定
14ヒープダンプのフロントエンド設計エンドポイントのマッピング、非同期ステートマシン、統合ルール
parser-cli/ — 解析レイヤー(hprof → インデックス)
ファイル内容
README.mdパーサーの概要(V1/V2 のルート)
MAT-DEPENDENCIES.mdMAT の依存関係の取得方法、バージョン/JDK の対応表、バンドル一覧
v1-parsehd/README.mdV1(ビルド不要。MAT ディストリビューション + テキスト形式の進捗表示)— 現行版
v1-parsehd/VERIFICATION.mdV1 の検証レポート(実際の hprof、修正済みの 3 つのバグ)
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.mdEquinox の組み込みテストと 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.pyMCP SDK のツール登録
src/jvmind_mat_mcp/engine.pyヒープダンプのレジストリ、バックグラウンド解析、MAT のライフサイクル
src/jvmind_mat_mcp/vendor/パッケージに同梱される query-service の 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 + エージェント⏳ 進行中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 で、再配布されません

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。