使用说明
⚠️ 此项目已存档——使用官方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资源。
操作模式
该工具在三种模式下运行:
-
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模式下运行时,以下端点可用:
-
/sse:以文本/事件流格式返回SSE连接信息
- 提供有关SSE连接的元数据
- 包括消息端点的URL
- 提供协议和能力信息
-
/sse/消息:主SSE流端点
- 流式传输心跳等系统事件
- 保持持久连接
- 发送格式正确的SSE事件
-
/sse/健康:SSE模式的健康检查端点
- 以SSE格式返回状态和版本信息
错误处理
MCP实现包括一致的错误处理:
- 无效的搜索命令或格式错误的请求
- 权限不足
- 资源未找到
- 输入验证无效
- 意外的服务器错误
- Splunk服务器的连接问题
所有错误响应都包含解释错误的详细消息。
安装
使用紫外线(推荐)
UV是一个用Rust编写的快速Python包安装程序和解析器。它比pip快得多,并提供了更好的依赖性解决方案。
先决条件
- Python 3.10或更高版本
- UV已安装(参见 紫外线安装指南)
UV快速入门
-
克隆存储库:
git clone <repository-url> 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 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
操作模式
该工具在三种模式下运行:
-
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 stdio
Docker使用
该项目同时支持新 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