
Gatekeeper
io.github.Runestone-LabsPublished by GitHub account Runestone-Labsv0.1.2Updated Oct 24, 2026
Run MCP tool calls through Runestone Gatekeeper — policy enforcement, human approval, audit.
Overview
A local MCP front door that routes an assistant's shell, file-write and HTTP calls through Runestone Gatekeeper for policy checks, human approval and audit.
- What you can do
- Run shell commands through Gatekeeper's policy gate (shell_exec). Write files through the gate (files_write). Make egress-policed HTTP GET/POST requests (http_request). Call any other Gatekeeper tool by name through a generic escape hatch (gatekeeper_call). Check that the Gatekeeper server is reachable (gatekeeper_health). Each gated call returns allow with output, or an error for deny or pending approval.
- When to use it
- Use it when you want an assistant's shell, file and network actions to pass through a central policy engine with audit logging and possible human approval, rather than letting the model touch systems directly. It is only useful alongside a running Gatekeeper server.
- Requirements
- A running Gatekeeper server reachable at GATEKEEPER_URL (default The npm package @runestone-labs/gatekeeper-mcp run over stdio, typically via npx, so Node.js is needed. GATEKEEPER_ROLE is required; GATEKEEPER_AGENT_NAME and GATEKEEPER_RUN_ID are optional. Desktop MCP client only.
Installation
In SourceWeft
- Open Gatekeeper in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
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.
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):
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
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 tomodel_inferredand taint tomcp_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
Source: integrations/mcp-server/README.md at commit 130d0b0
Tools
0Version history
1- v0.1.2LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts