Skip to main content
Glama

showcase

Perfetto MCP

Verwandeln Sie natürliche Sprache in leistungsstarke Perfetto-Trace-Analysen

Ein Model Context Protocol (MCP)-Server, der Prompts in natürlicher Sprache in gezielte Perfetto-Analysen umwandelt. Erklären Sie schnell Jank, diagnostizieren Sie ANRs, finden Sie CPU-Hot-Threads, decken Sie Lock-Contention auf und finden Sie Speicherlecks – alles ohne SQL zu schreiben.

✨ Funktionen

  • Natürliche Sprache → SQL: Stellen Sie Fragen in einfachem Englisch, erhalten Sie präzise Perfetto-Abfragen

  • ANR-Erkennung: Automatische Identifizierung und Analyse von "Application Not Responding"-Ereignissen

  • Performance-Analyse: CPU-Profiling, Frame-Jank-Erkennung, Speicherleck-Erkennung

  • Thread-Contention: Finden Sie Synchronisations-Engpässe und Lock-Contention

  • Binder-Profiling: Analysieren Sie IPC-Performance und langsame Systeminteraktionen

showcase

📋 Voraussetzungen

  • Python 3.13+ (macOS/Homebrew):

    brew install python@3.13
  • uv (empfohlen):

    brew install uv

🚀 Erste Schritte

Install MCP Server

Oder fügen Sie es zu ~/.cursor/mcp.json (global) oder .cursor/mcp.json (Projekt) hinzu:

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

Führen Sie diesen Befehl aus. Weitere Informationen finden Sie in der Claude Code MCP-Dokumentation.

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

Oder bearbeiten Sie ~/claude.json (macOS) oder %APPDATA%\Claude\claude.json (Windows):

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

oder fügen Sie es zu .vscode/mcp.json (Projekt) hinzu oder führen Sie den Befehl "MCP: Add Server" aus:

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

Aktivieren Sie es im Agent-Modus von GitHub Copilot Chat.

Bearbeiten Sie ~/.codex/config.toml:

[mcp_servers.perfetto-mcp]
command = "uvx"
args = ["perfetto-mcp"]

Optional: Verwendung einer lokalen trace_processor_shell-Binärdatei

Wenn Ihre Netzwerkumgebung Downloads blockiert, setzen Sie PERFETTO_MCP_TRACE_PROCESSOR_BIN_PATH auf einen absoluten Pfad zu einer lokalen trace_processor_shell-Binärdatei.

Wenn diese Umgebungsvariable gesetzt ist, verwendet perfetto-mcp diese Binärdatei direkt. Wenn sie nicht gesetzt ist, bleibt das Standardverhalten von perfetto (Python) unverändert.

Beispiel (mcp.json):

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

Beispiel (~/.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"

Lokale Installation (Entwicklungsserver)

cd perfetto-mcp-server
uv sync
uv run mcp dev src/perfetto_mcp/dev.py
{
  "mcpServers": {
    "perfetto-mcp-local": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/git/repo/perfetto-mcp",
        "run",
        "-m",
        "perfetto_mcp"
      ],
      "env": { "PYTHONPATH": "src" }
    }
  }
}
pip3 install perfetto-mcp
python3 -m perfetto_mcp

📖 Verwendung

Beispiel für einen Start-Prompt:

Im Perfetto-Trace sehe ich, dass der FragmentManager 438ms für die Ausführung benötigt. Kannst du herausfinden, warum es so lange dauert?

Erforderliche Parameter

Jedes Tool benötigt diese zwei Eingaben:

Parameter

Beschreibung

Beispiel

trace_path

Absoluter Pfad zu Ihrem Perfetto-Trace

/path/to/trace.perfetto-trace

process_name

Zielprozess/App-Name

com.example.app

In Ihren Prompts

Seien Sie explizit bezüglich des Traces und des Prozesses, stellen Sie Ihrem Prompt folgendes voran:

"Verwende Perfetto-Trace /absoluter/pfad/zu/trace.perfetto-trace für Prozess com.example.app"

Optionale Filter

Viele Tools unterstützen zusätzliche Filter (lassen Sie das jedoch Ihren LLM handhaben):

  • time_range: {start_ms: 10000, end_ms: 25000}

  • Tool-spezifische Schwellenwerte: min_block_ms, jank_threshold_ms, limit

🛠️ Verfügbare Tools

🔎 Erkundung & Entdeckung

Tool

Zweck

Beispiel-Prompt

find_slices

Slice-Namen untersuchen und Hot-Paths lokalisieren

"Finde Slice-Namen, die 'Choreographer' enthalten, und zeige die besten Beispiele"

execute_sql_query

Benutzerdefiniertes PerfettoSQL für fortgeschrittene Analysen ausführen

"Führe benutzerdefiniertes SQL aus, um Threads und Frames in den ersten 30s zu korrelieren"

🚨 ANR-Analyse

Hinweis: Hilfreich, wenn der aufgezeichnete Trace ein ANR enthält

Tool

Zweck

Beispiel-Prompt

detect_anrs

ANR-Ereignisse mit Schweregradklassifizierung finden

"Erkenne ANRs in den ersten 10s und fasse den Schweregrad zusammen"

anr_root_cause_analyzer

Tiefenanalyse von ANR-Ursachen mit gewichteter Wahrscheinlichkeit

"Analysiere die ANR-Hauptursache um 20.000 ms und bewerte wahrscheinliche Ursachen"

🎯 Performance-Profiling

Tool

Zweck

Beispiel-Prompt

cpu_utilization_profiler

CPU-Auslastung auf Thread-Ebene und Scheduling

"Erstelle ein Profil der CPU-Auslastung nach Thread und markiere die heißesten Threads"

main_thread_hotspot_slices

Längste Haupt-Thread-Operationen finden

"Liste Haupt-Thread-Hotspots >50 ms während 10s–25s auf"

📱 UI-Performance

Tool

Zweck

Beispiel-Prompt

detect_jank_frames

Frames identifizieren, die Deadlines verpassen

"Finde ruckelnde Frames über 16,67 ms und liste die 20 schlimmsten auf"

frame_performance_summary

Allgemeine Frame-Gesundheitsmetriken

"Fasse die Frame-Performance zusammen und berichte über die Jank-Rate und P99-CPU-Zeit"

🔒 Concurrency & IPC

Tool

Zweck

Beispiel-Prompt

thread_contention_analyzer

Synchronisations-Engpässe finden

"Finde Lock-Contention zwischen 15s–30s und zeige die schlimmsten Wartezeiten"

binder_transaction_profiler

Binder-IPC-Performance analysieren

"Erstelle ein Profil langsamer Binder-Transaktionen und gruppiere nach Server-Prozess"

💾 Speicheranalyse

Tool

Zweck

Beispiel-Prompt

memory_leak_detector

Muster anhaltenden Speicherwachstums finden

"Erkenne Speicherleck-Signale über die letzten 60s"

heap_dominator_tree_analyzer

Speicherfressende Klassen identifizieren

"Analysiere Heap-Dominator-Klassen und liste die größten Übeltäter auf"

Ausgabeformat

Alle Tools geben strukturiertes JSON zurück mit:

  • Summary: Zusammenfassung der Ergebnisse

  • Details: Tool-spezifische Ergebnisse

  • Metadata: Ausführungskontext und verwendete Fallbacks

📚 Ressourcen

📄 Lizenz

Apache 2.0 Lizenz. Siehe LICENSE für Details.


-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/antarikshc/perfetto-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server