一个统一的CLI工具,提供MCP(模型上下文协议)服务器能力,用于实时网络连接分析,并结合AI驱动的洞察力和OpenAI函数调用集成。

┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ netspy CLI │───▶│ MCP Server │───▶│ eBPF Server │
│ (MCP 客户端) │ │ (内部) │ │ (HTTP API) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ OpenAI API │
│ (函数调用) │
└─────────────────┘
用户查询 → 对话管理器 → OpenAI API → 函数调用 → MCP 工具 → 结果 → 最终响应
eBPF网络监控服务器:从ebpf-server仓库构建
git clone git@github.com:SRodi/ebpf-server.git
cd ebpf-server
make build # 编译Go代码和eBPF程序
root权限:服务器上的eBPF操作需要
OpenAI API密钥:用于AI洞察(设置OPENAI_API_KEY环境变量)
export OPENAI_API_KEY=your_openai_api_key_here
go build -o netspy ./cmd/netspy
# 1. 启动eBPF API服务器(运行一次并持续运行)
cd /path/to/ebpf-server
sudo ./bin/ebpf-server --http --port 8080
# 2. 设置OpenAI API密钥
export OPENAI_API_KEY=your_key_here
# 3. 生成一些网络流量
curl -s http://google.com
# 4. 使用上下文分析
./netspy
netspy-mcp> contextual "分析我的系统"
AI驱动的分析自动选择并串联多个工具:
# 交互模式带上下文分析
./netspy
netspy-mcp> contextual "我的网络连接发生了什么?"
netspy-mcp> contextual "是否有数据包丢失或连接问题?"
netspy-mcp> contextual "分析nginx进程的网络行为"
# 命令行模式
./netspy --tool contextual_analysis --query "分析我的网络活动"
./netspy --tool contextual_analysis --query "curl的行为如何?" --process curl
# 交互模式
./netspy
netspy-mcp> summary --pid 1234 --duration 120
netspy-mcp> list --process curl --max-events 20
netspy-mcp> analyze --process nginx
netspy-mcp> insights "curl在60秒内建立了5个连接"
# 单命令模式
./netspy --tool get_network_summary --pid 1234 --duration 120
./netspy --tool list_connections --process curl --max-events 15
./netspy --tool analyze_patterns --process ssh
### 上下文分析
netspy-mcp> contextual "分析我的系统"
### 综合网络分析
1. **网络概要**:
- 在过去的60秒内,记录了**10次出站连接尝试**。
2. **详细连接事件**:
- 近期总共记录了**29个连接事件**。
- 值得注意的连接包括:
- 进程`netspy`到`127.0.0.1:8080`的**10个连接**。
- 额外的连接到DNS服务器和本地进程。
3. **数据包丢失**:
- 在过去60秒内,所有进程中发生了**3次数据包丢失**。
4. **连接模式**:
- **主要目的地**:本地连接占主导地位,有8个连接到`:0`
- **使用的协议**:主要是TCP(9个连接)和UDP(12个连接)
### 见解与建议:
- **监控`netspy`**:检测到大量本地主机使用
- **调查数据包丢失**:监测重复丢失
- **考虑网络容量**:如果负载重,请优化设置
- **定期监控**:实施这些指标的持续监控
netspy-mcp> summary --process curl
进程`curl`在过去60秒内进行了5次出站连接尝试
netspy-mcp> list --max-events 5
最近的连接事件(共15个):
21:05:53 | 127.0.0.1:8080 | TCP | netspy
21:03:38 | (本地套接字) | UNIX | snapd
21:01:08 | (本地套接字) | UNIX | snapd
20:58:42 | 192.168.120.2:53 | UDP | systemd-resolve
20:56:15 | 172.217.164.78:443 | TCP | curl
--server URL:eBPF服务器URL(默认:http://localhost:8080)--verbose:启用详细日志--help:显示帮助信息--tool TOOL:运行特定的MCP工具并退出
get_network_summary, list_connections, get_packet_drop_summary, list_packet_drops, analyze_patterns, ai_insights, contextual_analysis--pid PID:要监控的进程ID--process NAME:要监控的进程名称--duration SECONDS:持续时间(秒,默认:60)--max-events COUNT:最大事件数(默认:100)--summary-text TEXT:用于AI洞察的摘要文本--query TEXT:用于上下文分析的自然语言查询系统自动注册所有MCP工具作为OpenAI函数,使LLM能够:
每个工具接受以下参数(除非特别指定,否则都是可选的):
网络分析函数:
pid(整数):要分析的进程IDprocess_name(字符串):要分析的进程名称duration(整数,默认:60):分析的持续时间(秒)max_events(整数,默认:10):返回的最大事件数AI函数:
query(字符串,对于contextual_analysis是必需的):自然语言查询summary_text(字符串,对于ai_insights是必需的):要分析的摘要文本无工具上下文集成 → 实时工具访问
缺少函数调用 → 完整的OpenAI函数支持
静态方法 → 动态工具使用
有限上下文 → 结构化上下文管理
“连接被拒绝”或连接失败
--http --port 8080curl http://localhost:8080/health“未找到连接”当服务器有数据时
curl -s http://google.comnetstat -tlnp | grep 8080验证服务器是否正在监听“权限被拒绝”
sudo启动eBPF服务器 - eBPF操作需要root权限OpenAI API错误
OPENAI_API_KEY环境变量是否已设置“open bpf/connection.o: 没有这样的文件或目录”
make build构建服务器import "github.com/srodi/netspy/internal/mcp"
// 创建嵌入服务器的MCP客户端
mcpClient := mcp.NewMCPClient("http://localhost:8080", true)
// 启动交互模式
ctx := context.Background()
err := mcpClient.StartInteractiveMode(ctx)
// 或执行单个命令
arguments := map[string]any{
"pid": 1234,
"duration": 120,
}
result, err := mcpClient.RunSingleCommand(ctx, "get_network_summary", arguments)
import "github.com/srodi/netspy/internal/openai"
// 创建上下文网络分析师
analyst := openai.NewContextualNetworkAnalyst(mcpExecutor)
// 使用自然语言分析
analysis, err := analyst.AnalyzeNetworkQuery(ctx, "我的网络发生了什么?")
// 特定进程分析
analysis, err := analyst.AnalyzeProcess(ctx, "nginx", 0, 60)
函数调用管理器(internal/openai/functions.go)
对话管理器(internal/openai/client.go)
gpt-4o-mini进行最佳函数调用智能网络分析师(internal/openai/analyst.go)
MCP服务器(internal/mcp/server.go)
架构支持轻松扩展:
gpt-4o-mini进行最佳函数调用本项目是网络遥测生态系统的一部分,并与ebpf-server集成,以实现全面的网络监控能力。