Perfetto MCP

Perfetto MCP
Превращайте естественный язык в мощный анализ трассировок Perfetto
Сервер протокола контекста модели (MCP), который преобразует запросы на естественном языке в целенаправленный анализ Perfetto. Быстро объясняйте причины «фризов», диагностируйте ANR, находите «горячие» потоки CPU, выявляйте борьбу за блокировки и обнаруживайте утечки памяти — и все это без написания SQL.
✨ Возможности
Естественный язык → SQL: Задавайте вопросы на обычном английском, получайте точные запросы Perfetto
Обнаружение ANR: Автоматическая идентификация и анализ событий «Приложение не отвечает» (ANR)
Анализ производительности: Профилирование CPU, обнаружение «фризов» кадров, обнаружение утечек памяти
Конкуренция потоков: Поиск узких мест синхронизации и борьбы за блокировки
Профилирование Binder: Анализ производительности IPC и медленных системных взаимодействий

Related MCP server: etw-mcp
📋 Предварительные требования
Python 3.13+ (macOS/Homebrew):
brew install python@3.13uv (рекомендуется):
brew install uv
🚀 Начало работы
Или добавьте в ~/.cursor/mcp.json (глобально) или .cursor/mcp.json (проект):
{
"mcpServers": {
"perfetto-mcp": {
"command": "uvx",
"args": ["perfetto-mcp"]
}
}
}Выполните эту команду. См. документацию 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"]
}
}
}или добавьте в .vscode/mcp.json (проект) или выполните команду "MCP: Add Server":
{
"mcpServers": {
"perfetto-mcp": {
"command": "uvx",
"args": ["perfetto-mcp"]
}
}
}Включите в режиме агента GitHub Copilot Chat.
Отредактируйте ~/.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 использует этот бинарный файл напрямую.
Когда она не установлена, стандартное поведение Python perfetto остается неизменным.
Пример (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{
"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📖 Как использовать
Пример начального запроса:
В трассировке perfetto я вижу, что FragmentManager выполняется 438 мс. Можешь выяснить, почему это занимает так много времени?
Обязательные параметры
Каждому инструменту нужны эти два входных данных:
Параметр | Описание | Пример |
trace_path | Абсолютный путь к вашей трассировке Perfetto |
|
process_name | Имя целевого процесса/приложения |
|
В ваших запросах
Будьте точны в отношении трассировки и процесса, предваряйте свой запрос фразой:
"Используй трассировку perfetto /absolute/path/to/trace.perfetto-trace для процесса com.example.app"
Дополнительные фильтры
Многие инструменты поддерживают дополнительную фильтрацию (но позвольте вашему LLM справиться с этим):
time_range:
{start_ms: 10000, end_ms: 25000}Пороговые значения для инструментов:
min_block_ms,jank_threshold_ms,limit
🛠️ Доступные инструменты
🔎 Исследование и обнаружение
Инструмент | Цель | Пример запроса |
| Обзор имен срезов и поиск «горячих» путей | "Найди имена срезов, содержащие 'Choreographer', и покажи лучшие примеры" |
| Выполнение пользовательского PerfettoSQL для расширенного анализа | "Выполни пользовательский SQL для корреляции потоков и кадров в первые 30 с" |
🚨 Анализ ANR
Примечание: Полезно, если записанная трассировка содержит ANR
Инструмент | Цель | Пример запроса |
| Поиск событий ANR с классификацией серьезности | "Обнаружь ANR в первые 10 с и резюмируй серьезность" |
| Глубокий анализ причин ANR с ранжированием вероятности | "Проанализируй первопричину ANR около 20 000 мс и ранжируй вероятные причины" |
🎯 Профилирование производительности
Инструмент | Цель | Пример запроса |
| Использование CPU на уровне потоков и планирование | "Профилируй использование CPU по потокам и отметь самые «горячие» потоки" |
| Поиск самых длительных операций основного потока | "Перечисли «горячие» точки основного потока >50 мс в интервале 10–25 с" |
📱 Производительность UI
Инструмент | Цель | Пример запроса |
| Идентификация кадров, пропустивших сроки | "Найди «фризы» кадров выше 16,67 мс и перечисли 20 худших" |
| Общие метрики состояния кадров | "Резюмируй производительность кадров и сообщи частоту «фризов» и время CPU P99" |
🔒 Параллелизм и IPC
Инструмент | Цель | Пример запроса |
| Поиск узких мест синхронизации | "Найди борьбу за блокировки между 15–30 с и покажи худшие ожидания" |
| Анализ производительности Binder IPC | "Профилируй медленные транзакции Binder и сгруппируй по серверному процессу" |
💾 Анализ памяти
Инструмент | Цель | Пример запроса |
| Поиск паттернов устойчивого роста памяти | "Обнаружь сигналы утечки памяти за последние 60 с" |
| Идентификация классов, потребляющих много памяти | "Проанализируй классы-доминаторы кучи и перечисли главных нарушителей" |
Формат вывода
Все инструменты возвращают структурированный JSON с:
Summary: Общие выводы
Details: Результаты, специфичные для инструмента
Metadata: Контекст выполнения и любые использованные резервные варианты
📚 Ресурсы
Trace Processor Python API - Интерфейс Python для Perfetto
Perfetto SQL Syntax - Справочник SQL для пользовательских запросов
📄 Лицензия
Лицензия Apache 2.0. См. LICENSE для получения подробной информации.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Production runtime data for Android and KMP apps (startup, ANRs, slow screens) for coding agents
Watches your live app, explains every problem in plain language and writes the fix prompt.
AI agent observability for production traces, natural-language insights, and improvement loops.
The Polar Signals MCP server enables AI assistants to connect directly with performance profiling data, allowing users to analyze application performance through natural language queries. Key capabilities include querying CPU performance and memory usage, exploring profiling metadata like profile types and labels, and providing AI-driven code optimization suggestions directly within development environments like Claude Code or Cursor.
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.22 npm14MIT
- AlicenseNot gradedqualityBmaintenanceEnables 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.12MIT
- AlicenseBqualityDmaintenanceInspect, manage, debug, and run commands on connected Android devices and emulators through natural language.4218 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