Skip to main content
Glama

splunk-mcp

Splunk MCP(模型上下文协议)工具

基于 FastMCP 的工具,用于通过自然语言与 Splunk Enterprise/Cloud 交互。该工具提供了一系列功能,用于通过直观的界面搜索 Splunk 数据、管理 KV 存储以及访问 Splunk 资源。

操作模式

该工具有三种运行模式:

  1. SSE 模式(默认)
    • 基于服务器发送事件的通信
    • 实时双向互动
    • 适用于基于 Web 的 MCP 客户端
    • 未提供参数时的默认模式
    • 通过/sse端点访问
  2. API模式
    • RESTful API 端点
    • 通过/api/v1端点前缀访问
    • python splunk_mcp.py api开始
  3. STDIO模式
    • 基于标准输入/输出的通信
    • 与 Claude Desktop 和其他 MCP 客户端兼容
    • 非常适合与人工智能助手直接集成
    • python splunk_mcp.py stdio开始

特征

  • Splunk 搜索:使用自然语言查询执行 Splunk 搜索
  • 索引管理:列出并检查 Splunk 索引
  • 用户管理:查看和管理 Splunk 用户
  • KV 商店操作:创建、列出和管理 KV 商店集合
  • 异步支持:采用异步/等待模式构建,以获得更好的性能
  • 详细日志:使用表情符号指示器进行全面日志记录,以获得更好的可视性
  • SSL 配置:灵活的 SSL 验证选项,满足不同的安全要求
  • 增强的调试:详细的连接和错误日志,用于故障排除
  • 全面测试:单元测试涵盖所有主要功能
  • 错误处理:使用适当的状态代码进行强大的错误处理
  • SSE 合规性:完全符合 MCP SSE 规范

可用的 MCP 工具

可通过 MCP 界面使用以下工具:

工具管理

  • 列表工具
    • 列出所有可用的 MCP 工具及其描述和参数

健康检查

  • 健康检查
    • 返回可用 Splunk 应用程序列表以验证连接性
  • ping
    • 简单 ping 端点来验证 MCP 服务器是否处于活动状态

用户管理

  • 当前用户
    • 返回有关当前已验证用户的信息
  • 列出用户
    • 返回所有用户及其角色的列表

指数管理

  • 列表索引
    • 返回所有可访问的 Splunk 索引的列表
  • 获取索引信息
    • 返回有关特定索引的详细信息
    • 参数:index_name(字符串)
  • 索引和源类型
    • 返回索引及其源类型的完整列表

搜索

  • 搜索_splunk
    • 执行 Splunk 搜索查询
    • 参数:
      • search_query(字符串):Splunk 搜索字符串
      • 最早的时间(字符串,可选):搜索窗口的开始时间
      • latest_time(字符串,可选):搜索窗口的结束时间
      • max_results(整数,可选):返回的最大结果数
  • 列出已保存的搜索
    • 返回 Splunk 实例中已保存的搜索列表

KV商店

  • 列表_kvstore_collections
    • 列出所有 KV 商店集合
  • 创建_kvstore_collection
    • 创建一个新的 KV 存储集合
    • 参数:collection_name(字符串)
  • 删除_kvstore_collection
    • 删除现有的 KV 存储集合
    • 参数:collection_name(字符串)

SSE 终端节点

在 SSE 模式下运行时,以下端点可用:

  • /sse :以文本/事件流格式返回 SSE 连接信息
    • 提供有关 SSE 连接的元数据
    • 包含消息端点的 URL
    • 提供协议和功能信息
  • /sse/messages :主 SSE 流端点
    • 流式传输心跳等系统事件
    • 保持持久连接
    • 发送格式正确的 SSE 事件
  • /sse/health :SSE 模式的健康检查端点
    • 以 SSE 格式返回状态和版本信息

错误处理

MCP 实现包括一致的错误处理:

  • 无效的搜索命令或格式错误的请求
  • 权限不足
  • 未找到资源
  • 输入验证无效
  • 意外的服务器错误
  • Splunk 服务器连接问题

所有错误响应都包含一条解释错误的详细消息。

先决条件

  • Python 3.10 或更高版本
  • 依赖管理的诗歌
  • Splunk Enterprise/云实例
  • 具有必要权限的适当 Splunk 凭证

安装

选项 1:本地安装

  1. 克隆存储库:
git clone <repository-url> cd splunk-mcp
  1. 使用 Poetry 安装依赖项:
poetry install
  1. 复制示例环境文件并配置您的设置:
cp .env.example .env
  1. 使用您的 Splunk 凭证更新.env文件:
SPLUNK_HOST=your_splunk_host SPLUNK_PORT=8089 SPLUNK_USERNAME=your_username SPLUNK_PASSWORD=your_password SPLUNK_SCHEME=https VERIFY_SSL=true FASTMCP_LOG_LEVEL=INFO

选项 2:Docker 安装

  1. 拉取最新镜像:
docker pull livehybrid/splunk-mcp:latest
  1. 按照上述方法创建.env文件或直接使用环境变量。
  2. 使用 Docker Compose 运行:
docker-compose up -d

或者直接使用 Docker:

docker run -i \ --env-file .env \ livehybrid/splunk-mcp

用法

本地使用

该工具可以以三种模式运行:

  1. SSE 模式(MCP 客户端的默认模式):
# Start in SSE mode (default) poetry run python splunk_mcp.py # or explicitly: poetry run python splunk_mcp.py sse # Use uvicorn directly: SERVER_MODE=api poetry run uvicorn splunk_mcp:app --host 0.0.0.0 --port 8000 --reload
  1. STDIO模式:
poetry run python splunk_mcp.py stdio

Docker 使用

该项目同时支持新版docker compose (V2) 和旧版docker-compose (V1) 命令。以下示例使用的是 V2 语法,但两种语法均受支持。

  1. SSE 模式(默认):
docker compose up -d mcp
  1. API模式:
docker compose run --rm mcp python splunk_mcp.py api
  1. STDIO模式:
docker compose run -i --rm mcp python splunk_mcp.py stdio

使用 Docker 进行测试

该项目包含 Docker 中的专用测试环境:

  1. 运行所有测试:
./run_tests.sh --docker
  1. 运行特定的测试组件:
# Run only the MCP server docker compose up -d mcp # Run only the test container docker compose up test # Run both with test results docker compose up --abort-on-container-exit

测试结果将在./test-results目录中提供。

Docker 开发技巧

  1. 建筑图像
# Build both images docker compose build # Build specific service docker compose build mcp docker compose build test
  1. 查看日志
# View all logs docker compose logs # Follow specific service logs docker compose logs -f mcp
  1. 调试
# Run with debug mode DEBUG=true docker compose up mcp # Access container shell docker compose exec mcp /bin/bash

注意:如果您使用的是 Docker Compose V1,请将上述命令中的docker compose替换为docker-compose

安全说明

  1. 环境变量
  • 永远不要提交.env文件
  • 使用.env.example作为模板
  • 考虑在生产中使用 Docker secrets
  1. SSL验证
  • 建议在生产环境中使用VERIFY_SSL=true
  • 可以禁用以进行开发/测试
  • 通过环境变量配置
  1. 端口暴露
  • 只暴露必要的端口
  • 尽可能使用内部 Docker 网络
  • 在生产中考虑网络安全

环境变量

配置以下环境变量:

  • SPLUNK_HOST :您的 Splunk 主机地址
  • SPLUNK_PORT :Splunk 管理端口(默认值:8089)
  • SPLUNK_USERNAME :您的 Splunk 用户名
  • SPLUNK_PASSWORD :您的 Splunk 密码
  • SPLUNK_SCHEME :连接方案(默认值:https)
  • VERIFY_SSL :启用/禁用 SSL 验证(默认值:true)
  • FASTMCP_LOG_LEVEL :日志记录级别(默认值:INFO)
  • SERVER_MODE :使用 uvicorn 时的服务器模式(sse、api、stdio)

SSL 配置

该工具提供了灵活的 SSL 验证选项:

  1. 默认(安全)模式
VERIFY_SSL=true
  • 完整的 SSL 证书验证
  • 已启用主机名验证
  • 推荐用于生产环境
  1. 轻松模式
VERIFY_SSL=false
  • SSL 证书验证已禁用
  • 已禁用主机名验证
  • 适用于测试或自签名证书

测试

该项目包括使用 pytest 进行全面测试覆盖以及使用自定义 MCP 客户端进行端到端测试:

运行测试

基本测试执行:

poetry run pytest

覆盖范围报告:

poetry run pytest --cov=splunk_mcp

详细输出:

poetry run pytest -v

端到端 SSE 测试

该项目包括一个自定义的 MCP 客户端测试脚本,该脚本连接到实时 SSE 端点并测试所有工具:

# Test all tools python test_endpoints.py # Test specific tools python test_endpoints.py health_check list_indexes # List all available tools python test_endpoints.py --list

该脚本通过以下方式充当 MCP 客户端:

  1. 连接到/sse端点以获取消息 URL
  2. 将工具调用发送到消息端点
  3. 处理 SSE 事件以提取工具结果
  4. 根据预期格式验证结果

这为 SSE 接口提供了真实世界的测试,因为它将被实际的 MCP 客户端使用。

测试结构

该项目采用三种互补的测试方法:

  1. MCP 集成测试tests/test_api.py
    • 通过mcp.call_tool()测试 MCP 工具接口
    • 使用 FastMCP 验证工具注册是否正确
    • 确保正确的响应格式和数据结构
    • 验证 MCP 接口级别的错误处理
    • **注意:**理想情况下,应将此文件重命名为test_mcp.py ,以更好地反映其用途
  2. 直接功能测试tests/test_endpoints_pytest.py
    • 直接测试 Splunk 功能(绕过 MCP 层)
    • 提供更全面的功能实现细节
    • 测试边缘情况、参数变化和错误处理
    • 包括 SSL 配置、连接参数和超时测试
    • 使用参数化测试实现高效的测试覆盖
  3. 端到端 MCP 客户端测试test_endpoints.py
    • 行为类似于连接到 SSE 端点的真实 MCP 客户端
    • 测试从连接到工具调用到响应解析的完整流程
    • 验证实际的 SSE 协议实现
    • 使用真实参数针对实时服务器测试工具
  4. 配置测试tests/test_config.py
    • 环境变量解析测试
    • SSL 验证设置
    • 连接参数验证

测试工具

测试支持:

  • 使用 pytest-asyncio 进行异步测试
  • 使用 pytest-cov 进行覆盖率报告
  • 使用 pytest-mock 进行模拟
  • 参数化测试
  • 连接超时测试

故障排除

连接问题
  1. 基本连接
  • 该工具现在执行基本的 TCP 连接测试
  • 检查8089端口是否可以访问
  • 验证网络路由和防火墙
  1. SSL 问题
  • 如果看到 SSL 错误,请尝试设置VERIFY_SSL=false
  • 检查证书有效性和信任链
  • 验证主机名是否与证书匹配
  1. 身份验证问题
  • 验证 Splunk 凭证
  • 检查用户权限
  • 确保帐户未被锁定
  1. 调试
  • 设置FASTMCP_LOG_LEVEL=DEBUG获取详细日志
  • 检查连接日志中的具体错误消息
  • 查看 SSL 配置消息
  1. SSE 连接问题
  • 验证是否可以通过/sse访问 SSE 端点
  • 检查正确的内容类型标头
  • 使用浏览器开发者工具检查 SSE 连接

克劳德积分

Claude桌面配置

您可以通过将 Splunk MCP 配置为使用 SSE 或 STDIO 模式来将其与 Claude Desktop 集成。将以下配置添加到claude_desktop_config.json文件中:

STDIO 模式(推荐用于桌面)
{ "mcpServers": { "splunk": { "command": "poetry", "env": { "SPLUNK_HOST": "your_splunk_host", "SPLUNK_PORT": "8089", "SPLUNK_USERNAME": "your_username", "SPLUNK_PASSWORD": "your_password", "SPLUNK_SCHEME": "https", "VERIFY_SSL": "false" }, "args": [ "--directory", "/path/to/splunk-mcp", "run", "python", "splunk_mcp.py", "stdio" ] } } }
SSE模式
{ "mcpServers": { "splunk": { "command": "poetry", "env": { "SPLUNK_HOST": "your_splunk_host", "SPLUNK_PORT": "8089", "SPLUNK_USERNAME": "your_username", "SPLUNK_PASSWORD": "your_password", "SPLUNK_SCHEME": "https", "VERIFY_SSL": "false", "FASTMCP_PORT": "8001", "DEBUG": "true" }, "args": [ "--directory", "/path/to/splunk-mcp", "run", "python", "splunk_mcp.py", "sse" ] } } }

与 Claude 一起使用

配置完成后,您可以通过 Claude 使用自然语言与 Splunk 进行交互。示例:

  1. 列出可用索引:
What Splunk indexes are available?
  1. 搜索 Splunk 数据:
Search Splunk for failed login attempts in the last 24 hours
  1. 获取系统健康:
Check the health of the Splunk system
  1. 管理 KV 存储:
List all KV store collections

MCP 工具将自动供 Claude 使用,允许它通过自然语言命令执行这些操作。

执照

[此处为您的许可证]

致谢

  • FastMCP 框架
  • 适用于 Python 的 Splunk SDK
  • Python-decouple 用于配置管理
  • SSE Starlette 用于 SSE 实施
-
security - not tested
A
license - permissive license
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

基于 FastMCP 的工具,用于通过自然语言与 Splunk Enterprise/Cloud 交互。该工具提供了一系列功能,用于搜索 Splunk 数据、管理 KV 存储以及访问 Splunk 资源。

  1. 操作模式
    1. 特征
      1. 可用的 MCP 工具
        1. 工具管理
        2. 健康检查
        3. 用户管理
        4. 指数管理
        5. 搜索
        6. KV商店
      2. SSE 终端节点
        1. 错误处理
          1. 先决条件
            1. 安装
              1. 选项 1:本地安装
              2. 选项 2:Docker 安装
            2. 用法
              1. 本地使用
              2. Docker 使用
              3. 使用 Docker 进行测试
              4. Docker 开发技巧
              5. 安全说明
            3. 环境变量
              1. SSL 配置
            4. 测试
              1. 运行测试
              2. 端到端 SSE 测试
              3. 测试结构
              4. 测试工具
              5. 故障排除
            5. 克劳德积分
              1. Claude桌面配置
              2. 与 Claude 一起使用
            6. 执照
              1. 致谢

                Related MCP Servers

                • -
                  security
                  A
                  license
                  -
                  quality
                  FastMCP is a comprehensive MCP server allowing secure and standardized data and functionality exposure to LLM applications, offering resources, tools, and prompt management for efficient LLM interactions.
                  Last updated -
                  3
                  Python
                  MIT License
                • -
                  security
                  A
                  license
                  -
                  quality
                  An MCP server that allows using natural language to manage Cloudflare resources (Workers, KV, R2, D1) through Claude Desktop, VSCode, and other MCP clients.
                  Last updated -
                  8
                  5
                  TypeScript
                  Apache 2.0
                • A
                  security
                  F
                  license
                  A
                  quality
                  A FastMCP tool that enables control of Spotify through natural language commands in Cursor Composer, allowing users to manage playback, search for content, and interact with playlists.
                  Last updated -
                  21
                  1
                  Python
                • -
                  security
                  F
                  license
                  -
                  quality
                  An MCP server that enables LLMs to access Slack's search functionality to retrieve users, channels, messages, and thread replies from a Slack workspace.
                  Last updated -
                  TypeScript

                View all related MCP servers

                MCP directory API

                We provide all the information about MCP servers via our MCP API.

                curl -X GET 'https://glama.ai/api/mcp/v1/servers/livehybrid/splunk-mcp'

                If you have feedback or need assistance with the MCP directory API, please join our Discord server