Splunk的MCP服务器的Go实现。 支持STDIO和SSE(服务器发送事件HTTP API)。使用github.com/mark3labs/mcp-go SDK。
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)internal/splunk/prompt.go实现了MCP提示,用于查找特定关键词(例如GitHub或OKTA)的Splunk警报,并指示Cursor利用多个MCP工具首先审查所有Splunk警报、索引和宏以提供最佳答案。cmd/mcp/server/main.go实现了以本地CSV文件形式的MCP资源,其中包含与Splunk相关的上下文信息,为聊天提供更多背景。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
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
使用Dockerfile和smithery.yaml来支持在Smithery托管此MCP服务器。
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中的MCP设置,可以直接将远程数据纳入LLM上下文中。

集成STDIO或SSE MCP服务器(见下文),并使用Cursor聊天。 Cursor将自动尝试使用MCP工具、提示或资源。
有多少个Splunk的MCP工具可用?我们有多少个Splunk索引?能否列出前5个Splunk宏及其底层查询?过去一天内有多少个名称中包含"Alert_CRITICAL"的警报被触发?读取MCP资源"数据字典"并找到Splunk索引XYZ的联系人。构建服务器:
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"
}
}
}
}
启动服务器:
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