MCP Human Approval Gateway

MCP Human Approval Gateway

A public-safe research prototype for controlling AI-agent tool actions with deterministic policy, risk-based human approval, time-bound authorization and a tamper-evident audit chain.

Category
Visit Server

README

MCP Human Approval Gateway

A public-safe research prototype for controlling AI-agent tool actions with deterministic policy, risk-based human approval, time-bound authorization and a tamper-evident audit chain.

The project demonstrates a strict separation of responsibility:

  • AI explains and recommends. Its analysis is advisory and cannot change a policy outcome.
  • Deterministic policy decides. Registered tools, actions, scopes, environments and data classifications produce a reproducible decision.
  • Humans authorize high-impact actions. Role-qualified reviewers approve or deny requests with a recorded rationale.
  • The execution guard enforces the result. Approvals expire, can be consumed once and cannot be replayed.

All included names, resources, identities and actions are synthetic. The prototype contains no employer architecture, production credentials, customer data or confidential control implementations.

What the lab demonstrates

  1. Low-risk public research can be auto-approved.
  2. Private source access enters a human-review queue.
  3. Restricted credential metadata requires elevated review while secret values remain unavailable to the AI analyst.
  4. Production privilege changes require a security lead.
  5. Prompt-injected context is treated as untrusted data and denied.
  6. Runtime scope expansion is denied and must be submitted as a new request.
  7. Unregistered tools fail closed.
  8. Expired or already-consumed approvals cannot execute.
  9. Audit-event modification is detected by hash-chain verification.

Run locally

Prerequisite: Node.js 24 or newer. The prototype uses the built-in node:sqlite API.

npm install
npm run build
npm start

Open http://localhost:4174.

For frontend development:

npm run dev:server
npm run dev:client

The Vite client runs on http://localhost:5174 and proxies API calls to port 4174.

Verify

npm run check

The automated suite covers policy outcomes, reviewer authorization, atomic decision commits, approval expiry, single-use execution, audit tamper detection, HTTP validation and browser security headers.

Optional AI analyst

The lab works fully offline with a deterministic analyst. An OpenAI-compatible chat-completions endpoint can be configured through environment variables:

cp .env.example .env

The external analyst receives sanitized request metadata, never raw credential values. Provider failure falls back to the offline analyst. In every mode, the model output remains advisory.

Design documents

Standards and research basis

The control design is informed by:

These references inform the design; they do not constitute certification or formal compliance.

GitHub Pages browser demonstration

The GitHub Pages edition is a browser-only synthetic simulation. It allows visitors to explore deterministic policy decisions, human approval, time-limited authorization, guarded execution, replay blocking and audit-chain verification without connecting to real systems.

Each visitor has independent demonstration state stored only in their browser. Use Reset Lab to remove that state.

The browser demonstration does not provide enterprise identity proofing, shared approval queues, server-side policy enforcement, durable audit storage, multi-user coordination or cross-tab transaction locking. The Node.js and SQLite implementation remains the reference full-stack research prototype.

No production systems, company information, customer data, credentials or API keys are used by the demonstration.

Important scope boundary

This is an educational security prototype, not a production authorization service. It simulates tool execution and intentionally omits enterprise identity proofing, durable key management, multi-node transaction coordination and append-only external audit storage. See SECURITY.md before adapting any part of it.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured