Perfetto MCP

Perfetto MCP
Convierte el lenguaje natural en un potente análisis de trazas de Perfetto
Un servidor del Protocolo de Contexto de Modelo (MCP) que transforma prompts en lenguaje natural en análisis enfocados de Perfetto. Explica rápidamente el jank, diagnostica ANR, detecta hilos de CPU críticos, descubre contención de bloqueos y encuentra fugas de memoria, todo sin escribir SQL.
✨ Características
Lenguaje natural → SQL: Haz preguntas en inglés sencillo y obtén consultas precisas de Perfetto
Detección de ANR: Identifica y analiza automáticamente eventos de "Application Not Responding"
Análisis de rendimiento: Perfilado de CPU, detección de jank en fotogramas, detección de fugas de memoria
Contención de hilos: Encuentra cuellos de botella de sincronización y contención de bloqueos
Perfilado de Binder: Analiza el rendimiento de IPC y las interacciones lentas del sistema

Related MCP server: etw-mcp
📋 Requisitos previos
Python 3.13+ (macOS/Homebrew):
brew install python@3.13uv (recomendado):
brew install uv
🚀 Primeros pasos
O añádelo a ~/.cursor/mcp.json (global) o .cursor/mcp.json (proyecto):
{
"mcpServers": {
"perfetto-mcp": {
"command": "uvx",
"args": ["perfetto-mcp"]
}
}
}Ejecuta este comando. Consulta la documentación de MCP de Claude Code para más información.
# Add to user scope
claude mcp add perfetto-mcp --scope user -- uvx perfetto-mcpO edita ~/claude.json (macOS) o %APPDATA%\Claude\claude.json (Windows):
{
"mcpServers": {
"perfetto-mcp": {
"command": "uvx",
"args": ["perfetto-mcp"]
}
}
}o añádelo a .vscode/mcp.json (proyecto) o ejecuta el comando "MCP: Add Server":
{
"mcpServers": {
"perfetto-mcp": {
"command": "uvx",
"args": ["perfetto-mcp"]
}
}
}Habilítalo en el modo Agente de GitHub Copilot Chat.
Edita ~/.codex/config.toml:
[mcp_servers.perfetto-mcp]
command = "uvx"
args = ["perfetto-mcp"]Opcional: Usar un binario local trace_processor_shell
Si tu entorno de red bloquea las descargas, establece
PERFETTO_MCP_TRACE_PROCESSOR_BIN_PATH a una ruta absoluta de un binario local
trace_processor_shell.
Cuando esta variable de entorno está configurada, perfetto-mcp utiliza ese binario directamente.
Cuando no está configurada, el comportamiento predeterminado de Python perfetto no cambia.
Ejemplo (mcp.json):
{
"mcpServers": {
"perfetto-mcp": {
"command": "uvx",
"args": ["perfetto-mcp"],
"env": {
"PERFETTO_MCP_TRACE_PROCESSOR_BIN_PATH": "D:/tools/perfetto/trace_processor_shell.exe"
}
}
}
}Ejemplo (~/.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"Instalación local (servidor de desarrollo)
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📖 Cómo usar
Ejemplo de prompt inicial:
In the perfetto trace, I see that the FragmentManager is taking 438ms to execute. Can you figure out why it's taking so long?
Parámetros requeridos
Cada herramienta necesita estas dos entradas:
Parámetro | Descripción | Ejemplo |
trace_path | Ruta absoluta a tu traza de Perfetto |
|
process_name | Nombre del proceso/aplicación objetivo |
|
En tus prompts
Sé explícito sobre la traza y el proceso, anteponiendo a tu prompt:
"Use perfetto trace /absolute/path/to/trace.perfetto-trace for process com.example.app"
Filtros opcionales
Muchas herramientas admiten filtrado adicional (pero deja que tu LLM lo gestione):
time_range:
{start_ms: 10000, end_ms: 25000}Umbrales específicos de la herramienta:
min_block_ms,jank_threshold_ms,limit
🛠️ Herramientas disponibles
🔎 Exploración y descubrimiento
Herramienta | Propósito | Ejemplo de prompt |
| Examinar nombres de slices y localizar rutas críticas | "Find slice names containing 'Choreographer' and show top examples" |
| Ejecutar PerfettoSQL personalizado para análisis avanzado | "Run custom SQL to correlate threads and frames in the first 30s" |
🚨 Análisis de ANR
Nota: Útil si la traza grabada contiene un ANR
Herramienta | Propósito | Ejemplo de prompt |
| Encontrar eventos de ANR con clasificación de severidad | "Detect ANRs in the first 10s and summarize severity" |
| Análisis profundo de causas de ANR con probabilidad clasificada | "Analyze ANR root cause around 20,000 ms and rank likely causes" |
🎯 Perfilado de rendimiento
Herramienta | Propósito | Ejemplo de prompt |
| Uso de CPU a nivel de hilo y planificación | "Profile CPU usage by thread and flag the hottest threads" |
| Encontrar operaciones del hilo principal de mayor duración | "List main-thread hotspots >50 ms during 10s–25s" |
📱 Rendimiento de la interfaz de usuario
Herramienta | Propósito | Ejemplo de prompt |
| Identificar fotogramas que pierden plazos | "Find janky frames above 16.67 ms and list the worst 20" |
| Métricas generales de salud de fotogramas | "Summarize frame performance and report jank rate and P99 CPU time" |
🔒 Concurrencia e IPC
Herramienta | Propósito | Ejemplo de prompt |
| Encontrar cuellos de botella de sincronización | "Find lock contention between 15s–30s and show worst waits" |
| Analizar el rendimiento de IPC de Binder | "Profile slow Binder transactions and group by server process" |
💾 Análisis de memoria
Herramienta | Propósito | Ejemplo de prompt |
| Encontrar patrones de crecimiento sostenido de memoria | "Detect memory-leak signals over the last 60s" |
| Identificar clases que consumen mucha memoria | "Analyze heap dominator classes and list top offenders" |
Formato de salida
Todas las herramientas devuelven JSON estructurado con:
Summary: Hallazgos de alto nivel
Details: Resultados específicos de la herramienta
Metadata: Contexto de ejecución y cualquier alternativa utilizada
📚 Recursos
Trace Processor Python API - Interfaz de Python de Perfetto
Perfetto SQL Syntax - Referencia SQL para consultas personalizadas
📄 Licencia
Licencia Apache 2.0. Consulta LICENSE para más detalles.
This server cannot be deployed
Maintenance
Related MCP Connectors
AI agent observability for production traces, natural-language insights, and improvement loops.
Ask data questions in natural language. Get SQL, insights, and charts from your databases.
- HeystackOAuthdev.heystack
Observability for AI apps: investigate traces, logs, LLM usage, replays and crashes; manage alerts.
1 Ask your app anything — revenue, errors, read-cost, growth — and get rendered charts back.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables natural language querying and analysis of OpenTelemetry traces, metrics, and logs stored in Elasticsearch/OpenSearch, allowing AI assistants to investigate performance issues, find root causes, and explore system behavior.12 npm14MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to analyze Windows WPR/ETW traces (.etl files) using natural language queries, with features like auto-summary, CPU sampling, DPC/ISR analysis, and symbol resolution.9MIT
- AlicenseBqualityDmaintenanceInspect, manage, debug, and run commands on connected Android devices and emulators through natural language.4210 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables users to ask about render performance in React and React Native apps via natural language, exposing tools for listing render hotspots and explaining component re-renders.MIT