二进制性能分析服务

一个基于samply的MCP服务器,使AI编码代理能够安全地对本地二进制文件进行性能分析,无需root权限或暴露web服务器。

  • by abraemer
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 abraemer/samply-mcp

使用说明

桑普利mcp

MCP(模型上下文协议)服务器,使AI编码代理能够使用 样品 安全,无需root权限或暴露web服务器。

为什么?

AI编码代理可以优化代码,但它们需要分析数据才能知道 什么 优化。samply mcp通过以下方式弥合了这一差距:

  • 不需要root:的内核参数 perf_event_open 由您设置一次,而不是由代理设置
  • 人工审批流程:未经您的明确批准,代理不能执行任意二进制文件
  • 结构化输出:复杂的Gecko配置文件JSON被解析为可查询的语义结果

先决条件

  • 仅限Linux (不支持macOS)
  • kernel.perf_event_paranoid ≤ 1 (检查 cat /proc/sys/kernel/perf_event_paranoid)
  • 样品 已安装(cargo install samply)
  • addr2line 安装(通常是 binutils)

设置kernel.perf_event_paranoid

sudo sysctl -w kernel.perf_event_paranoid=1

要使其永久:

echo 'kernel.perf_event_paranoid=1' | sudo tee /etc/sysctl.d/99-perf.conf
sudo sysctl --system

安装

git clone https://github.com/abraemer/samply-mcp.git
cd samply-mcp
uv sync

用法

启动服务器

uv run samply-mcp --port 7837

对于测试或受信任的环境,您可以启用自动批准(谨慎使用):

uv run samply-mcp --port 7837 --dangerously-auto-approve-sessions

连接您的AI代理

配置您的MCP客户端(Claude Desktop、Cursor等)以连接到 http://localhost:7837.

工作流程

  1. 代理创建会话: create_session(binary_path, args, working_directory)
  2. 您在终端中批准:服务器打印会话详细信息,您可以使用 approve <session_id> <hash>
  3. 代理运行分析: run(session_id) 执行samply
  4. 代理分析结果: get_hot_functions(), get_callers(), get_callees(), compare_runs()

终端REPL命令

命令 描述
sessions 列出所有会话及其状态
show <session_id> 显示完整的会话详细信息
approve <session_id> <hash> 批准待处理的会话
reject <session_id> 拒绝并销毁挂起的会话
runs <session_id> 列出会话的所有运行
help 显示可用命令
quit 停止服务器

MCP工具

工具 说明
create_session 创建分析会话(需要批准)
get_session_status 获取当前会话状态和详细信息
destroy_session 删除会话
list_sessions 列出所有会话
run 执行分析运行
get_run_summary 使用前5个热门功能了解跑步概览
get_hot_functions 按自定时间获取前N个函数
get_callers 查找调用函数的人
get_callees 查找函数调用的内容
compare_runs 比较两次运行以查看改进/回归

数据存储

  • 会话元数据: ~/.local/share/samply-mcp/sessions.db (SQLite)
  • 配置文件: ~/.local/share/samply-mcp/profiles/<session_id>/<run_id>.json

发展

# Run linter
uv run ruff check .

# Run type checker
uv run ty check src tests

# Run tests
uv run pytest tests/ -v

# Run tests with coverage
uv run pytest tests/ --cov=src/samply_mcp --cov-report=term-missing

许可证

麻省理工学院