ShadowRun
Provides a local review/approval layer for PostgreSQL MCP interactions, trapping destructive tool calls such as writes, deletes, and SQL mutations and holding them for commit or discard via a local dashboard.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
ShadowRun
A local-first stdio proxy for MCP servers. It sits between an AI agent (Claude Code, Cursor, etc.) and a real MCP server, traps destructive tool calls (writes, deletes, SQL mutations, ...) before they execute, and holds them in memory until you commit or discard them from a local dashboard.
Unlike a naive "fake success" interceptor, ShadowRun does not reply to
the agent until a trapped call is resolved. Faking a response (e.g. for an
INSERT ... RETURNING id) lets the agent act on data that doesn't exist yet
and diverges its belief state from reality — so trapped calls simply wait
(with a timeout) instead.
Scope (v0.1)
This is intentionally narrow: a single-developer CLI for local MCP servers (Postgres, filesystem, etc.) used with Claude Code / Cursor. It is not a team policy-enforcement gateway, has no auth, and no persistence across restarts — see Limitations below before relying on it for anything beyond your own machine.
Related MCP server: mcp-pin
Install & run
npm install
npm run buildPoint your agent config at the proxy instead of the real server:
{
"mcpServers": {
"postgres": {
"command": "node",
"args": [
"/path/to/shadowrun-mcp/dist/index.js",
"npx", "-y", "@modelcontextprotocol/server-postgres",
"postgresql://localhost:5432/devdb"
]
}
}
}Open http://127.0.0.1:4040 to see pending mutations, and Commit or
Discard each one. Read-only calls (get*, list*, search*, ...) pass
through immediately and never appear in the dashboard.
How classification works
See src/interceptor.ts — DEFAULT_CONFIG. A tool call is trapped if its
name matches a mutating verb pattern (write, delete, create, ...) and
doesn't match a safe-read pattern first, or if any string argument contains
a SQL mutation keyword (insert into, drop table, ...). This is a
heuristic, not a guarantee — see Limitations.
Limitations
Heuristic classifier. Regex on tool names and argument text will miss cleverly-named mutating tools and may over-trap oddly-named read tools. Treat this as a speed bump, not a security boundary.
No auth on the dashboard. It binds to
127.0.0.1only, but any local process (or a malicious page doing DNS rebinding, in theory) that can reach that port can commit/discard. Don't run this on a shared or untrusted machine.In-memory only. Restarting the proxy drops all pending mutations — the agent's original call will simply time out.
Single developer, local use. There's no shared audit log or team-wide policy enforcement. If you need that, look at a hosted MCP gateway instead.
License
AGPL-3.0
Test note: small commit pushed via Composio (2026-08-18) to verify author config.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
One MCP server for all your MCP servers: code mode, per-tool permissions, approvals and audit.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Ovanek MCP: Model Context Protocol server for Ovanek platform tools; writes are dry-run by default.
Zero-log MCP server with 49 tools for AI guardrails, secret scanning, MCP linting & EU compliance.
491
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA least-privilege enforcement proxy for MCP servers. It sits between MCP clients and upstream servers, enforcing tool policies, hiding denied tools, requiring human approval for risky actions, and providing a structured audit trail.MIT
- AlicenseAqualityBmaintenanceA local stdio proxy that pins every MCP tool definition when you approve a server and blocks the session with a diff if a description, schema or annotation changes later. A deterministic hash compare (RFC 8785 + SHA-256), with no model in the loop.4117 npm4MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP server builders to wrap destructive tools so they preview a plan and do nothing until a human approves via client elicitation or a single-use, argument-bound fallback token, with secrets-free audit logging.683 npm1MIT
- AlicenseNot gradedqualityBmaintenanceA firewall proxy for any stdio MCP server: every tool call is checked against a restrict-only policy before it runs, with encoded-argument inspection, taint tracking so private data can't leave, tool pinning, and a write-ahead audit log.Apache 2.0