Perfetto MCP

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

📋 Voraussetzungen
Python 3.13+ (macOS/Homebrew):
brew install python@3.13uv (empfohlen):
brew install uv
🚀 Erste Schritte
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-mcpOder 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 |
|
process_name | Zielprozess/App-Name |
|
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 |
| Slice-Namen untersuchen und Hot-Paths lokalisieren | "Finde Slice-Namen, die 'Choreographer' enthalten, und zeige die besten Beispiele" |
| 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 |
| ANR-Ereignisse mit Schweregradklassifizierung finden | "Erkenne ANRs in den ersten 10s und fasse den Schweregrad zusammen" |
| 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-Auslastung auf Thread-Ebene und Scheduling | "Erstelle ein Profil der CPU-Auslastung nach Thread und markiere die heißesten Threads" |
| Längste Haupt-Thread-Operationen finden | "Liste Haupt-Thread-Hotspots >50 ms während 10s–25s auf" |
📱 UI-Performance
Tool | Zweck | Beispiel-Prompt |
| Frames identifizieren, die Deadlines verpassen | "Finde ruckelnde Frames über 16,67 ms und liste die 20 schlimmsten auf" |
| Allgemeine Frame-Gesundheitsmetriken | "Fasse die Frame-Performance zusammen und berichte über die Jank-Rate und P99-CPU-Zeit" |
🔒 Concurrency & IPC
Tool | Zweck | Beispiel-Prompt |
| Synchronisations-Engpässe finden | "Finde Lock-Contention zwischen 15s–30s und zeige die schlimmsten Wartezeiten" |
| Binder-IPC-Performance analysieren | "Erstelle ein Profil langsamer Binder-Transaktionen und gruppiere nach Server-Prozess" |
💾 Speicheranalyse
Tool | Zweck | Beispiel-Prompt |
| Muster anhaltenden Speicherwachstums finden | "Erkenne Speicherleck-Signale über die letzten 60s" |
| 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
Trace Processor Python API - Perfettos Python-Schnittstelle
Perfetto SQL Syntax - SQL-Referenz für benutzerdefinierte Abfragen
📄 Lizenz
Apache 2.0 Lizenz. Siehe LICENSE für Details.
Appeared in Searches
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