mcpField
P
Perfetto

Perfetto

本地服务
github.com/antarikshc开发工具22229 周前更新

关于 Perfetto

Perfetto MCP 是一个 MCP 服务,可将自然语言问题转换为针对 Perfetto trace 的分析,无需手写 SQL。它面向 Android 性能分析人员,可用于定位卡顿、ANR、CPU 热点线程、锁竞争和内存泄漏等问题。

主要功能

  1. 01自然语言转换为 PerfettoSQL 查询
  2. 02ANR 检测与根因分析
  3. 03线程级 CPU 利用率分析
  4. 04掉帧检测与帧性能摘要
  5. 05Binder 与锁竞争分析

适用场景

  1. 01分析某个进程在 trace 中耗时较长的原因
  2. 02排查 Android 应用的 ANR 事件并判断严重程度
  3. 03查找主线程耗时操作与内存增长信号

MCP 相关

该项目作为 MCP 服务运行,向 MCP 客户端提供 find_slices、execute_sql_query、detect_anrs、detect_jank_frames、memory_leak_detector 等分析工具,返回结构化 JSON 结果。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"perfetto": {
"command": "uvx",
"args": [
"perfetto-mcp"
]
}
}
}
启动命令uvx perfetto-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiperfetto-mcp

工具

12

收录的工具列表 · 更新于 2 周前

参数类型必填说明
limitinteger否
main_thread_onlyboolean否
match_modestring否
patternstring是
process_nameany否
time_rangeany否
trace_pathstring是

详细介绍

演示

Perfetto MCP

将自然语言转换为强大的 Perfetto 跟踪分析

一个 MCP 服务,可将自然语言提示词转换为有针对性的 Perfetto 分析。快速解释卡顿、诊断 ANR、发现 CPU 热线程、揭示锁竞争并查找内存泄漏——这一切都无需编写 SQL。

✨ 功能

  • 自然语言 → SQL:用通俗易懂的英语提问,获取精准的 Perfetto 查询
  • ANR 检测:自动识别和分析应用程序无响应事件
  • 性能分析:CPU 性能分析、帧卡顿检测、内存泄漏检测
  • 线程竞争:查找同步瓶颈和锁竞争
  • Binder 性能分析:分析 IPC 性能和缓慢的系统交互

演示

📋 前置条件

  • Python 3.13+(macOS/Homebrew):
    brew install [email protected]
    
  • uv(推荐):
    brew install uv
    

🚀 开始使用

Cursor

安装 MCP 服务

或者添加到 ~/.cursor/mcp.json(全局)或 .cursor/mcp.json(项目):

{
  "mcpServers": {
    "perfetto-mcp": {
      "command": "uvx",
      "args": ["perfetto-mcp"]
    }
  }
}
Claude Code

运行此命令。更多信息请参阅 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"]
    }
  }
}
VS Code

在 VS Code 中安装

或者添加到 .vscode/mcp.json(项目),或运行“MCP: Add Server”命令:

{
  "mcpServers": {
    "perfetto-mcp": {
      "command": "uvx",
      "args": ["perfetto-mcp"]
    }
  }
}

在 GitHub Copilot Chat 的 Agent 模式中启用。

Codex

编辑 ~/.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 会直接使用该二进制文件。 未设置时,默认的 perfetto Python 行为保持不变。

示例(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
本地 MCP
{
  "mcpServers": {
    "perfetto-mcp-local": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/git/repo/perfetto-mcp",
        "run",
        "-m",
        "perfetto_mcp"
      ],
      "env": { "PYTHONPATH": "src" }
    }
  }
}
使用 pip
pip3 install perfetto-mcp
python3 -m perfetto_mcp

📖 使用方法

提示词示例:

在 Perfetto 跟踪中,我看到 FragmentManager 执行耗时 438ms。你能找出耗时这么长的原因吗?

必需参数

每个工具都需要以下两个输入:

参数描述示例
trace_pathPerfetto 跟踪文件的绝对路径/path/to/trace.perfetto-trace
process_name目标进程/应用名称com.example.app
在提示词中

请明确说明跟踪文件和进程,并在提示词前加上:

"对进程 com.example.app 使用 Perfetto 跟踪文件 /absolute/path/to/trace.perfetto-trace"

可选筛选条件

许多工具支持额外筛选(但可以交由你的大模型处理):

  • time_range:{start_ms: 10000, end_ms: 25000}
  • 工具专属阈值:min_block_ms、jank_threshold_ms、limit

🛠️ 可用工具

🔎 探索与发现
工具用途示例提示词
find_slices查看 slice 名称并定位热点路径“查找包含 ‘Choreographer’ 的 slice 名称,并展示最典型的示例”
execute_sql_query运行自定义 PerfettoSQL 进行高级分析“运行自定义 SQL,关联前 30s 内的线程和帧”
🚨 ANR 分析

注意:如果录制的跟踪记录包含 ANR,此工具会很有帮助。

工具用途示例提示词
detect_anrs查找 ANR 事件并对严重程度进行分类“检测前 10s 内的 ANR,并总结严重程度”
anr_root_cause_analyzer深入分析 ANR 原因并按可能性排序“分析 20,000 ms 附近的 ANR 根本原因,并按可能性排序”
🎯 性能分析
工具用途示例提示词
cpu_utilization_profiler分析线程级 CPU 使用率和调度情况“按线程分析 CPU 使用率,并标记最繁忙的线程”
main_thread_hotspot_slices查找运行时间最长的主线程操作“列出 10s–25s 内耗时 >50 ms 的主线程热点”
📱 UI 性能
工具用途示例提示词
detect_jank_frames**识别未能按时完成的帧“查找耗时超过 16.67 ms 的卡顿帧,并列出最严重的 20 帧”
frame_performance_summary帧健康状况的整体指标“总结帧性能,并报告卡顿率和 P99 CPU 时间”
🔒 并发与 IPC
工具用途示例提示词
thread_contention_analyzer查找同步瓶颈“查找 15s–30s 内的锁竞争,并展示等待时间最长的情况”
binder_transaction_profiler分析 Binder IPC 性能“分析缓慢的 Binder 事务,并按服务进程分组”
💾 内存分析
工具用途示例提示词
memory_leak_detector查找持续内存增长模式“检测过去 60s 内的内存泄漏信号”
heap_dominator_tree_analyzer识别占用大量内存的类“分析堆支配树中的类,并列出占用最多的对象”
输出格式

所有工具均返回结构化 JSON,包含:

  • 摘要:高层次发现
  • 详情:工具特定结果
  • 元数据:执行上下文及使用的任何回退方案

📚 资源

📄 许可证

Apache 2.0 许可证。详情请参阅 LICENSE。


GitHub • 问题反馈 • 文档

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。