mcpField
P
Perfetto

Perfetto

ローカル
github.com/antarikshc開発ツール22229 週間前に更新

Perfetto について

Perfetto MCP は、自然言語による質問を Perfetto トレースの分析に変換する MCP サーバーです。SQL を書かずに利用でき、Android のパフォーマンス調査を行う開発者を対象としています。ジャンク、ANR、CPU の負荷が高いスレッド、ロック競合、メモリリークなどを扱えます。

主な機能

  1. 01自然言語から PerfettoSQL クエリへの変換
  2. 02ANR の検出と根本原因の分析
  3. 03スレッド単位の CPU 使用率の分析
  4. 04ジャンクフレームの検出とフレーム概要の集計
  5. 05Binder とスレッド競合の分析

活用シーン

  1. 01トレース内でプロセスが特定の処理に長時間を費やす理由の調査
  2. 02Android アプリの ANR イベントと重大度の確認
  3. 03メインスレッドのホットスポットやメモリ増加の兆候の特定

MCP 対応

本プロジェクトは MCP サーバーとして動作し、find_slices、execute_sql_query、detect_anrs、detect_jank_frames、memory_leak_detector などの分析ツールを提供し、構造化された JSON 結果を MCP クライアントに返します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"perfetto": {
"command": "uvx",
"args": [
"perfetto-mcp"
]
}
}
}
起動コマンドuvx perfetto-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiperfetto-mcp

ツール

12

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
limitintegerいいえ
main_thread_onlybooleanいいえ
match_modestringいいえ
patternstringはい
process_nameanyいいえ
time_rangeanyいいえ
trace_pathstringはい

詳細

showcase

Perfetto MCP

自然言語から強力な Perfetto トレース分析を実現

自然言語のプロンプトを、対象を絞った Perfetto 分析に変換する Model Context Protocol(MCP)サーバーです。SQL を書かずに、ジャンクの原因をすばやく説明し、ANR を診断し、CPU を多く使うスレッドを特定し、ロック競合を明らかにし、メモリリークを検出できます。

✨ 機能

  • 自然言語 → SQL:平易な英語で質問すると、正確な Perfetto クエリが得られます
  • ANR 検出:Application Not Responding イベントを自動で特定して分析します
  • パフォーマンス分析:CPU プロファイリング、フレームジャンクの検出、メモリリークの検出
  • スレッド競合:同期処理のボトルネックやロック競合を特定します
  • Binder プロファイリング:IPC のパフォーマンスや、応答の遅いシステムとのやり取りを分析します

showcase

📋 前提条件

  • Python 3.13+(macOS/Homebrew):
    brew install [email protected]
    
  • uv(推奨):
    brew install uv
    

🚀 はじめに

Cursor

MCP サーバーをインストール

または、~/.cursor/mcp.json(グローバル)または .cursor/mcp.json(プロジェクト)に追加します:

{
  "mcpServers": {
    "perfetto-mcp": {
      "command": "uvx",
      "args": ["perfetto-mcp"]
    }
  }
}
Claude Code

このコマンドを実行します。詳しくはClaude Code の MCP ドキュメントを参照してください。

# Add to user scope
claude mcp add perfetto-mcp --scope user -- uvx perfetto-mcp

または、~/claude.json(macOS)または %APPDATA%\Claude\claude.json(Windows)を編集します:

{
  "mcpServers": {
    "perfetto-mcp": {
      "command": "uvx",
      "args": ["perfetto-mcp"]
    }
  }
}
VS Code

VS Code にインストール

または、.vscode/mcp.json(プロジェクト)に追加するか、「MCP: Add Server」コマンドを実行します:

{
  "mcpServers": {
    "perfetto-mcp": {
      "command": "uvx",
      "args": ["perfetto-mcp"]
    }
  }
}

GitHub Copilot Chat のエージェントモードで有効にしてください。

Codex

~/.codex/config.toml を編集します:

[mcp_servers.perfetto-mcp]
command = "uvx"
args = ["perfetto-mcp"]
オプション:ローカルの trace_processor_shell バイナリを使用する

ネットワーク環境でダウンロードがブロックされる場合は、 PERFETTO_MCP_TRACE_PROCESSOR_BIN_PATH にローカルの trace_processor_shell バイナリの絶対パスを設定します。

この環境変数が設定されている場合、perfetto-mcp はそのバイナリを直接使用します。 設定されていない場合は、既定の perfetto Python の動作がそのまま使われます。

例(mcp.json):

{
  "mcpServers": {
    "perfetto-mcp": {
      "command": "uvx",
      "args": ["perfetto-mcp"],
      "env": {
        "PERFETTO_MCP_TRACE_PROCESSOR_BIN_PATH": "D:/tools/perfetto/trace_processor_shell.exe"
      }
    }
  }
}

例(~/.codex/config.toml):

[mcp_servers.perfetto-mcp]
command = "uvx"
args = ["perfetto-mcp"]
[mcp_servers.perfetto-mcp.env]
PERFETTO_MCP_TRACE_PROCESSOR_BIN_PATH = "D:/tools/perfetto/trace_processor_shell.exe"
ローカルインストール(開発サーバー)
cd perfetto-mcp-server
uv sync
uv run mcp dev src/perfetto_mcp/dev.py
ローカル MCP
{
  "mcpServers": {
    "perfetto-mcp-local": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/git/repo/perfetto-mcp",
        "run",
        "-m",
        "perfetto_mcp"
      ],
      "env": { "PYTHONPATH": "src" }
    }
  }
}
pip を使用
pip3 install perfetto-mcp
python3 -m perfetto_mcp

📖 使い方

プロンプトの例:

Perfetto トレースを見ると、FragmentManager の実行に 438ms かかっています。時間がかかっている原因を特定できますか?

必須パラメーター

すべてのツールに、次の 2 つの入力が必要です:

パラメーター説明例
trace_pathPerfetto トレースへの絶対パス/path/to/trace.perfetto-trace
process_name対象のプロセス/アプリ名com.example.app
プロンプトでの指定

トレースとプロセスを明示し、プロンプトの先頭に次の文を付けてください:

"プロセス com.example.app の Perfetto トレース /absolute/path/to/trace.perfetto-trace を使用してください"

オプションのフィルター

多くのツールは追加のフィルタリングに対応しています(ただし、LLM に任せてください):

  • time_range:{start_ms: 10000, end_ms: 25000}
  • ツール固有のしきい値:min_block_ms、jank_threshold_ms、limit

🛠️ 利用可能なツール

🔎 探索と検出
ツール目的プロンプトの例
find_slicesスライス名を調査し、負荷の高いパスを特定します「'Choreographer' を含むスライス名を検索し、代表的な例を上位から表示してください」
execute_sql_query高度な分析のためにカスタム PerfettoSQL を実行します「最初の 30 秒間のスレッドとフレームの相関を調べるカスタム SQL を実行してください」
🚨 ANR 分析

注:記録されたトレースに ANR が含まれている場合に役立ちます

ツール目的プロンプトの例
detect_anrs重大度の分類とともに ANR イベントを検出します「最初の 10 秒間の ANR を検出し、重大度を要約してください」
anr_root_cause_analyzer発生可能性の高い原因を順位付けして、ANR の原因を詳しく分析します「20,000 ms 付近の ANR の根本原因を分析し、可能性の高い原因を順位付けしてください」
🎯 パフォーマンスプロファイリング
ツール目的プロンプトの例
cpu_utilization_profilerスレッド単位の CPU 使用率とスケジューリングを調べます「スレッドごとの CPU 使用率をプロファイリングし、最も負荷の高いスレッドを特定してください」
main_thread_hotspot_slicesメインスレッドで実行時間が最も長い処理を特定します「10 秒から 25 秒の間にある、50 ms を超えるメインスレッドのホットスポットを一覧表示してください」
📱 UI パフォーマンス
ツール目的プロンプトの例
detect_jank_framesフレーム期限を超過したフレームを特定します「16.67 ms を超えるカクついたフレームを見つけ、最も悪いものを 20 件一覧表示してください」
frame_performance_summaryフレーム全体の健全性に関する指標を示します「フレームパフォーマンスを要約し、カクつき率と P99 CPU 時間を報告してください」
🔒 並行処理と IPC
ツール目的プロンプトの例
thread_contention_analyzer同期処理のボトルネックを特定します「15 秒から 30 秒の間のロック競合を見つけ、待ち時間が最も長いものを表示してください」
binder_transaction_profilerBinder IPC のパフォーマンスを分析します「処理の遅い Binder トランザクションをプロファイリングし、サーバープロセスごとにグループ化してください」
💾 メモリ分析
ツール目的プロンプトの例
memory_leak_detector継続的なメモリ増加のパターンを特定します「直近 60 秒間のメモリリークの兆候を検出してください」
heap_dominator_tree_analyzerメモリを大量に消費するクラスを特定します「ヒープのドミネータクラスを分析し、問題となるものを上位から一覧表示してください」
出力形式

すべてのツールは、次の項目を含む構造化 JSON を返します。

  • Summary:主な調査結果
  • Details:ツール固有の結果
  • Metadata:実行コンテキストと使用されたフォールバック

📚 リソース

📄 ライセンス

Apache 2.0 ライセンス。詳細は LICENSE を参照してください。


GitHub • Issues • ドキュメント

コメント

MCP は初めてですか?

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

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