Coming soon An auto mode that scores each query's risk against your session intent, so safe ones can run without a click. And more on the way.
Beekeeper Studio Plugin MCP Server

Your agents propose the SQL. You approve what runs.

Gatekeeper is a human-approved, read-only-by-default bridge between AI agents and your database. An agent proposes a query over MCP. Nothing runs until a human approves it in Beekeeper Studio. The agent never holds your credentials.

Read-only by default Human-approved, pre-execution Every decision recorded
Pending approval 1
List enterprise contacts for the quarterly review 2:00
reporting-agent · req_3a9f21 · 2s ago
SELECT id, email, phone
FROM customers
WHERE plan = 'enterprise'
LIMIT 200;
possible PIIemail, phone
Why Gatekeeper

Wire agents to production like an engineer, not a gambler.

Connecting an agent to a database over MCP already exists. Most connectors hand the agent a raw pipe: direct, ungated SQL it can run against your data whenever it decides to. Gatekeeper is an MCP server too, but it speaks that protocol with the opposite intent: a human gate in front of every statement.

A direct database MCP

A raw pipe to your data

  • The agent runs whatever SQL it wants, the moment it decides to. No pause, no review.
  • Reads and writes and deletes travel the same channel, ungated.
  • Database credentials sit in the agent's context, one prompt injection from exfiltration.
  • No flags on PII, no trail of what ran. You find out after.
Gatekeeper

A human-in-the-loop safety layer

  • Nothing an agent proposes runs until a human approves it, on the exact SQL text.
  • Read-only by default. A single SELECT, enforced by a dialect-aware parser. Writes only when you arm them.
  • Queries run on Beekeeper's connection, so the agent never touches credentials.
  • PII, client data and writes are flagged before you decide, and every decision is recorded.
How it works

Your agents never touch the database. You do.

Submit and read are separate calls, so an agent can keep several proposals in flight and collect each result as its human decision lands. Approval is pre-execution, on the SQL text.

01

Agent proposes

The agent calls submit_query(sql, intent) over MCP. The server enqueues it and returns a ticket immediately. It never blocks.

02

You review

The Beekeeper plugin surfaces the SQL with its intent, the tables it reads, and any PII, client-data or write flags.

03

You approve

On approval the plugin runs the query on the connection Beekeeper already holds. The agent never holds database credentials.

04

Rows return

The result flows back to the agent through get_query_result. Reject with a note instead, and the agent revises.

Oversight

Everything you need to Say Yes to your agent.

Gatekeeper reads each proposal and annotates it: what it changes, what it touches, and what is sensitive. The dangerous parts are impossible to miss, and the risky ones cannot run unless you have armed them.

See everything before you approve

A single SELECT, enforced by a dialect-aware parser. This one runs as-is once you approve.

List active enterprise accounts 2:00
analytics-nb · req_5c1a08 · 2s ago
SELECT id, name, plan
FROM accounts
WHERE status = 'active'
LIMIT 100;

An audit trail you can take with you

Today · 3 queries · 1 session
billing-service · claude-code · s_4a91b2c…7c02 Reconcile a duplicate-charge report 3
14:11 Approved Flag the duplicated charge for refund Value 1 affected
14:09 Declined Widen the scan to every customer PII
14:07 Approved Find charges for the disputed order PII 128 rows

Every decision is recorded: the outcome, timestamps, the SQL and the row count. Result rows are never retained, and approved result rows are cleared 10 minutes after the decision.

Export any session as MarkdownCSVJSON

Under the hood

Desktop notification

A native desktop notification fires the moment an agent proposes a query, so a pending approval never sits unseen.

Sharper queries

Agents read your real tables, columns and keys through get_schema instead of guessing them, so the SQL they propose is accurate. It exposes structure, never row data.

Agent-agnostic

Any MCP client drives it: Claude Code, Codex CLI, OpenCode and the rest. A companion skill teaches them to use it well.

Dialect-aware risk parser

A dialect-aware parser classifies every query as read, write or destructive before you see it, so the matching mode has to be armed for it to run.

Who's on the connection

billing-service Reconcile a duplicate-charge report active · 1 pending
ops-oncall Investigate the checkout latency spike active
analytics-nb Draft the weekly retention query idle 3m ago
migration-bot Backfill the invoices table left 12m ago

Read the results next to your agent

billing-service
on prod-replica · claude-code · s_4a91b2c…7c02 · req_2c07f1 · Aug 11, 14:07:22

Find charges for the disputed order

SELECT charge_id, customer, amount, status, created_at
FROM charges
WHERE order_id = 'ord_5512'
ORDER BY created_at DESC;
Approved128 rows
charge_idcustomeramountstatuscreated_at
ch_8f21Northwind Traders4200captured2026-08-10 14:02
ch_8f22Northwind Traders4200captured2026-08-10 14:02
ch_7a05Contoso Ltd1180refunded2026-08-09 09:14
ch_69b0Fabrikam Inc920captured2026-08-09 08:51
ch_5d3cAdventure Works3050captured2026-08-08 17:20
50 / page
128 rows
Where it fits

For anyone nervous about an agent near a real database.

Giving an agent database access is a leap of faith. Gatekeeper removes the leap: it can propose any query, but nothing touches your data until you approve, and it never holds your credentials.

Solo developer

Let Claude Code read your dev DB

Stop copy-pasting query results into the chat. The agent proposes, you glance and approve, the rows come back, all without wiring credentials into a config file.

Incident response

Investigate prod without handing over access

Let the team's agents dig into a live incident through approved reads. No shared password, no standing access, a full trail of exactly what was run.

Support & ops

Human-approved reads on production

Answer a customer question by approving the specific SELECT an agent drafted, with PII flagged on the card before you click, and nothing else able to run.

Data team

Draft and run analytics, gated

Agents write accurate SQL against your real schema through get_schema. You approve the SELECT. Exploratory work stays fast and stays reviewed.

Anyone with a production database

Turn "an agent with database access" from a liability into a reviewed workflow

The worry with an LLM on a production database is that it runs the wrong thing against real data. Gatekeeper removes the premise: the agent cannot run anything. It proposes, a human approves, and read-only is the floor. The gate is the whole point.

Install Gatekeeper in a minute.

# 1. Install the plugin in Beekeeper Studio
$ Download the latest release

# 2. Add the MCP server to any agent (Claude, Codex, Cursor, OpenCode, ...)
$ claude mcp add gatekeeper --scope user -- npx -y @gldywn/gatekeeper-mcp-server

# 3. Install the agent skill
$ npx skills add Gldywn/gatekeeper

Gatekeeper is free and open source. Issues and pull requests are welcome.