/ 目录 / 演练场 / perfetto-mcp
● 社区 antarikshc ⚡ 即开即用

perfetto-mcp

作者 antarikshc · antarikshc/perfetto-mcp

用自然语言提问 Perfetto trace — jank、ANR、CPU 热点线程、锁争用、内存泄漏 — 无需编写 trace SQL 即可获得答案。

perfetto-mcp 在后台运行 Perfetto 的 trace processor,并暴露自然语言工具,将你的问题转化为精确的查询。覆盖常见的 Android/Linux 性能调查类别:slice 探索、ANR 检测、CPU/线程分析、并发问题、堆分析。

为什么要用

核心特性

实时演示

实际使用效果

perfetto.replay ▶ 就绪
0/0

安装

选择你的客户端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "perfetto": {
      "command": "uvx",
      "args": [
        "perfetto-mcp"
      ],
      "_inferred": true
    }
  }
}

打开 Claude Desktop → Settings → Developer → Edit Config。保存后重启应用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "perfetto": {
      "command": "uvx",
      "args": [
        "perfetto-mcp"
      ],
      "_inferred": true
    }
  }
}

Cursor 使用与 Claude Desktop 相同的 mcpServers 格式。项目级配置优先于全局。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "perfetto": {
      "command": "uvx",
      "args": [
        "perfetto-mcp"
      ],
      "_inferred": true
    }
  }
}

点击 Cline 侧栏中的 MCP Servers 图标,然后选 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "perfetto": {
      "command": "uvx",
      "args": [
        "perfetto-mcp"
      ],
      "_inferred": true
    }
  }
}

格式与 Claude Desktop 相同。重启 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "perfetto",
      "command": "uvx",
      "args": [
        "perfetto-mcp"
      ]
    }
  ]
}

Continue 使用服务器对象数组,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "perfetto": {
      "command": {
        "path": "uvx",
        "args": [
          "perfetto-mcp"
        ]
      }
    }
  }
}

加入 context_servers。Zed 保存后热重载。

claude mcp add perfetto -- uvx perfetto-mcp

一行命令搞定。用 claude mcp list 验证,claude mcp remove 卸载。

使用场景

实战用法: perfetto-mcp

找出录制的 trace 中 UI jank 的原因

👤 Android 开发者、性能工程师 ⏱ ~25 min advanced

何时使用: 用户反馈:'我滑动时应用卡顿'。你已捕获 Perfetto trace。现在怎么办?

前置条件
  • Perfetto .pftrace 文件 — perfetto / systrace / Android Studio Profiler
步骤
  1. 指向 MCP trace
    打开 /tmp/jank.pftrace,进程为 com.example.app。找出 jank frame — 主线程上任何超过 16.67ms 的。✓ 已复制
    → 带有 slice 上下文的 jank frame 列表
  2. 确定原因
    对于前 3 个 jank frame,哪个 slice 占主导?当 frame 未命中时主线程在做什么?✓ 已复制
    → 每个 frame 的原因
  3. 提出修复方案
    基于这些瓶颈,提出具体的改进方案(移出主线程、缓存等)。✓ 已复制
    → 修复计划

结果: 在不盯着时间线 UI 的情况下识别 jank 的根本原因。

注意事项
  • 采样间隔过粗 — 遗漏短的热点方法 — 必要时以更高的采样频率重新录制

从 trace 诊断 ANR

👤 处理 ANR 的 Android 开发者 ⏱ ~20 min advanced

何时使用: 生产环境 ANR,且你可以捕获 trace。

步骤
  1. 检测
    对 /traces/anr.pftrace(进程 com.example.app)运行 ANR 分析。什么阻塞了主线程?✓ 已复制
    → 阻塞链
  2. 识别锁
    这是锁争用吗?识别持有者和等待者线程以及资源。✓ 已复制
    → 争用图

结果: ANR 的根本原因 + 需要唤醒哪个值班人员。

追踪疑似内存泄漏

👤 Android / 本地开发者 ⏱ ~30 min advanced

何时使用: 在特定屏幕上堆持续增长。

步骤
  1. 分析堆
    对于 trace X、进程 Y:运行内存分析。哪些分配占主导,保留集是否单调增长?✓ 已复制
    → 分配摘要 + 趋势
  2. 关联
    哪些活动 / fragment / slice 与增长峰值相关联?✓ 已复制
    → 关联报告

结果: 识别泄漏嫌疑。

注意事项
  • GC 尚未运行 — 增长不一定是泄漏 — 在录制之间触发 GC;比较

组合

与其他 MCP 搭配,撬动十倍杠杆

perfetto + filesystem

为回归追踪保存每个版本的 trace 分析

分析 vX.Y.Z 的 jank trace,将摘要保存到 /perf-reports/vX.Y.Z.md。✓ 已复制

工具

此 MCP 暴露的能力

工具输入参数何时调用成本
explore_slices trace_path, process, time_range? 在新 trace 中定位方向 free
detect_anr trace_path, process ANR 调查 free
cpu_profile trace_path, process, threshold_ms? CPU 热点追踪 free
thread_contention trace_path, process 并发问题 free
memory_analysis trace_path, process 内存调查 free
custom_sql trace_path, sql: str 你知道确切需要的 Perfetto SQL free

成本与限制

运行它的成本

API 配额
无(本地)
每次调用 Token 数
Trace 摘要通常需要 2k-10k tokens
费用
免费(Apache 2.0)
提示
如果你大约知道问题发生的时间,总是传递时间范围 — 减少查询时间和 tokens。

安全

权限、密钥、影响范围

凭据存储: 无;本地 trace 文件
数据出站: 摘要发送到你的 LLM 提供商 — traces 可能包含敏感的进程/应用名称

故障排查

常见错误与修复

Trace 文件过大,无法解析

Perfetto 可以处理 GB 级别的 traces,但首次调用可能较慢。给它时间;后续查询会更快。

进程名称未找到

custom_sql SELECT name FROM process 验证。进程名称可能与应用包 ID 不同。

Python 版本错误

需要 3.13+。使用 uv python install 3.13,然后 uvx perfetto-mcp

验证: python --version

替代方案

perfetto-mcp 对比其他方案

替代方案何时用它替代权衡
Perfetto UI (ui.perfetto.dev)你想要可视化的时间线分析手动操作;没有 LLM 解释
Android Studio Profiler你一直在 Android Studio 中工作受 IDE 限制;脚本化程度较低

更多

资源

📖 阅读 GitHub 上的官方 README

🐙 查看未解决的 issue

🔍 浏览全部 400+ MCP 服务器和 Skills