JProfiler ヘルプ

MCPサーバー

Model Context Protocol (MCP)は、AIエージェントが外部ツールやデータソースと連携できるようにするオープン標準です。JProfilerはMCPサーバーを提供しており、AIエージェントがJavaアプリケーションをプロファイルし、パフォーマンスデータを分析し、ヒープダンプを検査できます。このインテグレーションを使用することで、AIエージェントにパフォーマンスのホットスポットの検出、メモリ使用量の分析、ガベージコレクションの問題の調査を依頼でき、エージェントはJProfilerのプロファイリング機能を使用して回答を提供します。

サポートされているAIエージェント

JProfilerのMCPインテグレーションは、以下のAIエージェントをサポートしています:

  • Claude Code
    AnthropicのCLIベースのコーディングエージェントです。グローバルおよびプロジェクトスコープのインテグレーションの両方をサポートします。
  • Claude Desktop
    Anthropicのデスクトップアプリケーションです。グローバルインテグレーションをサポートします。
  • Codex
    OpenAIのCLIベースのコーディングエージェントです。グローバルインテグレーションをサポートします。
  • Gemini CLI
    GoogleのCLIベースのコーディングエージェントです。グローバルインテグレーションをサポートします。
  • Junie
    IntelliJ IDEAにおけるJetBrainsのAIコーディングエージェントです。IDEのTools→Junie→MCP Settingsで手動設定が必要です。
  • Junie CLI
    JetBrainsのCLIベースのAIエージェントです。グローバルおよびプロジェクトスコープのインテグレーションの両方をサポートします。
  • OpenCode
    オープンソースのCLIベースのコーディングエージェントです。グローバルおよびプロジェクトスコープのインテグレーションの両方をサポートします。

より多くのAIエージェントがMCP標準を採用するにつれて、サポートされるエージェントのリストは拡張される予定です。

インテグレーションの設定

JProfilerをAIエージェントと連携させるには、メインメニューからSession→AI Agent Integrationsを実行します。これにより、AIエージェントインテグレーションパネルを含む一般設定ダイアログが開きます。

AIエージェントインテグレーションパネルで、ドロップダウンから目的のAIエージェントを選択します。プロジェクトスコープのインテグレーションをサポートするエージェントの場合、グローバル設定とプロジェクトスコープ設定のどちらかを選択できます。グローバルインテグレーションは、現在のユーザーのすべてのプロジェクトでJProfiler MCPサーバーを利用可能にします。一方、プロジェクトスコープのインテグレーションは、選択したプロジェクトディレクトリに設定ファイルを書き込むため、そのプロジェクトでのみ有効になります。異なるプロジェクトに対して複数回インテグレーションを実行することができます。

Integrateボタンをクリックしてインテグレーションを実行します。JProfilerはエージェントの設定ファイルを更新して、JProfiler MCPサーバーを登録します。インテグレーション後、AIエージェントはJProfiler MCPサーバーを検出して使用できるようになります。MCPサーバーの実行ファイル bin/jpmcpは、必要に応じてAIエージェントによって起動されます。

MCPラッパーを使用した手動セットアップ

AIエージェントが動作するマシンにJProfilerがインストールされていない場合は、MCPラッパーとして@ej-technologies/jprofiler-mcp npmパッケージを使用できます。このラッパーは初回使用時にJProfilerを自動的にダウンロードしてプロビジョニングするため、別途インストールは不要です。また、無料評価版の開始オプションを含むライセンスのアクティベーションも処理します。

ラッパーを手動でセットアップするには、エージェントの設定ファイルに以下のMCPサーバー設定を追加します:

{
   "mcpServers": {
     "jprofiler": {
       "command": "npx",
       "args": ["-y", "@ej-technologies/jprofiler-mcp"]
     }
   }
}

bin/jpmcpで使用可能なコマンドラインオプションと同じものをargs配列に追加できます。例えば、分析を特定のパッケージに限定するには:

"args": ["-y", "@ej-technologies/jprofiler-mcp", "--filter", "com.example.app"]

ラッパーはユーザーのホームディレクトリ内の.jprofiler-mcpディレクトリにJProfilerをダウンロードし、SHA-256チェックサムでダウンロードを検証します。以降の実行では既存のインストールが再利用されます。

機能

JProfiler MCPサーバー bin/jpmcpは、MCP標準プロトコルを介してAIエージェントと通信するコマンドラインツールです。JProfiler GUIと同様に、有効なJProfilerライセンスが必要です。

MCPサーバーはいくつかの方法でJavaアプリケーションをプロファイルできます:

  • プロセスの起動
    MCPサーバーはプロファイリングを有効にしてJavaプロセスを起動できます。必要なJVMパラメーターを提供し、設定されたすべてのサブシステムのデータを記録します。
  • ローカルプロセスへのattach
    既に実行中のJVMに対して、MCPサーバーは利用可能なJavaプロセスを一覧表示し、プロセスIDでattachできます。
  • Dockerコンテナへのattach
    MCPサーバーはDockerコンテナ内で実行されているJavaプロセスへのattachをサポートしており、ローカルプロセスと同じプロファイリング機能を提供します。

ライブアプリケーションのプロファイリングとは独立して、既存のスナップショットを分析できます:

  • JProfilerスナップショット (.jps)
    CPU、メモリ、プローブデータを含む完全なJProfilerスナップショットです。同じタイプのスナップショットを2つ読み込んで、パフォーマンスのリグレッションを検出するためのベースライン比較を行えます。
  • HPROFスナップショット (.hprof)
    メモリ分析用の標準Javaヒープダンプです。
  • PHDスナップショット (.phd)
    IBMポータブルヒープダンプファイルです。
  • JFR記録 (.jfr)
    CPUおよびプローブデータを含むJDK Flight Recorderファイルです。

メモリ分析では、MCPサーバーはDockerコンテナ内で実行されているものを含む、実行中のJVMのヒープダンプを作成できます。ヒープデータは、最大オブジェクトとそのretainedサイズ、個々のオブジェクトのretainedクラス、および全体的なクラスヒストグラムの観点から分析されます。

パフォーマンス分析

AIエージェントは、CPUプロファイリングおよびすべての記録済みプローブサブシステムのパフォーマンスホットスポットと呼び出しツリーを取得できます。分析は特定のパッケージに絞り込むことができ、エージェントは個々のホットスポットを反復的にドリルダウンしてバックトレースを調べることができます。CPUデータについては、runnable-onlyモードとwall-timeモードの両方がサポートされています。

記録されるサブシステムは、以下で説明する--subsystemsコマンドラインオプションで設定できます。

コマンドラインオプション

MCPサーバーは通常、AIエージェントによって引数なしで起動されますが、エージェントのMCP設定にコマンドラインオプションを渡してプロファイリングの動作をカスタマイズできます:

  • -f, --filter
    プロファイルするプロジェクトパッケージのカンマ区切りリストです。例えばcom.example.app,org.serviceのように指定します。これにより分析が関連するコードに限定され、ノイズが減少し、AIエージェントのコンテキスト使用量が最適化されます。
  • -s, --subsystems
    記録されるサブシステムのカンマ区切りリストです。使用可能な値はcpujdbcjpamongo_dbcassandrahttp_serverhttp_clientwsjndijmskafka_consumerrmigrpcaisocketfileprocessgcです。デフォルトでは、cpujdbcjpahttp_serverhttp_clientmongo_dbgcが記録されます。
  • -d, --max-depth
    バックトレースに使用される最大スタック深度です。

複雑なプロファイリングシナリオ

MCPインテグレーションはシンプルなプロファイリングシナリオで最も効果を発揮します。カスタムトリガー、高度なフィルター設定、特殊な記録モードなど、プロファイリング設定の詳細な制御が必要な複雑なシナリオでは、JProfiler GUIを使用してJProfilerスナップショット(.jps)を手動で記録し、AIエージェントに記録済みデータを分析させることをお勧めします。