Splunk MCP工具

一个基于FastMCP的工具,用于通过自然语言与Splunk Enterprise/Cloud交互,提供搜索、KV存储管理和资源访问功能。

  • by livehybrid
  • Python
  • 本地部署
  • 106 星标
  • 更新于
在 GitHub 查看 livehybrid/splunk-mcp

使用说明

⚠️ 此项目已存档——使用官方Splunk MCP服务器

感谢所有使用、主演和分叉这个项目的人! 🙏 它最初是一项社区努力,旨在引入模型上下文协议(MCP) 早在正式选项存在之前,就支持Splunk。

Splunk现在推出了第一方完全支持的MCP服务器 它已经长大了 超出了这个社区项目所提供的范围。请迁移到官方服务器:

  • 📦 Splunkbase上的SplunkMCP服务器(应用程序7931,由Splunk LLC提供): https://splunkbase.splunk.com/app/7931
  • 📖 文档——Splunk平台的MCP服务器: https://help.splunk.com/en/splunk-cloud-platform/mcp-server-for-splunk-platform/

此存储库现在 只读/存档 将不再收到 更新。以下代码仅供历史参考。再次感谢! 🚀


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客户端兼容
    • 非常适合与AI助手直接集成
    • 从...开始 python splunk_mcp.py stdio

特征

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

可用的MCP工具

以下工具可通过MCP接口使用:

工具管理

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

健康检查

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

用户管理

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

索引管理

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

搜索

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

KV商店

  • list_kvstore_collections
    • 列出所有KV商店收藏
  • create_kvstore_collection
    • 创建新的KV商店集合
    • 参数:collection_name(字符串)
  • 删除库集合
    • 删除现有的KV存储集合
    • 参数:collection_name(字符串)

SSE端点

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

  • /sse:以文本/事件流格式返回SSE连接信息

    • 提供有关SSE连接的元数据
    • 包括消息端点的URL
    • 提供协议和能力信息
  • /sse/消息:主SSE流端点

    • 流式传输心跳等系统事件
    • 保持持久连接
    • 发送格式正确的SSE事件
  • /sse/健康:SSE模式的健康检查端点

    • 以SSE格式返回状态和版本信息

错误处理

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

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

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

安装

使用紫外线(推荐)

UV是一个用Rust编写的快速Python包安装程序和解析器。它比pip快得多,并提供了更好的依赖性解决方案。

先决条件

UV快速入门

  1. 克隆存储库:

    git clone <repository-url>
    cd splunk-mcp
    
  2. 使用UV安装依赖项:

    # Install main dependencies
    uv sync
    
    # Or install with development dependencies
    uv sync --extra dev
    
  3. 运行应用程序:

    # SSE mode (default)
    uv run python splunk_mcp.py
    
    # STDIO mode
    uv run python splunk_mcp.py stdio
    
    # API mode
    uv run python splunk_mcp.py api
    

UV命令参考

# Install dependencies
uv sync

# Install with development dependencies
uv sync --extra dev

# Run the application
uv run python splunk_mcp.py

# Run tests
uv run pytest

# Run with specific Python version
uv run --python 3.11 python splunk_mcp.py

# Add a new dependency
uv add fastapi

# Add a development dependency
uv add --dev pytest

# Update dependencies
uv sync --upgrade

# Generate requirements.txt
uv pip compile pyproject.toml -o requirements.txt

使用诗歌(替代)

如果你喜欢诗歌,你仍然可以使用它:

# Install dependencies
poetry install

# Run the application
poetry run python splunk_mcp.py

使用pip(替代)

# Install dependencies
pip install -r requirements.txt

# Run the application
python splunk_mcp.py

操作模式

该工具在三种模式下运行:

  1. SSE模式 (默认)

    • 基于服务器发送事件的通信
    • 实时双向交互
    • 适用于基于web的MCP客户端
    • 未提供参数时的默认模式
    • 通过以下方式访问 /sse 端点
  2. API模式

    • RESTful API端点
    • 通过以下方式访问 /api/v1 端点前缀
    • 从...开始 python splunk_mcp.py api
  3. STDIO模式

    • 基于标准输入/输出的通信
    • 与Claude Desktop和其他MCP客户端兼容
    • 非常适合与AI助手直接集成
    • 从...开始 python splunk_mcp.py stdio

用法

本地使用

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

  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_TOKEN:(可选)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