项目简介
本项目基于 Model Context Protocol (MCP) 实现,旨在将 BeePF 项目中与系统可观测性相关的接口暴露为标准的 MCP 工具。通过此工具,大型语言模型 (LLM) 客户端(如支持 MCP 的 AI 编辑器、Agent 平台等)能够通过结构化的请求调用这些接口,获取实时的系统数据、程序信息和性能指标,从而增强 LLM 理解和交互复杂系统的能力。
主要功能点
本项目提供了以下核心功能,均通过 MCP 工具的方式对外提供:
- 获取系统拓扑信息 ('topo'): 提供当前系统的程序和网络拓扑概览。
- 获取节点程序列表 ('prog'): 列出当前节点上运行的所有 eBPF 程序。
- 获取特定节点程序详情 ('prog_detail'): 根据程序 ID 获取某个 eBPF 程序的详细信息(如类型、标签、关联的 Map 等)。需要提供程序 ID 参数。
- 获取特定节点程序数据转储 ('prog_dump'): 获取某个 eBPF 程序的字节码转储(支持 xlated 或 jited 格式)。需要提供程序 ID 参数。
- 获取节点性能指标数据 ('node_metrics'): 提供当前节点的关键性能指标,如 CPU 使用率、事件数等。
安装步骤
-
克隆项目仓库: 使用 Git 命令将项目代码下载到本地。
-
安装依赖: 进入项目目录,运行 Go Mod 命令下载所需的依赖库。
-
构建项目: 运行 Go Build 命令编译生成可执行文件。
具体的命令如下:
# 克隆项目 git clone https://github.com/cen-ngc5139/beepf-mcp.git cd beepf-mcp # 安装依赖 go mod tidy # 构建项目 go build -o beepf-mcp .
服务器配置(供 MCP 客户端参考)
MCP 服务器通常通过 启动命令 (command) 和 参数 (args) 的方式由 MCP 客户端(如 Cursor, MCPHost 等)启动和管理。
对于本项目,您可以配置客户端通过 StdIO 方式启动该服务器:
- 服务器名称 (serverName): 例如 "BeePF MCP Server"
- 启动命令 (command): 指向您构建生成的可执行文件路径,例如 './beepf-mcp'
- 参数 (args): 本项目当前版本无需额外的启动参数。
配置示例(概念描述,非直接可粘贴的代码块,具体格式请参考您的 MCP 客户端文档):
- 服务器的逻辑名称设置为 "BeePF MCP Server"。
- 当客户端需要连接时,执行您在安装步骤中构建出的 './beepf-mcp' 可执行文件。
此外,本项目默认也启动了 SSE (Server-Sent Events) 服务,客户端也可以通过配置 URL 直接连接到运行中的服务器,例如 'http://192.168.200.200:8080/sse' (请将 IP 和端口替换为实际部署地址)。
基本使用方法
一旦 MCP 服务器在客户端配置并成功启动(或连接),您即可通过客户端提供的交互界面使用其暴露的功能。
例如,在支持 MCP 工具调用的 LLM 客户端中:
- 查找并选择 "BeePF MCP Server"。
- 浏览或搜索可用的工具列表(如 'topo', 'prog', 'node_metrics' 等)。
- 选择一个工具,根据提示输入必要的参数(如 'prog_detail' 需要 'progId')。
- 执行工具,LLM 客户端将显示工具返回的结果(如拓扑信息、程序列表或性能数据)。
这使得 LLM 能够直接获取实时的系统可观测性数据,用于分析、诊断或生成报告。
信息
分类
开发者工具