跳到主要内容

MCP 接入

把只读工具与调查、分诊、解读、生成能力暴露给外部 agent(Claude Desktop、Cursor、自研)。Streamable HTTP,按角色签发的令牌,与界面同一套闸门与审计。1.9.0 起。

MCP server 是一个随 splunkd 启停的常驻进程(bin/copilot_mcp_server.py,scripted input,interval=-1)。默认关闭;系统设置中 MCP 接入的开关即刻生效。

MCP 接入

开关与地址

项默认说明
启用关开启拉起进程,关闭结束进程
绑定127.0.0.1只接受回环、0.0.0.0、::1。MCP 是明文 HTTP,令牌和结果不加密;供其他机器使用时必须前置 TLS 反向代理,并在代理上做访问控制。绑定到非回环地址时进程会在日志中告警
端口18100
协议MCP Streamable HTTPhttp://<bind>:<port>/mcp。探活 GET /health 不鉴权

搜索账号

2.0.4 起,索引类工具(run_spl、list_indexes、list_sourcetypes、get_fields)以一个低权限 Splunk 账号的身份执行,索引权限由 splunkd 强制。

步骤说明
建账号在 Splunk 中新建一个用户,只给 copilot_use 和需要开放给外部 agent 的索引读权限
建令牌为该账号创建 Splunk 认证令牌(Splunk Web 的设置菜单,令牌页)
填写在本页搜索账号区填账号名与令牌并保存。令牌存入 storage/passwords,只写不回显

未配置搜索账号时,这四个工具返回 forbidden,不会退回 system 会话;知识库、资产和大模型类工具不受影响。

令牌与角色

每个请求携带 Authorization: Bearer rsk_…。令牌在本页签发,明文只显示一次,KV 只存 sha256;吊销即刻生效。令牌绑定角色档,签发者不能签发高于自己的档:

档可调用的工具
viewerlist_indexes、list_sourcetypes、get_fields、run_spl、search_kb、lookup_asset、threat_intel、generate_spl、explain_event
analyst以上加 investigate_alert、triage_alerts
admin同 analyst,预留

无令牌、令牌错误或已吊销返回 401;档位不足时工具返回 {"error":"forbidden"}(MCP 没有按工具的 403)。限流复用 [limits] rate_per_min 与 burst,按令牌计。

签发令牌

工具

工具说明
list_indexes()索引与事件数,只列白名单内的
list_sourcetypes(index)某索引的 sourcetype
get_fields(index, sourcetype)近 24 小时的真实字段名与脱敏样例
run_spl(spl)只读 SPL,最多 20 行,行已脱敏。delete、collect、outputlookup、sendemail、script、rest 等直接拒绝
search_kb(query, k)处置手册与知识库检索,含同步进来的 Splunk 对象
lookup_asset(entity, kind)资产与身份上下文
threat_intel(indicator, kind)威胁情报。只有配置了 [threat_intel] 才出网
generate_spl(question, index, sourcetype)自然语言生成只读 SPL,与首页同一引擎
explain_event(event, sourcetype)单条日志解读
investigate_alert(alert, context, sourcetype)告警调查(时间线、MITRE、影响、误报判定)
triage_alerts(alerts[], max_clusters)批量分诊聚类评分

资源:copilot://kb/{id}、copilot://reports/latest。提示模板:investigate。

安全边界

项说明
只读Splunk 侧全部经过只读闸门:首命令必须是只读生成命令,写入、通知、shell、map、宏、dbx*、fit、rest 等在任何管道段和子搜索里都拒绝;另有 [limits] agentic_index_whitelist 与 [masking] mode
许可与角色与界面同源。付费工具未激活时返回 license_required
审计每次调用一条审计(via=mcp),在调用审计中筛选
会话索引类工具以搜索账号执行(见上文),其余工具以 splunk-system-user 执行。Splunk Free 许可没有该用户,MCP 无法获得会话

接入示例

Claude Desktop 与 Cursor(mcpServers):

{
  "mcpServers": {
    "splunk-ai-copilot": {
      "url": "http://127.0.0.1:18100/mcp",
      "headers": { "Authorization": "Bearer <TOKEN>" }
    }
  }
}

Claude Code:

claude mcp add --transport http splunk-ai-copilot http://127.0.0.1:18100/mcp \
  --header "Authorization: Bearer <TOKEN>"

排障

现象处理
开关已打开但显示未响应查看 index=_internal sourcetype=copilot:mcp 或 splunkd.log 中的 copilot_mcp_server。常见原因:端口被占、splunk-system-user 不存在
全部 401令牌已吊销,或缺少 Bearer 前缀
run_spl 等返回 forbidden:no MCP search account is configured在本页配置搜索账号
工具返回 forbidden令牌档位不足,改用 analyst 令牌
license_required产品未激活或许可过期
refused: index … not in the allowed set[limits] agentic_index_whitelist 未包含该索引

本页内容