SOC-代理:MCP+Wazuh与仪表板和主动代理聊天
一个交互式Streamlit应用程序,允许您与由Groq LLM支持的启用MCP的代理聊天,查看历史对话,安排运行定期提示的主动代理,并在一个简单的仪表板中监视活动。
该应用程序将聊天和工具使用情况存储在本地SQLite数据库中,并包括一个用于工具使用、主动代理执行统计和警报样式消息的基本仪表板。
特性
- 聊天UI由Streamlit提供支持,在SQLite中具有持久的消息历史记录
- MCP客户端集成,从代理调用启用Wazuh的MCP服务器
- Groq LLM后端通过
langchain-groq - 主动代理:使用APScheduler定期安排基于提示的检查
- 仪表板:工具使用条形图、主动执行时间表和警报表
- 简单的本地持久性:
chat_logs.db包含消息、工具日志和首选项
架构概述
该项目遵循结构良好的模块化架构:
soc-agent-automation/
├── src/ # Main source code
│ ├── core/ # Core business logic
│ │ ├── agent.py # MCP agent management
│ │ └── proactive_agents.py # Scheduled agent tasks
│ ├── database/ # Database layer
│ │ └── models.py # Database models and operations
│ ├── ui/ # User interface components
│ │ ├── chat.py # Chat interface
│ │ └── dashboard.py # Dashboard components
│ └── utils.py # Utility functions
├── config/ # Configuration management
│ └── settings.py # Application settings
├── tests/ # Test files
├── scripts/ # Helper scripts
├── docs/ # Documentation
├── static/ # Static assets
├── main.py # Application entry point
└── pyproject.toml # Project metadata组件责任
- src/core/agent.py --MCP客户端+Groq LLM集成和代理管理
- src/core/proactive_agents.py --APScheduler支持自动化任务的定期作业
- src/ui/dashboard.py --带有图表和指标的分析仪表板
- src/ui/chat.py --带有会话管理的交互式聊天界面
- src/database/models.py --SQLite数据库操作和数据模型
- config/settings.py --集中配置管理
- main.py --使用基于选项卡的UI简化应用程序入口点
快速开始
1.先决条件
- Python 3.10+(用3.12测试)
- Groq API密钥和型号名称
- 为Wazuh或兼容的MCP服务器二进制文件配置的MCP服务器
- Git(用于克隆存储库)
2.安装
选项A:自动设置(推荐)
# Clone the repository
git clone https://github.com/company/soc-agent-automation.git
cd soc-agent-automation
# Run the setup script
./scripts/setup.sh # Linux/macOS
# or
.\scripts\setup.bat # Windows选项B:手动设置
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # Linux/macOS
# or
venv\Scripts\activate.bat # Windows
# Install dependencies
pip install -r requirements.txt
# Copy environment template
cp .env.example .env3.配置
编辑 .env 使用您的设置文件:
# Required: Groq LLM credentials
GROQ_API_KEY=your_groq_api_key_here
GROQ_MODEL=mixtral-8x7b-32768
# Required: MCP server command
MCP_COMMAND=path/to/your/mcp/server
# Wazuh configuration
WAZUH_API_PASSWORD=your_wazuh_password
WAZUH_INDEXER_PASSWORD=your_indexer_password
# ... other Wazuh settings4.启动应用程序
# Quick start (recommended)
./scripts/start.sh
# Or manually
source venv/bin/activate
streamlit run main.py该应用程序将在 http://localhost:8501
使用SOC代理平台
聊天界面
- Groq LLM与MCP集成的交互式聊天
- 具有会话管理的持久消息历史记录
- 启用Wazuh的MCP服务器的实时响应
- 聊天记录和会话切换的侧栏导航
主动代理
- 安排自动化安全监控任务
- 配置自定义提示和执行间隔
- 具有重试逻辑和错误处理的后台执行
- 自动警报和通知
分析仪表盘
- 实时指标和系统健康监测
- 工具使用分析和性能跟踪
- 主动代理执行时间表
- 安全警报和事件跟踪
发展
开发工具
使用开发脚本执行常见任务:
# Format code
./scripts/dev.sh format
# Lint code
./scripts/dev.sh lint
# Type checking
./scripts/dev.sh type-check
# Run tests
./scripts/dev.sh test
# Run tests with coverage
./scripts/dev.sh test-cov
# Run all checks
./scripts/dev.sh all
# Clean temporary files
./scripts/dev.sh clean
# Reset database
./scripts/dev.sh db-reset项目结构
代码库遵循现代Python项目惯例:
- 模块化架构:通过专用模块明确区分关注点
- 配置管理:具有基于环境的配置的集中设置
- 数据库层:适当的数据库抽象和连接管理
- 测试:带夹具和模拟的综合测试套件
- 文档:具有类型提示的文档化代码
- 脚本:开发任务的自动化脚本
添加新功能
- 核心逻辑:添加到
src/core/用于业务逻辑 - UI组件:添加到
src/ui/用于界面元素 - 数据库模型:扩展
src/database/models.py用于数据操作 - 配置:更新
config/settings.py对于新设置 - 测试:将测试添加到
tests/目录
测试
# Run all tests
pytest
# Run with coverage
pytest --cov=src --cov=config
# Run specific test file
pytest tests/test_database.py配置详情
环境变量
- 集
GROQ_API_KEY和GROQ_MODEL在.env用于LLM访问 - 配置
MCP_COMMAND指向您的Wazuh MCP服务器二进制文件 - 集
WAZUH_*Wazuh API和Indexer连接的变量
数据库
- SQLite数据库:
chat_logs.db在项目根中 - 使用适当的架构和索引自动初始化
- 基于会话的消息历史和分析跟踪
故障排除
常见问题
缺少依赖项
# Install all dependencies
./scripts/setup.sh
# Or manually
pip install -r requirements.txt数据库问题
# Reset database
./scripts/dev.sh db-reset
# Or manually
python -c "from src.database.models import init_db; init_db()"配置错误
- 验证
.env文件存在并包含所有必需的变量 - 检查Groq API密钥和型号的可用性
- 确认MCP服务器二进制路径和Wazuh连接
应用程序启动问题
# Check system health
./scripts/start.sh
# Debug mode
streamlit run main.py --logger.level debug许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
贡献
欢迎投稿!请随时提交拉取请求。
支持
有关支持和问题,请在项目存储库中打开问题。
