Perfetto MCP

Perfetto MCP
将自然语言转化为强大的 Perfetto 追踪分析
一个模型上下文协议 (MCP) 服务器,可将自然语言提示词转换为针对性的 Perfetto 分析。无需编写 SQL,即可快速解释卡顿、诊断 ANR、定位 CPU 热点线程、发现锁竞争并查找内存泄漏。
✨ 功能特性
自然语言 → SQL:用简单的英语提问,获取精确的 Perfetto 查询
ANR 检测:自动识别并分析“应用无响应”(ANR) 事件
性能分析:CPU 分析、帧卡顿检测、内存泄漏检测
线程竞争:查找同步瓶颈和锁竞争
Binder 分析:分析 IPC 性能和缓慢的系统交互

📋 前置要求
Python 3.13+ (macOS/Homebrew):
brew install python@3.13uv (推荐):
brew install uv
🚀 快速开始
或者添加到 ~/.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 的 Agent 模式中启用。
编辑 ~/.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{
"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 执行耗时 438ms。你能找出为什么它耗时这么长吗?
必需参数
每个工具都需要这两个输入:
参数 | 描述 | 示例 |
trace_path | Perfetto 追踪文件的绝对路径 |
|
process_name | 目标进程/应用名称 |
|
在提示词中
请明确指定追踪文件和进程,在提示词前加上:
"使用 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
🛠️ 可用工具
🔎 探索与发现
工具 | 用途 | 示例提示词 |
| 调查切片名称并定位热点路径 | "查找包含 'Choreographer' 的切片名称并显示顶部示例" |
| 运行自定义 PerfettoSQL 进行高级分析 | "运行自定义 SQL 以关联前 30 秒内的线程和帧" |
🚨 ANR 分析
注意:如果记录的追踪包含 ANR,此功能很有用
工具 | 用途 | 示例提示词 |
| 查找具有严重性分类的 ANR 事件 | "检测前 10 秒内的 ANR 并总结严重性" |
| 深入分析 ANR 原因并按可能性排序 | "分析 20,000 ms 左右的 ANR 根本原因并列出可能的原因" |
🎯 性能分析
工具 | 用途 | 示例提示词 |
| 线程级 CPU 使用率和调度 | "按线程分析 CPU 使用率并标记最热的线程" |
| 查找运行时间最长的主线程操作 | "列出 10s–25s 期间 >50 ms 的主线程热点" |
📱 UI 性能
工具 | 用途 | 示例提示词 |
| 识别错过截止时间的帧 | "查找超过 16.67 ms 的卡顿帧并列出最差的 20 个" |
| 整体帧健康指标 | "总结帧性能并报告卡顿率和 P99 CPU 时间" |
🔒 并发与 IPC
工具 | 用途 | 示例提示词 |
| 查找同步瓶颈 | "查找 15s–30s 之间的锁竞争并显示最差的等待" |
| 分析 Binder IPC 性能 | "分析缓慢的 Binder 事务并按服务器进程分组" |
💾 内存分析
工具 | 用途 | 示例提示词 |
| 查找持续的内存增长模式 | "检测过去 60 秒内的内存泄漏信号" |
| 识别占用内存的类 | "分析堆支配类并列出主要占用者" |
输出格式
所有工具均返回结构化的 JSON,包含:
Summary: 高级发现
Details: 工具特定结果
Metadata: 执行上下文及使用的任何回退方案
📚 资源
Trace Processor Python API - Perfetto 的 Python 接口
Perfetto SQL Syntax - 自定义查询的 SQL 参考
📄 许可证
Apache 2.0 许可证。详情请参阅 LICENSE。
Appeared in Searches
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