mcpField
G
gatekeeper

gatekeeper

Local
github.com/Runestone-LabsSecurity0Updated 3w ago

About gatekeeper

gatekeeper is an MCP server that connects MCP clients to Runestone Gatekeeper, placing shell, file-write, and HTTP calls behind policy controls. Calls can be allowed, denied, or held for human approval, with audit records.

Key features

  1. 01Policy-check tool calls
  2. 02Support human approval
  3. 03Record audit information
  4. 04Offer shell, file, and HTTP tools
  5. 05Treat unexpected responses as failures

Use cases

  1. 01Restrict an agent's shell commands
  2. 02Require approval for file writes
  3. 03Control and audit HTTP requests
  4. 04Call other tools through Gatekeeper

MCP support

The MCP server forwards client tool calls to a running Gatekeeper and places policy checks, approval outcomes, and auditing in the call path. It connects over stdio and does not execute actions independently.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"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>"
}
}
}
}
Run commandnpx -y @runestone-labs/gatekeeper-mcp
Environment variables to set
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.

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@runestone-labs/gatekeeper-mcp0.1.2

Tools

5

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
cwdstringNoWorking directory.
commandstringYesThe shell command to run.
timeoutMsintegerNoPer-call timeout in ms.

Details

From the project README

Runestone Gatekeeper — MCP Server

An MCP server that lets any MCP client (Claude Desktop, Claude Code, Cursor, …) run real tool calls — shell, file writes, HTTP, or any Gatekeeper tool — only through Runestone Gatekeeper. Every call is policy-checked, may require human approval, and is audited. The model never touches your systems directly; Gatekeeper sits in front.

MCP client (LLM)  ──tools/call──▶  gatekeeper-mcp  ──policy-gated──▶  Gatekeeper  ──▶  shell / files / HTTP

Requirements

A running Gatekeeper server (see the repo root). This package is just the MCP front door; it does nothing on its own.

Install / configure

It runs over stdio. Add it to your MCP client config, e.g. 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"
      }
    }
  }
}
EnvRequiredDefaultMeaning
GATEKEEPER_ROLEyes—The policy role this server presents to Gatekeeper for every call.
GATEKEEPER_URLnohttp://127.0.0.1:3847Gatekeeper base URL.
GATEKEEPER_AGENT_NAMEnomcp-clientName recorded in audit logs.

Shared approvals for unattended agents

Local Gatekeeper and this MCP integration are free. Need a teammate to handle approvals while your agents run unattended? We're testing Gatekeeper Team at $49/month, for up to five members and five instances. The proposed Cloud service would coordinate a held action, a teammate's approval or denial, and a record of the outcome. Cloud is planned, not publicly available, and no payment is collected during this test. Only actions actually routed through Gatekeeper are covered; installing the MCP server does not cover a client's other tools.

See the proposed workflow and share your team's needs. The form also lets you optionally report a first real routed action or return use on a later day. These are manual self-reports, not verified external activation. Don't send commands or raw audit logs; this test adds no automatic usage reporting to the MCP server.

Tools

ToolGatekeeper toolUse
shell_execshell.execRun a shell command.
files_writefiles.writeWrite a file.
http_requesthttp.requestHTTP GET/POST (egress-policed).
gatekeeper_call(any)Generic escape hatch — call any Gatekeeper tool (e.g. memory.query) by name.
gatekeeper_health—Check the Gatekeeper server is reachable.

Every gated call returns one of:

  • allow → the tool output.
  • deny → an error result explaining why (the call did not run).
  • approve → an error result saying a human must approve it in Gatekeeper; the call did not run.

Security model

This server is a policy boundary, so it is deliberately strict:

  • Identity is pinned server-side. Role comes from GATEKEEPER_ROLE; origin is fixed to model_inferred and taint to mcp_client. The MCP client cannot set or override actor / role / origin / taint / capability tokens via tool arguments — there is no code path from a tool argument to any of those.
  • Fail closed. A deny, a pending approval, or any malformed/unexpected Gatekeeper response is surfaced as an error — never as a successful result.
  • No endpoint traversal. Generic tool names are validated as strict dotted identifiers; ../, slashes, and the like are rejected before any request.
  • No leakage. The Gatekeeper URL and anything resembling a credential are scrubbed from error messages before they reach the client.

These invariants are covered by an adversarial test suite (src/*.test.ts).

Distribution

Published to npm as @runestone-labs/gatekeeper-mcp and listed on the MCP Registry as io.github.runestone-labs/gatekeeper (see server.json). The MCP Registry is in preview.

License

Apache-2.0

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.