使用说明
MCP脚本
此仓库包含两个本地MCP服务器:
elisp-eval-server.py:在正在运行的Emacs服务器中通过以下方式评估Emacs Lispemacsclientsplunk-mcp.py:在macOS上借用Microsoft Edge会话Cookie查询Splunk
外露工具
elisp-eval-server.py
主要工具:
emacs-elisp-eval
兼容性别名仍被接受 tools/call:
elisp-eval
它的作用:
- 在当前Emacs服务器中评估Emacs Lisp
- 返回最后一个表达式结果
- 包括任何新
*Messages*评估过程中产生的输出
splunk-mcp.py
工具:
splunk-searchsplunk-indexessplunk-search-metadatasplunk-server-info
他们做什么:
splunk-search:运行SPL查询并返回格式化结果splunk-indexes:列出具有事件计数和大小的索引splunk-search-metadata:显示索引的顶级主机、源和源类型splunk-server-info:返回活动的MCP服务器运行时配置,包括所选的Splunk主机
需求
共同
- python
3.10+ - 支持stdio服务器的MCP客户端
对于 elisp-eval-server.py
- macOS
- 已安装Emacs
- 运行Emacs服务器
emacsclient可用网址:
/Applications/Emacs.app/Contents/MacOS/bin/emacsclient
对于 splunk-mcp.py
- macOS
- 已安装Microsoft Edge
- 在Edge中为目标Splunk主机激活Splunk web会话
securitymacOS提供的CLIopenssl可用PATH- 由环境变量或CLI参数提供的目标Splunk主机
环境变量示例:
export SPLUNK_HOST="myorg.splunkcloud.com"
CLI参数示例:
python3 /Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/splunk-mcp.py \
--host myorg.splunkcloud.com \
--server-name splunk
重要提示:
splunk-mcp.py从您的本地个人资料中读取和解密Edge Cookie- 它被有意绑定到所选Splunk主机的登录边缘会话
- 如果Edge已注销,或者该主机的Cookie不存在,服务器将无法进行身份验证
- 如果您注册了多个使用相同脚本的MCP服务器,请首选
--host通过仅env配置,每个实例都明确地固定到自己的主机上
直接运行
这两个脚本都是stdio MCP服务器。它们不会启动HTTP侦听器。
示例:
python3 /Users/ckoneru/GitRepos/myprojects/mybbscripts/elisp-eval-server.py
环境变量示例:
SPLUNK_HOST="myorg.splunkcloud.com" \
python3 /Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/splunk-mcp.py
参数示例:
python3 /Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/splunk-mcp.py \
--host myorg.splunkcloud.com \
--server-name splunk
配置克劳德代码
Claude Code支持项目范围 .mcp.json 文件和基于CLI的MCP注册。
方案1:项目 .mcp.json
创建 .mcp.json 在repo根目录中。
使用环境变量的示例:
{
"mcpServers": {
"emacs-elisp": {
"type": "stdio",
"command": "python3",
"args": [
"/Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/elisp-eval-server.py"
],
"env": {}
},
"splunk": {
"type": "stdio",
"command": "python3",
"args": [
"/Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/splunk-mcp.py"
],
"env": {
"SPLUNK_HOST": "myorg.splunkcloud.com"
}
}
}
}
使用显式参数的示例(建议在配置多个Splunk服务器时使用,如prod和nonpd):
{
"mcpServers": {
"mcpSplunk-prod": {
"type": "stdio",
"command": "/Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/splunk-mcp.py",
"args": [
"--host",
"est-sh.prod.cloud-splunk-company.com",
"--server-name",
"splunk-prod"
]
},
"mcpSplunk-nonprod": {
"type": "stdio",
"command": "/Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/splunk-mcp.py",
"args": [
"--host",
"est-sh.stage.aws-splunk-company.com",
"--server-name",
"splunk-nonprod"
]
}
}
}
推荐的服务器名称:
emacs-elispsplunk
这些内容简短明了,有助于代理选择合适的服务器。
选项2:Claude CLI
添加服务器 claude mcp add-json.
环境变量示例:
claude mcp add-json emacs-elisp \
'{"type":"stdio","command":"python3","args":["/Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/elisp-eval-server.py"],"env":{}}'
claude mcp add-json splunk \
'{"type":"stdio","command":"python3","args":["/Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/splunk-mcp.py"],"env":{"SPLUNK_HOST":"myorg.splunkcloud.com"}}'
显式参数示例:
claude mcp add-json mcpSplunk-prod \
'{"type":"stdio","command":"/Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/splunk-mcp.py","args":["--host","est-sh.prod.cloud-splunk-company.com","--server-name","splunk-prod"]}'
claude mcp add-json mcpSplunk-nonprod \
'{"type":"stdio","command":"/Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/splunk-mcp.py","args":["--host","est-sh.stage.aws-splunk-company.com","--server-name","splunk-nonprod"]}'
如果你想将配置签入仓库供团队使用,请使用项目范围:
claude mcp add-json emacs-elisp --scope project \
'{"type":"stdio","command":"python3","args":["/Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/elisp-eval-server.py"],"env":{}}'
claude mcp add-json splunk --scope project \
'{"type":"stdio","command":"python3","args":["/Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/splunk-mcp.py"],"env":{"SPLUNK_HOST":"myorg.splunkcloud.com"}}'
验证:
claude mcp get emacs-elisp
claude mcp get splunk
在OpenAI Codex中配置
Codex通过CLI和 ~/.codex/config.toml.
选项1:Codex CLI
添加 elisp-eval-server.py:
codex mcp add emacs-elisp -- \
python3 /Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/elisp-eval-server.py
添加 splunk-mcp.py 使用环境变量:
codex mcp add splunk \
--env SPLUNK_HOST=myorg.splunkcloud.com \
-- python3 /Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/splunk-mcp.py
添加 splunk-mcp.py 带有明确的参数:
codex mcp add mcpSplunk-nonprod -- \
/Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/splunk-mcp.py \
--host est-sh.stage.aws-splunk-company.com \
--server-name splunk-nonprod
验证:
codex mcp list
选项2: ~/.codex/config.toml
环境变量示例:
[mcp_servers.emacs-elisp]
command = "python3"
args = ["/Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/elisp-eval-server.py"]
[mcp_servers.splunk]
command = "python3"
args = ["/Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/splunk-mcp.py"]
env = { SPLUNK_HOST = "myorg.splunkcloud.com" }
显式参数示例:
[mcp_servers.mcpSplunkProd]
command = "/Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/splunk-mcp.py"
args = ["--host", "est-sh.prod.cloud-splunk-company.com", "--server-name", "splunk-prod"]
[mcp_servers.mcpSplunkNonprod]
command = "/Users/ckoneru/GitRepos/team-loki/ocdp-team-loki-mcp-scripts/splunk-mcp.py"
args = ["--host", "est-sh.stage.aws-splunk-company.com", "--server-name", "splunk-nonprod"]
推荐名称:
emacs-elispsplunk
这些名称比原始脚本文件名更清晰,使代理更容易选择工具。
使用说明
Emacs Lisp服务器
- 向代理公开的工具名称:
emacs-elisp-eval - 从临时文件中评估表单以避免shell转义问题
- 状态在调用之间的Emacs会话中持续存在
示例提示:
Use emacs-elisp-eval to evaluate (+ 1 2 3)Use emacs-elisp-eval to read the *Messages* buffer
Splunk服务器
- 向代理公开的工具名称:
splunk-searchsplunk-indexessplunk-search-metadatasplunk-server-info
- 需要时从Edge Cookie刷新凭据
- 长时间运行的搜索支持通过MCP通知取消
- 使用
splunk-server-info确认特定MCP服务器实例实际使用的主机
示例提示:
Use splunk-search to find error events for the last 4 hoursUse splunk-indexes to list indexesUse splunk-search-metadata for index=mainUse splunk-server-info to show the active server host
故障排除
elisp-eval-server.py
如果失败:
- 确保Emacs在启用服务器的情况下运行
- 验证
emacsclient路径存在 - 跑
emacsclient --eval '(+ 1 1)'手动确认连接
splunk-mcp.py
如果失败:
- 确认所选Splunk主机与Edge中的Splunk cookie主机完全匹配
- 如果您为服务器配置了
env,验证SPLUNK_HOST - 如果使用args配置了服务器,请验证
--host - 使用
splunk-server-info确认正在运行的MCP服务器实例实际使用的主机 - 确认您已登录到Edge中的Splunk
- 确认Edge配置文件路径存在:
~/Library/Application Support/Microsoft Edge/Default/Cookies
- 确认macOS钥匙链访问有效:
security find-generic-password -s "Microsoft Edge Safe Storage" -a "Microsoft Edge" -w
避免钥匙链弹出(自动化)
这 splunk-mcp.py 该脚本支持多种凭据存储方法,以避免交互式密钥链提示。
使用辅助脚本快速设置(推荐)
运行交互式设置脚本提取并存储密码一次:
./setup-edge-password.sh
该脚本将提示您一次访问密钥链,然后让您选择:
- 环境变量(添加到
~/.bashrc或~/.zshrc) - 带chmod 600的纯文本文件(建议大多数用户使用)
- GPG加密文件(最安全)
手动设置选项
方法1:环境变量(建议用于自动化)
# Extract password once (will prompt)
PASSWORD=$(security find-generic-password -s "Microsoft Edge Safe Storage" -a "Microsoft Edge" -w)
# Add to your shell profile (~/.bashrc or ~/.zshrc)
export EDGE_SAFE_STORAGE_PASSWORD='your-password-here'
方法2:纯文本文件(具有文件权限的安全)
# Extract and save password
mkdir -p ~/.splunk-mcp
security find-generic-password -s "Microsoft Edge Safe Storage" -a "Microsoft Edge" -w > ~/.splunk-mcp/edge-password
chmod 600 ~/.splunk-mcp/edge-password
方法3:GPG加密文件(最安全)
# Extract and encrypt password
mkdir -p ~/.splunk-mcp
security find-generic-password -s "Microsoft Edge Safe Storage" -a "Microsoft Edge" -w | \
gpg --encrypt --recipient your-email@example.com > ~/.splunk-mcp/edge-password.gpg
方法4:允许钥匙链提示(不建议用于自动化)
export ALLOW_KEYCHAIN_PROMPT=1
凭证查找顺序
脚本按以下顺序尝试方法:
EDGE_SAFE_STORAGE_PASSWORD环境变量~/.splunk-mcp/edge-password文件(必须是chmod 600)~/.splunk-mcp/edge-password.gpg文件(用gpg解密)- macOS钥匙串(仅当
ALLOW_KEYCHAIN_PROMPT=1已设置)
开发人员说明
测试命令
首先运行快速语法检查:
python3 -m py_compile elisp-eval-server.py splunk-mcp.py
按如下方式运行协议套件:
python3 -m unittest test_elisp_eval_protocol -v
SPLUNK_HOST=example.com python3 -m unittest test_splunk_mcp_protocol -v
维护规则
- 保持工具名称的明确性和稳定性,因为MCP客户端按名称选择工具
- 保留stdio传输行为:stdout上每行一条JSON-RPC消息
- 不要将日志或调试输出写入stdout
- 更喜欢在结构化中返回MCP工具错误
content响应而不是使服务器崩溃
elisp-eval-server.py
- 主要工具名称为
emacs-elisp-eval - 遗留别名
elisp-eval仍然接受兼容性 serverInfo.name是emacs-elisp- 脚本假定
emacsclient住在/Applications/Emacs.app/Contents/MacOS/bin/emacsclient
splunk-mcp.py
- 工具名称为:
splunk-searchsplunk-indexessplunk-search-metadata
splunk-mcp.py故意针对macOS,因为它读取Microsoft Edge Cookie和macOS钥匙链数据- stdout写入是同步的,工具调用通过有界执行器运行;如果更改并发性,请保留该行为
- 使JSON模式与实际接受的参数类型保持一致
集成指导
更改行为时,除了单元测试外,还要手动验证这些情况:
tools/list返回预期的工具名称tools/call与真正的MCP客户端配合使用elisp-eval-server.py可以访问正在运行的Emacs服务器splunk-mcp.py可以从Edge刷新凭据并执行真正的Splunk查询
参考文献
此README中的客户端配置示例与当前的官方CLI/docs模式保持一致:
- 克劳德代码MCP配置
- OpenAI Codex MCP配置
