关于 Perfetto
Perfetto MCP 是一个 MCP 服务,可将自然语言问题转换为针对 Perfetto trace 的分析,无需手写 SQL。它面向 Android 性能分析人员,可用于定位卡顿、ANR、CPU 热点线程、锁竞争和内存泄漏等问题。
主要功能
- 01自然语言转换为 PerfettoSQL 查询
- 02ANR 检测与根因分析
- 03线程级 CPU 利用率分析
- 04掉帧检测与帧性能摘要
- 05Binder 与锁竞争分析
适用场景
- 01分析某个进程在 trace 中耗时较长的原因
- 02排查 Android 应用的 ANR 事件并判断严重程度
- 03查找主线程耗时操作与内存增长信号
MCP 相关
该项目作为 MCP 服务运行,向 MCP 客户端提供 find_slices、execute_sql_query、detect_anrs、detect_jank_frames、memory_leak_detector 等分析工具,返回结构化 JSON 结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
12收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | |
| main_thread_only | boolean | 否 | |
| match_mode | string | 否 | |
| pattern | string | 是 | |
| process_name | any | 否 | |
| time_range | any | 否 | |
| trace_path | string | 是 |
详细介绍

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
或者添加到 ~/.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
或者添加到 .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_path | Perfetto 跟踪文件的绝对路径 | /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,包含:
- 摘要:高层次发现
- 详情:工具特定结果
- 元数据:执行上下文及使用的任何回退方案
📚 资源
- Trace Processor Python API - Perfetto 的 Python 接口
- Perfetto SQL Syntax - 自定义查询的 SQL 参考
📄 许可证
Apache 2.0 许可证。详情请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。