Acutis Gate
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Acutis Gateshow me the audit trail for my last 10 tool calls"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Acutis Gate
Identity-based access control for AI. Every tool call an AI makes runs as the person who asked, under guardrails you wrote, with the full call recorded in a tamper-evident trail that streams to your SIEM. Works with cloud AI and local models, with modern apps and the systems you already run.
Gate is one small service that sits between any MCP client (Open WebUI on a local model, Claude Desktop, Cursor, Microsoft Copilot, your own agents) and the MCP servers that reach your systems. It is the only tool server your AI clients need to know about.
Open WebUI / Claude Desktop / Cursor / Copilot
│ MCP (streamable HTTP) + personal token
▼
┌───────────────┐ identity · guardrails · data filter · audit chain
│ Acutis Gate │──────────────────────────────────────► your SIEM
└───────────────┘
│ as the person (their key, token or session)
▼
your MCP servers: files, firewall, HR, CRM, databases, Active Directory …Three promises
Attributed. Every call is tied to a real person. When a system can only take a shared account, the audit row says so. No anonymous "the AI did it".
Fenced. Rules you wrote decide what each person's AI may read, change or run, and which actions wait for an approver. Explicit deny always wins. Locked rules need an authenticator code to change.
Recorded. Everything, hash-chained: full arguments and results, what each AI was shown, failed sign-ins, every policy and identity change. Streamed live to syslog (JSON or CEF), a signed webhook, or Splunk HEC. One click proves nothing was edited.
What Gate never claims: it does not detect intent, it does not decide on its own that something "needs escalating" (approvals are rules you write, like change control), and it cannot see AI calls that bypass it. The companion control is a firewall rule that makes Gate the only tool server your AI clients can reach.
Related MCP server: production-mcp-server
Quick start (5 minutes)
git clone https://github.com/gspam100/acutis-gate.git && cd acutis-gate
cp .env.example .env # fill the three secrets: python -c "import secrets; print(secrets.token_hex(32))"
python3.12 -m venv .venv && . .venv/bin/activate && pip install -r requirements.txt
python -m gate.cli init-admin --org "Your Org" --email you@yourcompany.com
uvicorn gate.main:app --port 8010Open http://localhost:8010/gate, sign in, enroll your authenticator, go to Connect an AI and mint a token. Then point any MCP client at http://localhost:8010/api/v1/gate/mcp with Authorization: Bearer <token>. The console shows the exact config for Claude Desktop, Cursor and Open WebUI.
Try it with the demo upstream in examples/demo-upstream/ (a pretend firewall that proves per-user delegation).
One box with Docker, Postgres, a local model and Open WebUI: sudo LOCAL_AI=1 bash deploy/install.sh.
Learning mode
A fresh Gate allows everything and records everything. Let people work for a few days, then open Guardrails → Build rules from the trail. Gate drafts one allow rule per group and app for the reads it saw, and one needs approval rule for the changes it saw. Review, edit, save. From that version on, anything the trail never saw is denied, and an explicit deny always wins.
What is in the box
MCP endpoint (
/api/v1/gate/mcp): stateless streamable HTTP.tools/listis filtered per person;tools/callis evaluated, executed under that person's identity, and recorded.Delegated execution: an upstream call carries the person's own key (
user_key), their bearer token (passthrough), or a labelled shared service secret (service, recorded asmappedso an auditor can see which calls were not per-user).Guardrails: deny-by-default rule engine with
allow,deny,approveandbreak_glass;whoby role, group or person;doread/write/execute;onresource globs likefiles://finance/**;except;lockedrules that need an authenticator code to change; dry-run; versioned with history; test-as-person.Approvals: a staged call keeps its exact arguments; an approver (never the requester) reviews them with an authenticator code; it runs as the original person.
Data filter: payment cards (Luhn-checked), SSNs, API keys and cloud secrets redacted from results before the model sees them; emails and phones optional; or block the whole result. Counts in the audit row, never the values.
Audit chain: SHA-256 chained per organization; stores full arguments and results (capped, hashed in full before truncation); every console and sign-in event in the same chain;
verifynames the first edited row.Streaming: syslog UDP/TCP/TLS (RFC 5424, JSON or CEF), HTTPS webhook with HMAC signature, Splunk HTTP Event Collector; NDJSON export with a cursor; Server-Sent Events live tail.
Identity: email + password + authenticator (mandatory), Google Workspace sign-in per organization, roles admin/technician/viewer, groups. Kerberos from a domain PC, ADFS/SAML, Entra ID, Okta and RADIUS are on the roadmap.
Console: one page per job. Connect an AI, My apps, Approvals, Audit trail; for admins Identity, Guardrails, Groups, Streaming.
Configuration
Variable | Required | Meaning |
| yes | session signing; reserved; encryption of stored credentials at rest |
| yes | where people reach Gate (emails, CORS) |
| prod | Postgres. Or |
| no | enables "Sign in with Google" (per-organization switch in the console) |
| no | password and authenticator recovery emails; unset prints to stdout |
| no | how many reverse proxies set X-Forwarded-For |
Upgrading an existing install: python deploy/migrate.py adds any new columns (tables are created automatically).
Security
Read SECURITY.md for the threat model and how to report a vulnerability. Short version: passwords are PBKDF2 with 260k rounds; TOTP enrollment is mandatory for local accounts; sensitive actions require a fresh single-use code; stored credentials are AES-GCM under VAULT_MASTER_KEY; sign-in paths are rate limited; tool output is data, never instructions; writes and executes can be staged behind a human.
Development
pip install -r requirements-dev.txt
python -m pytestTests cover the resource grammar, the policy engine, the audit chain and payload tampering, the MCP endpoint, delegation modes, approvals, break-glass, dry run, the data filter, learning mode, SIEM sinks (a real UDP receiver and a signed webhook), and the NDJSON export.
License
AGPL-3.0. Run it, change it, ship it; if you offer a modified Gate as a service, share your changes. A commercial license, hosted edition, signed installers and enterprise identity connectors are available from Acutis: https://acutisgo.com/gate/
This server cannot be deployed
Maintenance
Related MCP Connectors
Zero-secret MCP gateway for AI agents: risk-scored, audited calls with human-in-the-loop approval.
Identity, authorization, audit trails, and revocable permissions for AI agents accessing MCP tools.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Human-in-the-loop review and approval for AI agents. Audit trail, approval policies, native MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA secure MCP gateway for enterprise AI tool execution, enabling governed invocation of business tools with authentication, RBAC, audit logging, PII redaction, and async processing.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to safely call enterprise tools through a governed MCP gateway with permission enforcement, blast-radius controls, input validation, and a full audit trail for every invocation.MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to securely call enterprise MCP tools with tenant-scoped RBAC, human approvals, audit logging, and multi-tool workflows across customer, order, document, and ticket data.-
- AlicenseAqualityCmaintenanceProvides a security governance layer for AI agents to safely access upstream MCP servers, enforcing tool-level RBAC, parameter constraints, authentication via static tokens or OIDC, and tamper-evident audit logging.21Apache 2.0