Meraki MX的NetFlow MCP服务器
一个自托管的NetFlow v9收集器,将网络流量分析暴露给 Claude.ai 通过 模型上下文协议(MCP)用简单的英语向克劳德提问有关你的社交网络的问题。
建筑
Meraki MX --UDP 2055--> [ingestor] ---> flows.db (SQLite WAL) 配置>常规>报告**
1. 启用 **网络流**
1. 集 **收集器IP** 到Docker主机的局域网IP
1. 集 **港口** 到 `2055`
### 3.设置Cloudflare隧道
1. 首选 [Cloudflare零信任](https://one.dash.cloudflare.com) >网络>隧道
1. 创建指向的隧道 `http://mcp-netflow:3000`
1. 将隧道令牌复制到您的 `.env`
### 4.准备存储
sudo mkdir -p /mnt/netflow-data
对于生产,请使用专用磁盘:
sudo mkfs.ext4 /dev/sdb1 echo '/dev/sdb1 /mnt/netflow-data ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab sudo mount -a
### 5.发射
docker compose build docker compose up -d
验证:
docker compose ps # all 4 containers running docker compose logs -f ingestor # flow ingestion docker compose logs -f mcp-netflow # MCP server ready
### 6.连接到Claude.ai
1. 转到Claude.ai>设置>连接器
1. 添加新的MCP连接器
1. 输入您的Cloudflare隧道URL
1. 输入OAuth客户端ID和密码 `.env`
1. 完成OAuth授权流程
## MCP工具
连接后,Claude可以访问12个分析工具。得益于分层的预聚合汇总表,每个汇总表都能在2秒内完成。
|工具|它做什么|
|------|-------------|
| `get_traffic_overview` |高级摘要:总计、每小时时间表、热门演讲者、端口/协议细分|
| `get_top_destinations` |GeoIP、国家、东西交通、新目的地的顶级外部目的地|
| `get_anomaly_scan` |异常检测:目的地计数高、端口稀少、非工作时间活动、扫描检测|
| `get_sample_flows` |带过滤器(IP、端口、协议)的原始流钻取,最多48小时|
| `get_host_profile` |单个IP的行为特征,最多7天|
| `detect_beaconing` |通过区间规律性分析进行C2信标检测,最长48小时|
| `get_geoip_context` |关于外部IP的所有已知信息|
| `get_time_window` |精确时间戳范围的流量摘要,最大48小时窗口|
| `get_baseline_delta` |比较当前与上一时期,现货变化,最多7天|
| `get_baseline` |统计基线概况(平均值、标准偏差、p95)|
| `check_baseline_deviation` |使用z评分将过去24小时与基线进行比较|
| `get_collector_health` |收集器状态、流计数、数据库大小|
### 示例提示
- *“请概述过去7天的网络流量”*
- *“扫描我的网络是否存在任何安全异常”*
- *“检查过去24小时内是否有任何C2信标模式”*
- *“与基线相比,现在有什么异常吗?”*
- *“分析192.168.1.100上周的行为”*
- *“我们对IP 185.220.101.1了解多少?”*
## 常见操作
Rebuild after code changes
docker compose build mcp-netflow && docker compose up -d mcp-netflow
View logs
docker compose logs -f
Restart ingestor (after GeoIP database update)
docker compose restart ingestor
Stop everything
docker compose down
## 故障排除
|问题|解决方案|
|---------|----------|
|无流量到达|检查Meraki配置,防火墙允许UDP 2055到Docker主机|
|GeoIP字段为空|验证mmdb文件是否存在于 `/mnt/netflow-data`,重新启动点火开关|
|OAuth错误|确保客户端ID/密钥匹配 `.env` Claude.ai连接器|
|SQLite已锁定|两个容器都需要读写访问 `/mnt/netflow-data` |
|基线为空|基线填充前需要2天以上的数据|
## 博客文章
看 [docs/blog-post.md](docs/blog-post.md) 关于构建和部署此系统的完整文章。
## 许可证
麻省理工学院