/ 目錄 / 演練場 / perfetto-mcp
● 社群 antarikshc ⚡ 即開即用

perfetto-mcp

作者 antarikshc · antarikshc/perfetto-mcp

用自然語言提問 Perfetto trace — 畫面卡頓、ANR、CPU 熱點執行緒、鎖競爭、記憶體洩漏 — 不需要自己寫 trace SQL 就能得到答案。

perfetto-mcp 在背後執行 Perfetto 的 trace processor,並提供自然語言工具,將你的問題轉換成精準查詢。涵蓋常見的 Android/Linux 效能排查類別:slice 探索、ANR 偵測、CPU/執行緒分析、並行問題、堆積記憶體分析。

為什麼要用

核心特性

即時演示

實際使用效果

perfetto.replay ▶ 就緒
0/0

安裝

選擇你的客戶端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "perfetto": {
      "command": "uvx",
      "args": [
        "perfetto-mcp"
      ],
      "_inferred": true
    }
  }
}

開啟 Claude Desktop → Settings → Developer → Edit Config。儲存後重啟應用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "perfetto": {
      "command": "uvx",
      "args": [
        "perfetto-mcp"
      ],
      "_inferred": true
    }
  }
}

Cursor 使用與 Claude Desktop 相同的 mcpServers 格式。專案級設定優先於全域。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "perfetto": {
      "command": "uvx",
      "args": [
        "perfetto-mcp"
      ],
      "_inferred": true
    }
  }
}

點擊 Cline 側欄中的 MCP Servers 圖示,然後選 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "perfetto": {
      "command": "uvx",
      "args": [
        "perfetto-mcp"
      ],
      "_inferred": true
    }
  }
}

格式與 Claude Desktop 相同。重啟 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "perfetto",
      "command": "uvx",
      "args": [
        "perfetto-mcp"
      ]
    }
  ]
}

Continue 使用伺服器物件陣列,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "perfetto": {
      "command": {
        "path": "uvx",
        "args": [
          "perfetto-mcp"
        ]
      }
    }
  }
}

加入 context_servers。Zed 儲存後熱重載。

claude mcp add perfetto -- uvx perfetto-mcp

一行命令搞定。用 claude mcp list 驗證,claude mcp remove 移除。

使用場景

實戰用法: perfetto-mcp

找出錄製 trace 中 UI 卡頓的原因

👤 Android 開發者、效能工程師 ⏱ ~25 min advanced

何時使用: 使用者回報「滑動時應用程式會卡頓」。你已錄製了一份 Perfetto trace,接下來該怎麼做?

前置條件
  • Perfetto .pftrace 檔案 — perfetto / systrace / Android Studio Profiler
步驟
  1. 將 MCP 指向 trace 檔
    開啟 /tmp/jank.pftrace,針對 com.example.app 程序。找出卡頓影格 — 主執行緒上任何超過 16.67ms 的情況。✓ 已複製
    → 卡頓影格清單及 slice 上下文
  2. 歸因問題根源
    針對前 3 個卡頓影格,哪個 slice 佔用最多時間?影格錯過截止時間時,主執行緒在做什麼?✓ 已複製
    → 每個影格的原因
  3. 提出修復建議
    根據這些瓶頸,建議具體的改善方式(移出主執行緒、快取等)。✓ 已複製
    → 修復計畫

結果: 不需要盯著時間軸 UI,即可找出畫面卡頓的根本原因。

注意事項
  • 取樣間隔太粗略,遺漏了短暫的熱點方法 — 有需要時以更高取樣頻率重新錄製

從 trace 診斷 ANR 問題

👤 處理 ANR 問題的 Android 開發者 ⏱ ~20 min advanced

何時使用: 線上環境發生 ANR 且能錄製 trace 時。

步驟
  1. 偵測
    對 /traces/anr.pftrace 執行 ANR 分析,針對 com.example.app 程序。是什麼阻塞了主執行緒?✓ 已複製
    → 阻塞呼叫鏈
  2. 找出鎖
    這是鎖競爭嗎?找出持有鎖與等待鎖的執行緒以及對應的資源。✓ 已複製
    → 競爭關係圖

結果: 找出 ANR 根本原因,並確認應喚醒哪位值班人員。

追查疑似記憶體洩漏

👤 Android / 原生開發者 ⏱ ~30 min advanced

何時使用: 特定畫面的堆積記憶體持續增長。

步驟
  1. 分析堆積
    針對 trace X、程序 Y:執行記憶體分析。哪些配置佔主導地位?保留集是否單調增長?✓ 已複製
    → 記憶體配置摘要與趨勢
  2. 關聯分析
    哪些 Activity / Fragment / slice 與記憶體增長尖峰有關?✓ 已複製
    → 關聯報告

結果: 找出記憶體洩漏的嫌疑目標。

注意事項
  • GC 尚未執行 — 增長不一定是洩漏 — 在兩次錄製之間手動觸發 GC,再進行比較

組合

與其他 MCP 搭配,撬動十倍槓桿

perfetto + filesystem

儲存每個版本的 trace 分析結果,用於效能回歸追蹤

分析 vX.Y.Z 的卡頓 trace,並將摘要儲存到 /perf-reports/vX.Y.Z.md。✓ 已複製

工具

此 MCP 暴露的能力

工具輸入參數何時呼叫成本
explore_slices trace_path, process, time_range? 初次接觸新 trace 時先掌握整體狀況 free
detect_anr trace_path, process 調查 ANR 問題時使用 free
cpu_profile trace_path, process, threshold_ms? 追查 CPU 熱點時使用 free
thread_contention trace_path, process 排查並行問題時使用 free
memory_analysis trace_path, process 調查記憶體問題時使用 free
custom_sql trace_path, sql: str 當你明確知道要執行哪條 Perfetto SQL 時使用 free

成本與限制

運行它的成本

API 配額
None (local)
每次呼叫 Token 數
Trace 摘要通常為 2k-10k tokens
費用
免費(Apache 2.0)
提示
如果大致知道問題發生的時間點,務必傳入時間範圍 — 可大幅減少查詢時間與 token 用量。

安全

權限、密鑰、影響範圍

憑證儲存: 不需要;使用本地 trace 檔案
資料出站: 摘要會傳送至你的 LLM 服務商 — trace 可能包含敏感的程序/應用程式名稱

故障排查

常見錯誤與修復

Trace file too large to parse

Perfetto 可處理 GB 等級的 trace,但首次呼叫可能較慢。請耐心等待;後續查詢會快很多。

Process name not found

請用 custom_sql SELECT name FROM process 確認。程序名稱可能與應用程式套件 ID 不同。

Python version error

需要 3.13+。請先執行 uv python install 3.13,再執行 uvx perfetto-mcp

驗證: python --version

替代方案

perfetto-mcp 對比其他方案

替代方案何時用它替代權衡
Perfetto UI (ui.perfetto.dev)需要視覺化時間軸分析時手動操作;無 LLM 解說
Android Studio Profiler主要在 Android Studio 中工作時綁定 IDE;可腳本化程度較低

更多

資源

📖 閱讀 GitHub 上的官方 README

🐙 查看未解決的 issue

🔍 瀏覽全部 400+ MCP 伺服器和 Skills