使用说明
桑普利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.
工作流程
- 代理创建会话:
create_session(binary_path, args, working_directory) - 您在终端中批准:服务器打印会话详细信息,您可以使用
approve <session_id> <hash> - 代理运行分析:
run(session_id)执行samply - 代理分析结果:
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
许可证
麻省理工学院
