Splunk MCP(模型上下文协议)工具
基于FastMCP的工具,用于通过自然语言与Splunk Enterprise/Cloud进行交互。该工具提供了一组功能,用于搜索Splunk数据、管理KV存储和通过直观的界面访问Splunk资源。
操作模式
该工具在三种模式下运行:
- SSE模式 (默认)
- 基于服务器发送事件的通信 - 实时双向交互 - 适用于基于web的MCP客户端 - 未提供参数时的默认模式 - 通过以下方式访问 /sse 端点
- API模式
- RESTful API端点 - 通过以下方式访问 /api/v1 端点前缀 - 从开始 python splunk_mcp.py api
- 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模式下运行时,以下端点可用:
- /zh:以文本/事件流格式返回SSE连接信息
- 提供有关SSE连接的元数据 - 包括消息端点的URL - 提供协议和能力信息
- /sse/消息:主SSE流端点
- 流式传输心跳等系统事件 - 保持持久连接 - 发送格式正确的SSE事件
- /zh/健康:SSE模式的健康检查端点
- 以SSE格式返回状态和版本信息
错误处理
MCP实现包括一致的错误处理:
- 无效的搜索命令或格式错误的请求
- 权限不足
- 资源未找到
- 输入验证无效
- 意外的服务器错误
- Splunk服务器的连接问题
所有错误响应都包含解释错误的详细消息。
安装
使用紫外线(推荐)
UV是一个用Rust编写的快速Python包安装程序和解析器。它比pip快得多,并提供了更好的依赖性解决方案。
先决条件
- Python 3.10或更高版本
- UV已安装(参见 紫外线安装指南)
UV快速入门
- 克隆存储库:
git clone
cd splunk-mcp- 使用UV安装依赖项:
# Install main dependencies
uv sync
# Or install with development dependencies
uv sync --extra dev- 运行应用程序:
# 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 apiUV命令参考
# 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操作模式
该工具在三种模式下运行:
- SSE模式 (默认)
- 基于服务器发送事件的通信 - 实时双向交互 - 适用于基于web的MCP客户端 - 未提供参数时的默认模式 - 通过以下方式访问 /sse 端点
- API模式
- RESTful API端点 - 通过以下方式访问 /api/v1 端点前缀 - 从开始 python splunk_mcp.py api
- STDIO模式
- 基于标准输入/输出的通信 - 与Claude Desktop和其他MCP客户端兼容 - 非常适合与AI助手直接集成 - 从开始 python splunk_mcp.py stdio
用法
本地使用
该工具可以在三种模式下运行:
- 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- STDIO模式:
poetry run python splunk_mcp.py stdioDocker使用
该项目同时支持新 docker compose (V2)和遗产 docker-compose (V1)命令。下面的示例使用V2语法,但两者都受支持。
- SSE模式(默认):
docker compose up -d mcp- API模式:
docker compose run --rm mcp python splunk_mcp.py api- STDIO模式:
docker compose run -i --rm mcp python splunk_mcp.py stdio使用Docker进行测试
该项目包括Docker中的专用测试环境:
- 运行所有测试:
./run_tests.sh --docker- 运行特定的测试组件:
# 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开发技巧
- 建筑图片:
# Build both images
docker compose build
# Build specific service
docker compose build mcp
docker compose build test- 查看日志:
# View all logs
docker compose logs
# Follow specific service logs
docker compose logs -f mcp- 调试:
# 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 在上述命令中。
安全说明
- 环境变量:
- 永不承诺
.env文件 - 使用
.env.example作为模板 - 考虑在生产环境中使用Docker secrets
- SSL验证:
VERIFY_SSL=true推荐用于生产- 可以禁用以进行开发/测试
- 通过环境变量进行配置
- 港口暴露:
- 仅暴露必要的端口
- 尽可能使用内部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验证选项:
- 默认(安全)模式:
VERIFY_SSL=true- 完整SSL证书验证
- 已启用主机名验证
- 建议用于生产环境
- 放松模式:
VERIFY_SSL=false- SSL证书验证已禁用
- 主机名验证已禁用
- 适用于测试或自签名证书
测试
该项目包括使用pytest的全面测试覆盖和使用自定义MCP客户端的端到端测试:
运行测试
基本测试执行:
poetry run pytest通过覆盖报告:
poetry run pytest --cov=splunk_mcp
