返回市场
MCP服务器Splunk

MCP服务器Splunk

作者:jkosik6 星标更新:2025-06-28

项目介绍

MCP Server for Splunk

Splunk的MCP服务器的Go实现。 支持STDIO和SSE(服务器发送事件HTTP API)。使用github.com/mark3labs/mcp-go SDK。

实现的MCP工具

  • list_splunk_saved_searches
    • 参数:
      • count (数字,可选):返回的结果数量(最大100,默认100)
      • offset (数字,可选):分页偏移量(默认0)
  • list_splunk_alerts
    • 参数:
      • count (数字,可选):返回的结果数量(最大100,默认10)
      • offset (数字,可选):分页偏移量(默认0)
      • title (字符串,可选):用于过滤警报标题的不区分大小写的子串
  • list_splunk_fired_alerts
    • 参数:
      • count (数字,可选):返回的结果数量(最大100,默认10)
      • offset (数字,可选):分页偏移量(默认0)
      • ss_name (字符串,可选):用于过滤警报的搜索名称模式(默认"*")
      • earliest (字符串,可选):回溯的时间范围(默认"-24h")
  • list_splunk_indexes
    • 参数:
      • count (数字,可选):返回的结果数量(最大100,默认10)
      • offset (数字,可选):分页偏移量(默认0)
  • list_splunk_macros
    • 参数:
      • count (数字,可选):返回的结果数量(最大100,默认10)
      • offset (数字,可选):分页偏移量(默认0)

MCP提示和资源

  • internal/splunk/prompt.go实现了MCP提示,用于查找特定关键词(例如GitHub或OKTA)的Splunk警报,并指示Cursor利用多个MCP工具首先审查所有Splunk警报、索引和宏以提供最佳答案。
  • cmd/mcp/server/main.go实现了以本地CSV文件形式的MCP资源,其中包含与Splunk相关的上下文信息,为聊天提供更多背景。

使用方法

STDIO模式(默认)

export SPLUNK_URL=https://your-splunk-instance:8089
export SPLUNK_TOKEN=your-splunk-token

# 列出可用工具
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | go run cmd/mcp-server-splunk/main.go | jq

# 调用list_splunk_saved_searches工具
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_splunk_saved_searches","arguments":{}}}' | go run cmd/mcp-server-splunk/main.go | jq

SSE模式(服务器发送事件HTTP API)

export SPLUNK_URL=https://your-splunk-instance:8089
export SPLUNK_TOKEN=your-splunk-token

# 启动服务器
go run cmd/mcp-server-splunk/main.go -transport sse -port 3001

# 调用服务器并从输出中获取会话ID。不要终止会话。
curl http://localhost:3001/sse

# 保持会话运行并在不同的终端窗口中进行最终的MCP调用
curl -X POST "http://localhost:3001/message?sessionId=YOUR_SESSION_ID" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | jq

通过Smithery安装

smithery徽章

使用Dockerfilesmithery.yaml来支持在Smithery托管此MCP服务器。

本地Docker构建和运行

docker build -t mcp-server-splunk .

echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | \
docker run --rm -i \
  -e SPLUNK_URL=https://your-splunk-instance:8089 \
  -e SPLUNK_TOKEN=your-splunk-token \
  mcp-server-splunk | jq

Cursor集成

通过配置Cursor中的MCP设置,可以直接将远程数据纳入LLM上下文中。

演示

集成STDIO或SSE MCP服务器(见下文),并使用Cursor聊天。 Cursor将自动尝试使用MCP工具、提示或资源。

示例提示:

  • 有多少个Splunk的MCP工具可用?
  • 我们有多少个Splunk索引?
  • 能否列出前5个Splunk宏及其底层查询?
  • 过去一天内有多少个名称中包含"Alert_CRITICAL"的警报被触发?
  • 读取MCP资源"数据字典"并找到Splunk索引XYZ的联系人。

STDIO模式

构建服务器:

go build -o cmd/mcp-server-splunk/mcp-server-splunk cmd/mcp-server-splunk/main.go

更新~/.cursor/mcp.json

{
  "mcpServers": {
    "splunk_stdio": {
      "name": "Splunk MCP服务器(STDIO)",
      "description": "用于Splunk集成的MCP服务器",
      "type": "stdio",
      "command": "/Users/juraj/data/github.com/jkosik/mcp-server-splunk/cmd/mcp-server-splunk/mcp-server-splunk",
      "env": {
        "SPLUNK_URL": "https://your-splunk-instance:8089",
        "SPLUNK_TOKEN": "your-splunk-token"
      }
    }
  }
}

SSE模式

启动服务器:

export SPLUNK_URL=https://your-splunk-instance:8089
export SPLUNK_TOKEN=your-splunk-token

# 启动服务器
go run cmd/mcp-server-splunk/main.go -transport sse -port 3001

更新~/.cursor/mcp.json

{
  "mcpServers": {
    "splunk_sse": {
      "name": "Splunk MCP服务器(SSE)",
      "description": "用于Splunk集成的MCP服务器(SSE模式)",
      "type": "sse",
      "url": "http://localhost:3001/sse"
    }
  }
}

认证来源:MCP Review: https://mcpreview.com/mcp-servers/jkosik/mcp-server-splunk