Skip to main content
Glama

showcase

Perfetto MCP

Превращайте естественный язык в мощный анализ трассировок Perfetto

Сервер протокола контекста модели (MCP), который преобразует запросы на естественном языке в целенаправленный анализ Perfetto. Быстро объясняйте причины «фризов», диагностируйте ANR, находите «горячие» потоки CPU, выявляйте борьбу за блокировки и обнаруживайте утечки памяти — и все это без написания SQL.

✨ Возможности

  • Естественный язык → SQL: Задавайте вопросы на обычном английском, получайте точные запросы Perfetto

  • Обнаружение ANR: Автоматическая идентификация и анализ событий «Приложение не отвечает» (ANR)

  • Анализ производительности: Профилирование CPU, обнаружение «фризов» кадров, обнаружение утечек памяти

  • Конкуренция потоков: Поиск узких мест синхронизации и борьбы за блокировки

  • Профилирование Binder: Анализ производительности IPC и медленных системных взаимодействий

showcase

📋 Предварительные требования

  • Python 3.13+ (macOS/Homebrew):

    brew install python@3.13
  • uv (рекомендуется):

    brew install uv

🚀 Начало работы

Install MCP Server

Или добавьте в ~/.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

/path/to/trace.perfetto-trace

process_name

Имя целевого процесса/приложения

com.example.app

В ваших запросах

Будьте точны в отношении трассировки и процесса, предваряйте свой запрос фразой:

"Используй трассировку 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

🛠️ Доступные инструменты

🔎 Исследование и обнаружение

Инструмент

Цель

Пример запроса

find_slices

Обзор имен срезов и поиск «горячих» путей

"Найди имена срезов, содержащие 'Choreographer', и покажи лучшие примеры"

execute_sql_query

Выполнение пользовательского PerfettoSQL для расширенного анализа

"Выполни пользовательский SQL для корреляции потоков и кадров в первые 30 с"

🚨 Анализ ANR

Примечание: Полезно, если записанная трассировка содержит ANR

Инструмент

Цель

Пример запроса

detect_anrs

Поиск событий ANR с классификацией серьезности

"Обнаружь ANR в первые 10 с и резюмируй серьезность"

anr_root_cause_analyzer

Глубокий анализ причин ANR с ранжированием вероятности

"Проанализируй первопричину ANR около 20 000 мс и ранжируй вероятные причины"

🎯 Профилирование производительности

Инструмент

Цель

Пример запроса

cpu_utilization_profiler

Использование CPU на уровне потоков и планирование

"Профилируй использование CPU по потокам и отметь самые «горячие» потоки"

main_thread_hotspot_slices

Поиск самых длительных операций основного потока

"Перечисли «горячие» точки основного потока >50 мс в интервале 10–25 с"

📱 Производительность UI

Инструмент

Цель

Пример запроса

detect_jank_frames

Идентификация кадров, пропустивших сроки

"Найди «фризы» кадров выше 16,67 мс и перечисли 20 худших"

frame_performance_summary

Общие метрики состояния кадров

"Резюмируй производительность кадров и сообщи частоту «фризов» и время CPU P99"

🔒 Параллелизм и IPC

Инструмент

Цель

Пример запроса

thread_contention_analyzer

Поиск узких мест синхронизации

"Найди борьбу за блокировки между 15–30 с и покажи худшие ожидания"

binder_transaction_profiler

Анализ производительности Binder IPC

"Профилируй медленные транзакции Binder и сгруппируй по серверному процессу"

💾 Анализ памяти

Инструмент

Цель

Пример запроса

memory_leak_detector

Поиск паттернов устойчивого роста памяти

"Обнаружь сигналы утечки памяти за последние 60 с"

heap_dominator_tree_analyzer

Идентификация классов, потребляющих много памяти

"Проанализируй классы-доминаторы кучи и перечисли главных нарушителей"

Формат вывода

Все инструменты возвращают структурированный JSON с:

  • Summary: Общие выводы

  • Details: Результаты, специфичные для инструмента

  • Metadata: Контекст выполнения и любые использованные резервные варианты

📚 Ресурсы

📄 Лицензия

Лицензия Apache 2.0. См. LICENSE для получения подробной информации.


-
security - not tested
A
license - permissive license
-
quality - not tested

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