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 для получения подробной информации.
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