Splunk MCP服务器

一个基于FastMCP的模型上下文协议(MCP)服务器,提供LLM驱动的工具,用于与Splunk Enterprise和Splunk Cloud交互,涵盖搜索、警报、KV存储管理和索引管理四大功能领域。

  • by anatsheh84
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 anatsheh84/splunk-mcp-server

使用说明

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 --提交长时间运行的搜索,立即获取作业ID
  • splunk_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

许可证

麻省理工学院