Skip to main content
Glama

showcase

Perfetto MCP

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

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

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

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

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

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

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

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

showcase

Related MCP server: etw-mcp

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

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


Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables 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 npm
      14
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables 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.
      12
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables 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