Perfetto MCP

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

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