使用说明
Splunk MCP服务器
一个模型上下文协议(MCP)服务器,提供LLM驱动的工具,用于与Splunk Enterprise和Splunk Cloud进行交互。内置于 FastMCP (Python),它在四个功能领域提供了25个工具,用于搜索、警报、KV存储管理和索引管理。
设计用于 克劳德桌面版 (通过stdio传输)和 OpenShift AI上的Llama Stack (通过流式HTTP传输)。
特性
搜索和调查(7个工具)
splunk_search--同步运行SPL查询(创建作业→ poll → 返回结果)splunk_search_async--提交长时间运行的搜索,立即获取作业IDsplunk_get_job_status--检查搜索作业进度和状态splunk_get_job_results--检索已完成作业的结果splunk_list_jobs--列出当前和最近的搜索作业splunk_cancel_job--取消正在运行的搜索作业splunk_export_search--通过导出端点流式传输大型结果集
已保存的搜索和警报(6个工具)
splunk_list_saved_searches--列出所有已保存的搜索和警报splunk_get_saved_search--获取特定已保存搜索的详细信息splunk_create_saved_search--创建新的已保存搜索或警报splunk_update_saved_search--修改已保存的现有搜索splunk_delete_saved_search--删除已保存的搜索splunk_run_saved_search--立即发送已保存的搜索
KV仓库(7个工具)
splunk_list_kvstore_collections--列出所有KV商店收藏splunk_get_kvstore_schema--获取集合架构和字段定义splunk_query_kvstore--使用MongoDB风格的过滤器查询记录splunk_insert_kvstore_record--插入新记录splunk_update_kvstore_record--按键更新现有记录splunk_delete_kvstore_record--按键删除单个记录splunk_delete_kvstore_records--批量删除与查询匹配的记录
索引和数据管理(5个工具)
splunk_list_indexes--列出所有具有事件计数和大小的索引splunk_get_index--获取详细的索引配置splunk_list_sourcetypes--列出所有源类型及其描述splunk_list_inputs--列出配置的数据输入splunk_health_check--检查Splunk实例运行状况、KV存储和连接
快速开始
先决条件
- Python 3.10+
- 具有REST API访问权限的Splunk Enterprise或Cloud实例(端口8089)
安装
git clone https://github.com/anatsheh84/splunk-mcp-server.git
cd splunk-mcp-server
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
配置
复制示例环境文件并设置您的Splunk凭据:
cp .env.example .env
编辑 .env 使用您的Splunk连接详细信息:
SPLUNK_HOST=https://your-splunk-host
SPLUNK_PORT=8089
SPLUNK_USERNAME=admin
SPLUNK_PASSWORD=your-password
SPLUNK_VERIFY_SSL=false
SPLUNK_AUTH_TYPE=basic
SPLUNK_API_MODE=direct
配置选项:
SPLUNK_AUTH_TYPE:basic(用户名/密码)或token(Splunk身份验证令牌)SPLUNK_API_MODE:direct(端口8089断开)或web_proxy(Splunk Web REST代理通过/en-US/splunkd/__raw/)SPLUNK_VERIFY_SSL:设置为true生产中持有有效证书
测试连接
python3 test_connection.py
运行MCP服务器
stdio模式 (适用于克劳德桌面):
splunk-mcp
# or
MCP_TRANSPORT=stdio python3 -m splunk_mcp.server
流式HTTP模式 (适用于Llama Stack/OpenShift AI):
MCP_TRANSPORT=streamable_http MCP_HTTP_PORT=8080 splunk-mcp
Claude桌面集成
将以下内容添加到您的Claude Desktop MCP配置中(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):
{
"mcpServers": {
"splunk": {
"command": "/path/to/splunk-mcp-server/.venv/bin/python",
"args": ["-m", "splunk_mcp.server"],
"env": {
"SPLUNK_HOST": "https://your-splunk-host",
"SPLUNK_PORT": "8089",
"SPLUNK_USERNAME": "admin",
"SPLUNK_PASSWORD": "your-password",
"SPLUNK_VERIFY_SSL": "false",
"SPLUNK_API_MODE": "direct",
"MCP_TRANSPORT": "stdio"
}
}
}
}
或者使用附带的安装脚本:
./setup_claude_desktop.sh
码头工人
docker build -t splunk-mcp-server .
docker run -e SPLUNK_HOST=https://splunk:8089 \
-e SPLUNK_USERNAME=admin \
-e SPLUNK_PASSWORD=changeme \
-e MCP_TRANSPORT=streamable_http \
-p 8080:8080 \
splunk-mcp-server
项目结构
splunk-mcp-server/
├── src/splunk_mcp/
│ ├── __init__.py
│ ├── server.py # FastMCP server, lifespan, transport selection
│ ├── config.py # Pydantic Settings (env vars)
│ ├── client.py # Async HTTP client for Splunk REST API
│ ├── errors.py # Splunk-specific error handling
│ ├── formatters.py # Markdown/JSON response formatting
│ ├── tools/
│ │ ├── search.py # 7 search tools
│ │ ├── saved_searches.py # 6 saved search tools
│ │ ├── kvstore.py # 7 KV Store tools
│ │ └── indexes.py # 5 index/health tools
│ └── models/
│ ├── search.py # Pydantic input models for search
│ ├── saved_searches.py
│ ├── kvstore.py
│ └── indexes.py
├── pyproject.toml
├── Dockerfile
├── .env.example
├── test_connection.py # Quick connectivity test
├── test_tools_e2e.py # End-to-end tool tests
└── claude_desktop_config.json # Example Claude Desktop config
许可证
麻省理工学院