JProfiler ヘルプ

MCPサーバー

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

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

JProfilerのMCP統合は、以下のAIエージェントをサポートしています。

  • Antigravity
    Googleのエージェント型コーディングツール。グローバル統合をサポートしています。
  • Claude Code
    AnthropicのCLIベースのコーディングエージェント。グローバル統合とプロジェクトスコープ統合の両方をサポートしています。
  • Claude Desktop
    Anthropicのデスクトップアプリケーション。グローバル統合をサポートしています。
  • Codex
    OpenAIのCLIベースのコーディングエージェント。グローバル統合をサポートしています。
  • Cursor
    AI搭載のコードエディタ。グローバル統合とプロジェクトスコープ統合の両方をサポートしています。
  • 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エージェントによって起動されます。

CLIセットアップ

ej-technologiesウェブサイトのMCPセットアップページでは、AIエージェント用のMCPサーバーをダウンロードして設定するワンラインインストールスクリプトが提供されています。macOSおよびLinuxでは、以下を実行します。

curl -fsSL https://www.ej-technologies.com/jprofiler/mcp/install.sh | sh

Windowsでは、PowerShellで次のコマンドを実行します。

irm https://www.ej-technologies.com/jprofiler/mcp/install.ps1 | iex

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

npmを使用してMCPサーバーを手動で設定する場合は、@ej-technologies/jprofiler-mcp npmパッケージを使用できます。初回使用時にJProfilerが自動的にダウンロードおよびプロビジョニングされるため、別途インストールする必要はありません。また、無料評価版の開始オプションを含むライセンスのアクティベーションも処理されます。

エージェントの設定ファイルに以下のMCPサーバー設定を追加します。

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

ラッパーはユーザーのホームディレクトリにある.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ファイル。

エージェントに質問できる内容

セッションが記録された後、またはスナップショットがロードされた後、AIエージェントに対して記録されたデータに関する質問を自然言語で行うことができます。エージェントは適切な分析手順を自身で選択します。以下の領域がサポートされています。

  • パフォーマンス
    CPUホットスポット、バックトレース付き呼び出しツリー、スレッドごとの帰属、実経過時間(wall clock time)分析。例: 「チェックアウトのエンドポイントが遅いのはなぜですか?」
  • メモリ
    最大オブジェクト、保持サイズ(retained size)、GCルートへの参照チェーン、無駄なメモリの自動検出を含むヒープダンプ分析。エージェントは、オンデマンドで実行中のJVMのヒープダンプを作成することもできます。例: 「このヒープダンプでメモリを保持しているものは何ですか?」
  • 割り当て
    すでにガベージコレクションされたオブジェクトを含む、オブジェクトがどこで作成されたかを示す割り当てホットスポットと呼び出しツリー。例: 「なぜこれほど多くのバイト配列が割り当てられているのですか?」
  • プローブイベント
    JDBCやHTTPサーバーなどの上位プローブからの個々のイベント(例: 単一のSQLステートメントや所要時間およびスタックトレースを伴うHTTPリクエストなど)。例: 「最も遅いSQLステートメントはどれですか?」
  • テレメトリー
    ヒープメモリ、CPU負荷、スレッド、GCアクティビティ、その他の記録されたテレメトリーの時系列データ。例: 「負荷テスト中にヒープ使用量はどのように推移しましたか?」
  • ガベージコレクション
    個々のガベージコレクションの原因、ポーズ時間、各コレクション前後のヒープ使用量。例: 「なぜこれほど長いGCポーズが発生しているのですか?」
  • Monitor & ロック
    ロック競合とデッドロックの分析(スタックトレースを含むロッキング履歴を含む)。例: 「スレッドが競合しているロックはどれですか?」
  • スレッド
    スレッドダンプおよびスレッド状態ごとのスレッド別時間内訳。例: 「すべてのスレッドは何をしていますか?」
  • MBean
    プロファイルされたJVMからキャプチャされたJMX MBean属性値のスナップショット。例: 「接続プールの現在のサイズはどれくらいですか?」
  • 遅い異常値
    通常よりも時折大幅に遅くなるメソッドと、最も遅い個々の呼び出しの検査。例: 「なぜこの呼び出しは時々100倍も遅くなるのですか?」

記録対象のサブシステムおよびプロファイルされたパッケージは、記録設定においてセッションごとにAIエージェントによって選択されるため、MCPサーバーのインストール時に設定を行う必要はありません。

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

プローブ固有の設定は、advanced記録設定のprobeConfigキーを使用して調整できます。たとえば、HTTPサーバープローブのURL分割の変更や、JDBCプローブでのPreparedStatementパラメータの記録などです。属性名はJProfilerインストールのconfig/jprofiler_config.xsdにあるセッション設定のものであり、エージェントはこれらをjprofiler://config/probes MCPリソースから読み取ることもできます。

呼び出しツリーの分割の上限(splitting cap)やサンプリング周波数など、セッション全体にわたるチューニング設定は、advanced記録設定のキーとして直接設定できます。サポートされているすべての設定のリファレンスは、jprofiler://config/session MCPリソースとして提供されます。

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