CPU性能分析服务

一个MCP服务器,允许AI助手分析samply CPU性能分析文件,提供热点查找、调用树探索等功能。

  • by protortyp
  • Rust
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 protortyp/samply-mcp

使用说明

桑普利mcp

允许AI助手进行分析的MCP服务器 样品 CPU配置文件。注册一次,然后让克劳德按路径分析任何配置文件——找到热点,探索呼叫树,并解释什么是慢的。

它做什么

$ samply record --save-only --unstable-presymbolicate -o profile.json.gz -- ./my-program
$ claude mcp add samply /path/to/samply-mcp mcp

然后在Claude Code中,只需问:

“/tmp/profile.json.gz中的顶级CPU热点是什么?” “显示主线程的调用树” “什么叫 vec::sort 最多?"

每个工具都接受 path 参数,因此一个服务器安装适用于任何配置文件。

可用的MCP工具

工具 说明
profile_info 配置文件元数据:持续时间、样本计数、线程计数、采样间隔
profile_threads 列出所有具有名称、样本计数和时间范围的线程
profile_top_functions 按自身时间或总时间排列的前N个函数
profile_call_tree 具有时间百分比的分层呼叫树
profile_function_detail 特定功能的调用者、被调用者和源位置
profile_markers 时间线标记和事件
profile_flamegraph 用于生成火焰图的折叠堆栈格式(Brendan Gregg)

所有工具都需要 path 指向配置文件的参数 .json 或 .json.gz 文件。配置文件在首次使用时加载并缓存在内存中。

录制个人资料

安装 样品:

cargo install samply

录制您的节目。这 --unstable-presymbolicate 旗帜写着 .syms.json samply mcp用来自动解析函数名的sidecar:

samply record --save-only --unstable-presymbolicate -o profile.json.gz -- ./target/profiling/my-program

这产生 profile.json.gz (以及 profile.json.syms.json 旁边)。samply mcp自动拿起侧车,不需要手动符号。

安装

需要Rust 1.85+。

git clone https://github.com/protortyp/samply-mcp
cd samply-mcp
cargo build --release
# Binary is at target/release/samply-mcp

MCP服务器设置

克劳德代码(CLI)

claude mcp add samply /path/to/samply-mcp mcp

不需要配置文件路径——当调用工具时,配置文件会按需加载。

克劳德桌面版

增添 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "samply": {
      "command": "/path/to/samply-mcp",
      "args": ["mcp"]
    }
  }
}

工作流示例

# 1. Build your program (with debug info for best results)
cargo build

# 2. Record a profile
samply record --save-only --unstable-presymbolicate \
  -o /tmp/profile.json.gz -- ./target/debug/my-program

# 3. Register the MCP server (once, globally or per-project)
claude mcp add samply ~/path/to/samply-mcp mcp

# 4. Open Claude Code and ask it to analyze by path