NetFlow MCP服务器
一种模型上下文协议(MCP)服务器,为分析存储在Elasticsearch中的NetFlow数据提供自然语言接口。查询您的网络流量模式,检测瓶颈,识别异常,并使用简单的会话查询获得智能建议。
特性
- 流量分析:实时带宽监控、顶级通话者识别和服务使用统计
- 瓶颈检测:具有可配置阈值的接口利用率监控
- 异常检测:端口扫描检测、流量峰值/下降警报和异常模式识别
- 主持人调查:深入了解特定IP地址的流量模式
- 智能推荐:基于当前网络状态的优先行动
先决条件
- Python 3.8或更高版本
- 带有NetFlow数据的Elasticsearch集群(索引:
logs-netflow*) - MCP兼容客户端(例如Claude Desktop)
安装
macOS设置
- 克隆存储库:
git clone https://github.com/yourusername/netflow-mcp-server.git
cd netflow-mcp-server- 创建并激活虚拟环境:
python3 -m venv venv
source venv/bin/activate- 安装依赖项:
pip install mcp elasticsearch python-dotenv- 配置环境变量:
cp .env.example .env
# Edit .env with your Elasticsearch credentials
nano .env- 配置Claude桌面:
增添 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"netflow": {
"command": "/usr/bin/python3",
"args": ["/path/to/netflow-mcp-server/netflow_mcp_server.py"],
"env": {
"PYTHONPATH": "/path/to/netflow-mcp-server"
}
}
}
}- 重新启动克劳德桌面 加载MCP服务器。
Linux安装程序
- 克隆存储库:
git clone https://github.com/yourusername/netflow-mcp-server.git
cd netflow-mcp-server- 创建并激活虚拟环境:
python3 -m venv venv
source venv/bin/activate- 安装依赖项:
pip install mcp elasticsearch python-dotenv- 配置环境变量:
cp .env.example .env
# Edit .env with your Elasticsearch credentials
vim .env- 配置Claude桌面 (如果使用AppImage):
增添 ~/.config/Claude/claude_desktop_config.json:
{
"mcpServers": {
"netflow": {
"command": "/usr/bin/python3",
"args": ["/path/to/netflow-mcp-server/netflow_mcp_server.py"],
"env": {
"PYTHONPATH": "/path/to/netflow-mcp-server"
}
}
}
}或者,如果是通过包管理器安装的,请检查您的发行版的相应配置目录。
- 重新启动克劳德桌面 加载MCP服务器。
环境配置
创建一个 .env 包含Elasticsearch连接详细信息的文件:
# Elasticsearch Configuration
ES_HOST=your-elasticsearch-host
ES_PORT=9200
ES_USERNAME=your-username
ES_PASSWORD=your-password用法示例
配置后,您可以向Claude自然语言询问有关网络流量的问题:
流量分析
- “当前的网络流量是什么样的?”
- “显示过去一小时带宽消耗量最大的用户”
- “哪些服务使用的带宽最多?”
瓶颈检测
- “是否存在网络瓶颈?”
- “哪些接口被过度使用了?”
- “显示利用率超过70%的界面”
安全与异常
- “现在有什么安全问题吗?”
- “有人在扫描我们的网络吗?”
- “检测任何异常的交通模式”
主持人调查
- “192.168.1.100在网络上做什么?”
- “显示10.0.0.50的所有流量”
- “192.168.1.25正在访问哪些服务?”
建议
- “我现在应该关注什么?”
- “给我网络推荐”
- “有什么我应该解决的关键问题吗?”
建筑
MCP服务器连接到Elasticsearch集群,并提供五个主要工具:
- 交通分析:流量模式、带宽使用、热门演讲者
- detect_bottlenecks:接口利用率和容量问题
- 发现_常态:端口扫描、流量峰值、异常模式
- 调查费用:具体IP地址的详细分析
- get_recommendations:智能、优先的行动项目
数据要求
服务器期望Elasticsearch中的NetFlow数据包含以下字段:
@timestamp:流时间戳network.bytes:传输的字节数network.packets:数据包计数source.ip:源IP地址destination.ip:目标IP地址destination.port:目标端口netflow.ingress_interface:入口接口IDnetflow.egress_interface:出口接口ID
定制
接口配置
在中编辑接口映射 netflow_mcp_server.py:
self.interfaces = {
1: {"name": "WAN-1", "capacity_mbps": 10000},
2: {"name": "LAN-1", "capacity_mbps": 10000},
3: {"name": "DMZ-1", "capacity_mbps": 1000},
4: {"name": "Internet-1", "capacity_mbps": 1000}
}服务端口映射
可以向中添加其他服务端口 SERVICE_PORTS 服务器类中的字典。
故障排除
服务器未加载
- 检查Claude Desktop日志中的连接错误
- 验证配置中的Python路径和脚本位置
- 确保安装了所有依赖项
连接问题
- 验证Elasticsearch是否可以从您的计算机访问
- 检查凭据
.env文件 - 测试连接:
curl -u username:password https://es-host:9200
未返回数据
- 验证NetFlow索引是否存在:
logs-netflow* - 检查查询中的时间范围
- 确保摄入NetFlow数据
