关于 gatekeeper
gatekeeper 是连接 MCP 客户端与 Runestone Gatekeeper 的 MCP 服务,将 Shell、文件写入和 HTTP 等调用置于策略控制之下。调用可被允许、拒绝或要求人工审批,并记录审计信息。
主要功能
- 01策略检查工具调用
- 02支持人工审批
- 03记录审计信息
- 04提供 Shell、文件和 HTTP 工具
- 05异常响应按失败处理
适用场景
- 01限制 Agent 执行 Shell 命令
- 02审批文件写入操作
- 03控制并审计 HTTP 请求
- 04通过 Gatekeeper 调用其他工具
MCP 相关
该 MCP 服务将客户端工具调用转发至正在运行的 Gatekeeper,并把策略检查、审批结果和审计纳入调用流程。它通过 stdio 连接,且自身不独立执行操作。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @runestone-labs/gatekeeper-mcpGATEKEEPER_ROLEPolicy role this server presents to Gatekeeper for every call. Required.GATEKEEPER_URLBase URL of the Gatekeeper server. Default http://127.0.0.1:3847.GATEKEEPER_AGENT_NAMEAgent name recorded in Gatekeeper audit logs. Default mcp-client.GATEKEEPER_RUN_IDOptional run-correlation id so calls count toward one per-run budget.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
5收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cwd | string | 否 | 工作目录。 |
| command | string | 是 | 要运行的 shell 命令。 |
| timeoutMs | integer | 否 | 每次调用的超时时间,单位为 ms。 |
详细介绍
Runestone Gatekeeper — MCP 服务
一个 MCP 服务,可让任何 MCP 客户端(Claude Desktop、Claude Code、Cursor,……)运行真实的工具调用——shell、文件写入、HTTP, 或任何 Gatekeeper 工具——但只能通过 Runestone Gatekeeper。 每次调用都会经过策略检查,可能需要人工批准,并会记录审计日志。 模型永远不会直接接触你的系统;Gatekeeper 会在前面进行拦截。
MCP client (LLM) ──tools/call──▶ gatekeeper-mcp ──policy-gated──▶ Gatekeeper ──▶ shell / files / HTTP
要求
需要一个正在运行的 Gatekeeper 服务(参见仓库根目录)。此软件包只是 MCP 入口;本身不会执行任何操作。
安装 / 配置
它通过 stdio 运行。将其添加到 MCP 客户端配置中,例如 Claude Desktop
(claude_desktop_config.json):
{
"mcpServers": {
"gatekeeper": {
"command": "npx",
"args": ["-y", "@runestone-labs/gatekeeper-mcp"],
"env": {
"GATEKEEPER_URL": "http://127.0.0.1:3847",
"GATEKEEPER_ROLE": "openclaw"
}
}
}
}
| 环境变量 | 必填 | 默认值 | 含义 |
|---|---|---|---|
GATEKEEPER_ROLE | 是 | — | 此服务在每次调用时向 Gatekeeper 提供的策略角色。 |
GATEKEEPER_URL | 否 | http://127.0.0.1:3847 | Gatekeeper 基础 URL。 |
GATEKEEPER_AGENT_NAME | 否 | mcp-client | 审计日志中记录的名称。 |
为无人值守 Agent 共享审批
本地 Gatekeeper 和此 MCP 集成都免费。想让队友在你的 Agent 无人值守运行时处理审批吗?我们正在测试 Gatekeeper Team,每月 49 美元,最多支持五位成员和 五个实例。计划中的 Cloud 服务将协调被暂缓的操作、队友的批准或拒绝,以及结果记录。Cloud 仍在规划中,尚未公开提供,且本次测试期间不会收取任何费用。仅涵盖实际通过 Gatekeeper 路由的操作; 安装 MCP 服务并不意味着客户端的其他工具也受到保护。
查看拟议的工作流并分享团队的需求。 表单还允许你选择报告首次实际路由的操作,或在之后某天再次使用的情况。 这些都是手动自我报告,并非经过验证的外部激活。本次测试不会添加 MCP 服务的自动使用情况报告功能;请勿发送命令或原始审计日志。
工具
| 工具 | Gatekeeper 工具 | 用途 |
|---|---|---|
shell_exec | shell.exec | 运行 shell 命令。 |
files_write | files.write | 写入文件。 |
http_request | http.request | HTTP GET/POST(受出口策略管控)。 |
gatekeeper_call | (任意) | 通用扩展入口——按名称调用任意 Gatekeeper 工具(例如 memory.query)。 |
gatekeeper_health | — | 检查 Gatekeeper 服务是否可访问。 |
每次受管控的调用都会返回以下结果之一:
- allow → 工具输出。
- deny → 说明原因的错误结果(调用未运行)。
- approve → 提示必须在 Gatekeeper 中由人工批准的错误结果;调用未运行。
安全模型
此服务是策略边界,因此有意采用严格的安全措施:
- 身份由服务端固定。 角色来自
GATEKEEPER_ROLE;origin 固定为model_inferred,taint 固定为mcp_client。MCP 客户端无法通过工具 参数设置或覆盖 actor / role / origin / taint / capability tokens——不存在从工具参数到这些值的代码路径。 - 默认拒绝。 deny、待审批状态,或任何格式错误或意外的 Gatekeeper 响应都会作为错误呈现——绝不会作为成功结果返回。
- 禁止端点遍历。 通用工具名称会经过严格的点分标识符校验;
../、斜杠等内容会在发出任何请求前被拒绝。 - 不会泄露信息。 Gatekeeper URL 以及任何类似凭据的内容都会从错误消息中清除,再返回给客户端。
这些不变量由对抗性测试套件(src/*.test.ts)覆盖。
分发
以 @runestone-labs/gatekeeper-mcp 名称发布到 npm,并以 io.github.runestone-labs/gatekeeper 名称列入 MCP
Registry(参见 server.json)。MCP Registry 目前处于预览阶段。
许可证
Apache-2.0
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。