mcpField
G
gatekeeper

gatekeeper

本地服务
github.com/Runestone-Labs安全03 周前更新

关于 gatekeeper

gatekeeper 是连接 MCP 客户端与 Runestone Gatekeeper 的 MCP 服务,将 Shell、文件写入和 HTTP 等调用置于策略控制之下。调用可被允许、拒绝或要求人工审批,并记录审计信息。

主要功能

  1. 01策略检查工具调用
  2. 02支持人工审批
  3. 03记录审计信息
  4. 04提供 Shell、文件和 HTTP 工具
  5. 05异常响应按失败处理

适用场景

  1. 01限制 Agent 执行 Shell 命令
  2. 02审批文件写入操作
  3. 03控制并审计 HTTP 请求
  4. 04通过 Gatekeeper 调用其他工具

MCP 相关

该 MCP 服务将客户端工具调用转发至正在运行的 Gatekeeper,并把策略检查、审批结果和审计纳入调用流程。它通过 stdio 连接,且自身不独立执行操作。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"runestone-labs-gatekeeper": {
"command": "npx",
"args": [
"-y",
"@runestone-labs/gatekeeper-mcp"
],
"env": {
"GATEKEEPER_ROLE": "<GATEKEEPER_ROLE>",
"GATEKEEPER_URL": "<GATEKEEPER_URL>",
"GATEKEEPER_AGENT_NAME": "<GATEKEEPER_AGENT_NAME>",
"GATEKEEPER_RUN_ID": "<GATEKEEPER_RUN_ID>"
}
}
}
}
启动命令npx -y @runestone-labs/gatekeeper-mcp
需要配置的环境变量
GATEKEEPER_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@runestone-labs/gatekeeper-mcp0.1.2

工具

5

收录的工具列表 · 更新于 2 周前

参数类型必填说明
cwdstring否工作目录。
commandstring是要运行的 shell 命令。
timeoutMsinteger否每次调用的超时时间,单位为 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:3847Gatekeeper 基础 URL。
GATEKEEPER_AGENT_NAME否mcp-client审计日志中记录的名称。

为无人值守 Agent 共享审批

本地 Gatekeeper 和此 MCP 集成都免费。想让队友在你的 Agent 无人值守运行时处理审批吗?我们正在测试 Gatekeeper Team,每月 49 美元,最多支持五位成员和 五个实例。计划中的 Cloud 服务将协调被暂缓的操作、队友的批准或拒绝,以及结果记录。Cloud 仍在规划中,尚未公开提供,且本次测试期间不会收取任何费用。仅涵盖实际通过 Gatekeeper 路由的操作; 安装 MCP 服务并不意味着客户端的其他工具也受到保护。

查看拟议的工作流并分享团队的需求。 表单还允许你选择报告首次实际路由的操作,或在之后某天再次使用的情况。 这些都是手动自我报告,并非经过验证的外部激活。本次测试不会添加 MCP 服务的自动使用情况报告功能;请勿发送命令或原始审计日志。

工具

工具Gatekeeper 工具用途
shell_execshell.exec运行 shell 命令。
files_writefiles.write写入文件。
http_requesthttp.requestHTTP 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。