Splunk MCP机器人演示
- 此存储库演示了Splunk MCP(模型上下文协议)服务器与VS Code Copilot的集成,允许AI助手与Splunk数据交互,并使用自然语言进行搜索。
- 我通过使用 SOC V3数据集和应用程序的Splunk Boss
- 由于一些应用程序已存档/处于较新版本,我已经下载了我能下载的内容,更新后的里程可能会因功能而异,等等。
- 使用 splunk-mcp-server2,我复制了python文件夹,以便在本地运行MCP服务器
uv用于初始测试
先决条件
- 已安装Docker和Docker Compose
- 带有Copilot扩展名的VS代码
- Python 3.8+(如果在本地运行)
- 访问Splunk实例(或使用附带的Docker设置)
注: Splunk Docker镜像目前不支持Apple Silicon(M1/M2/M3)。此演示是在Proxmox上运行的Ubuntu Server VM上开发和测试的。如果你使用的是Apple Silicon,可以考虑在Linux VM或x86_64架构的机器上运行它。 请勿将Splunk docker环境用于生产环境 docker-compose.yml 仅作为示例添加,用于在本地或实验室环境中进行测试。(例如,我们没有建立一个完全生产就绪和安全的环境)快速开始
步骤1:使用Docker Compose设置Splunk多功能一体机
注意:如果你已经有一个Splunk实例在运行,你可以跳过这一部分,这只是一个示例,可以让测试指令启动并运行测试数据。
- 该存储库包括一个预配置的
docker-compose.yml该文件用于设置Splunk,并自动安装所有必要的插件。
- 下载超过GitHub文件大小限制的大型Splunk应用程序:
# Download these files and place them in the splunk_apps directory:
# 1. Boss of the SOC v3 dataset (320MB)
# Download from: https://github.com/splunk/botsv3
# File: botsv3_data_set.tgz
# 2. Splunk Add-on for AWS (102MB)
# Download from: https://splunkbase.splunk.com/app/1876
# File: splunk-add-on-for-amazon-web-services-aws_7100.tgz- 使用提供的docker compose配置启动Splunk:
docker-compose up -d- 等待Splunk初始化(所有应用程序的初始设置大约需要60-90秒),然后访问以下web界面http://localhost:8000
- 用户名: admin - 密码: changeme123
- 以下Splunk应用程序是从自动安装的
splunk_apps目录:
- 亚马逊GuardDuty附加组件 - SOC v3数据集的负责人 - 思科端点安全分析 - Splunk的代码42 - 微软365应用程序 - Splunk通用信息模型(CIM) - Splunk安全基础 - 适用于AWS、Azure、Windows、Sysmon等的各种技术附加组件
这些应用程序是从以下位置挂载的 ./splunk_apps 并使用自动安装 SPLUNK_APPS_URL 环境变量。
- Splunk实例包括:
- 在端口8088上启用了HTTP事件收集器(HEC),令牌为: abc123hec - Splunk转发器端口9997,用于从通用转发器接收数据 - 用于REST API访问的端口8089上的管理API
步骤2:安装Python依赖项
由于我们正在使用 stdio 如果使用VS Code进行传输,MCP服务器将自动生成。我们只需要确保安装了Python依赖项:
- 导航到Python服务器目录:
cd python- 使用安装依赖项
uv:
uv sync步骤3:使用MCP配置VS代码副本
- 复制示例MCP配置文件:
cp .vscode/mcp.json-example .vscode/mcp.json- 编辑
.vscode/mcp.json并更新以下值:
- cwd:替换 /path/to/splunk_mcp_bots_demo/python 与您的完整路径 python 目录 - SPLUNK_HOST:替换 localhost 使用您的Splunk服务器IP或主机名(使用 localhost 如果在本地运行,或者如果在Proxmox上运行,则使用VM的IP) - SPLUNK_PASSWORD:如果更改了默认密码,则更新 - 除非您有自定义设置,否则其他值可以保留为默认值
重要提示: 如果您在VM上运行Splunk(如Proxmox上的Ubuntu Server),请确保使用VM的IP地址SPLUNK_HOST而不是localhost例如:"SPLUNK_HOST": "192.168.1.100"
配置示例:
{
"servers": {
"splunk-mcp": {
"type": "stdio",
"command": "uv",
"args": ["run", "server.py"],
"cwd": "/path/to/splunk_mcp_bots_demo/python",
"env": {
"TRANSPORT": "stdio",
"SPLUNK_HOST": "localhost",
"SPLUNK_PORT": "8089",
"SPLUNK_USERNAME": "admin",
"SPLUNK_PASSWORD": "changeme123",
"VERIFY_SSL": "false"
}
}
}
}- 重新启动VS Code或重新加载窗口,使MCP配置生效。
注: 此配置使用stdio运输与uv用于Python依赖管理。需要时,MCP服务器将由VS Code直接生成。
步骤4:验证设置
- 在VS Code with Copilot中,您现在应该能够与Splunk数据进行交互。试着问:
- “Splunk中有哪些索引可用?” - “显示_internal索引中的最后10个事件” - “搜索botsv3中始终有aws的前10种源类型”
替代设置方法
使用克劳德桌面
编辑您的Claude Desktop配置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"splunk-mcp": {
"url": "http://localhost:8050/sse"
}
}
}可用的MCP工具
MCP服务器提供以下工具:
- validate_spl:验证SPL查询是否存在风险和效率低下
- 搜索_新闻:运行阻止搜索查询
- 搜索导出:立即流式传输搜索结果
- 获取索引:列出可用的Splunk索引
- get_saved_search:列出已保存的搜索
- run_saved_search:执行已保存的搜索
- get_config:获取服务器配置
安全配置
MCP服务器包括内置的安全功能:
- SPL查询验证:检测有风险或破坏性的查询
- 输出消毒:屏蔽敏感数据(SSN、信用卡)
- 风险承受能力:阻止查询的可配置阈值
在您的 .env 文件:
SPL_RISK_TOLERANCE=75 # 0-100, higher allows riskier queries
SPL_SANITIZE_OUTPUT=true # Enable output sanitization
SPL_MAX_EVENTS_COUNT=100000 # Limit search resultsMCP集成问题
- 确保
.vscode/mcp.json文件存在并且格式正确 - 检查VS代码开发工具是否存在与MCP相关的错误
