Back to MCP directory
publicPublicdnsLocal runtime

mcptrace

一个基于Rust实现的bpftrace MCP服务器,为AI助手提供Linux内核追踪能力,支持探针查询、辅助函数获取和eBPF程序执行等功能。

article

README

🚀 bpftrace MCP Server:生成eBPF以跟踪Linux内核

bpftrace MCP Server是一个轻量级的MCP(模型上下文协议)服务器,它为AI助手提供了访问bpftrace内核跟踪功能的途径,可助力开发者高效地对Linux内核进行跟踪和分析。

bpftrace MCP Server演示

✨ 主要特性

  • list_probes:列出可用的bpftrace探测点,并支持可选的过滤功能。
  • list_helpers:获取bpftrace辅助函数的相关信息。
  • exec_program:执行bpftrace程序,并以缓冲输出的方式返回结果。
  • get_result:异步检索程序执行的结果。

📦 安装指南

前提条件

  1. 安装Rust(若尚未安装):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  1. 确保已安装bpftrace:
sudo apt-get install bpftrace  # Ubuntu/Debian
# 或者
sudo dnf install bpftrace      # Fedora
  1. 构建服务器:
cargo build --release

快速设置

可以使用我们提供的自动化设置脚本:

  • Claude桌面版./setup/setup_claude.sh
  • Claude代码版./setup/setup_claude_code.sh

如需详细的设置说明和手动配置方法,请参阅 setup/SETUP.md

🚀 快速开始

直接执行

./target/release/bpftrace-mcp-server

通过Cargo执行

cargo run --release

手动配置

如需Claude桌面版或Claude代码版的手动设置说明,请参阅 setup/SETUP.md

💻 使用示例

列出系统调用探测点

await list_probes(filter="syscalls:*read*")

获取BPF系统信息

info = await bpf_info()
# 返回系统信息、内核辅助函数、特性、映射类型和探测点类型

执行简单跟踪

result = await exec_program(
    'tracepoint:syscalls:sys_enter_open { printf("%s\\n", comm); }',
    timeout=10
)
exec_id = result["execution_id"]

获取执行结果

output = await get_result(exec_id)
print(output["output"])

🔧 技术细节

Rust服务器采用了以下技术和组件:

  • Tokio异步运行时,以实现并发操作。
  • 子进程管理,用于执行bpftrace程序。
  • DashMap,实现线程安全的内存缓冲。
  • 自动清理旧缓冲区。
  • rmcp crate,用于实现MCP协议。

⚠️ 安全注意事项

  • 服务器需要sudo权限才能运行bpftrace。
  • 密码处理:创建一个 .env 文件并存储你的sudo密码:
    echo "BPFTRACE_PASSWD=your_sudo_password" > .env
    
  • 替代方法:为bpftrace配置无密码sudo:
    sudo visudo
    # 添加:your_username ALL=(ALL) NOPASSWD: /usr/bin/bpftrace
    
  • 无脚本验证 - 信任AI客户端生成安全的脚本。
  • 资源限制:最大执行时间为60秒,缓冲区最多可容纳10000行。
  • 详细的安全配置请参阅 SECURITY.md

📄 局限性

  • 不支持实时流式传输(需使用 get_result 进行轮询)。
  • 密码处理方式简单(生产环境中需改进)。
  • 执行记录无持久化存储。
  • 错误处理机制较为基础。

📚 详细文档

🚧 未来改进方向

  • 增加SSE传输,以支持实时流式传输。
  • 实现适当的身份验证机制。
  • 增加脚本验证和沙箱功能。
  • 支持保存/加载跟踪会话。
  • 与eBPF程序进行集成。
help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client