Midplane
OfficialMidplane
**面向 AI 智能体的安全默认 SQL 护栏。**Midplane 位于 AI 智能体(Claude、Cursor、任何 MCP 客户端)与你的 Postgres 数据库之间的查询路径中。它使用真实的 SQL AST(而不是正则表达式黑名单)解析每条语句,强制实施声明式的每表访问策略,阻止破坏性 DML/DDL,并写出一条基于事件溯源的审计日志,记录哪个智能体执行了什么——在查询执行之前。
📖 完整文档位于 midplane.ai/docs —— 包括智能体设置、策略参考、自托管、部署和威胁模型。本 README 只是一个快速入门指南。
为什么存在
AI 编码智能体正逐步接入生产级 Postgres,但没有审计轨迹或安全层。现已弃用的 Anthropic 参考实现 Postgres MCP 曾自带一个堆叠语句注入向量(Datadog Security Labs, 2025);常见的 service role 配置会把一个能读写任何表的连接直接交给智能体。Midplane 将每条查询解析为 AST,拒绝危险形态,并在查询到达你的数据库之前写入持久化的审计记录。
Related MCP server: Terminus
它拦截什么
默认阻止破坏性写入 —— 即使带
WHERE的DELETE FROM users也会被拒绝,除非你将表策略设置为true_write等显式允许。全表删除与结构破坏 —— 除了策略指明,否则不带
WHERE的DELETE/UPDATE以及所有DROP/TRUNCATE/ALTER均被阻止。堆叠语句注入 ——
SELECT 1; DROP TABLE users在解析阶段就被拒绝。读取中的隐藏写入 ——
WITH x AS (DELETE FROM users RETURNING *) SELECT * FROM x会在内部的DELETE处拒绝,而不是在外层的SELECT处拒绝。同一递归遍历覆盖子查询、UNION 分支和 JOIN。
完整的策略模型、解析→策略→审计管线,以及将它固化的对抗性语料库,都已记录在 midplane.ai/docs。
在真实对话中
对 Midplane 代理的数据库发送 delete all users 给 Claude Code 的提示词:
⏺ 等一下——这是破坏性且不可逆的操作。在我运行
DELETE FROM public.users,请先确认。user: 确认删除所有用户
⏺ Midplane 阻止了它:“对表
users的写入不被表访问策略允许。” 该 DELETE 已被记录审计日志,但未被执行。
快速开始
有三种方式接入——背后都是同一套开源核心代码。有关逐步指南,请查阅 midplane.ai/docs。
托管云
最快的体验方式,打开 注册 at app.midplane.ai 从零开始只需几分钟就能得到你第一个有保护的查询。仪表盘、策略编辑器、托管审计日志、智能体令牌签发,内置均齐备。无需自行安装任何组件,支持多区域,完整商业支持。
自己守护一个数据库
把 MIT 引擎放在一个 Postgres 数据库前面,再让智能体连接它。无需额外安装——npx 自带的 Node.js 可在首次运行时拉取 midplane 包(需要 Node 22.16+;更旧版本会提示错误并退出)。将这个配置加入你的 MCP 客户端(Claude Code、Claude Desktop、Cursor 等都接受同样格式):
{
"mcpServers": {
"midplane": {
"command": "npx",
"args": ["-y", "midplane", "server", "--stdio"],
"env": { "DATABASE_URL": "postgres://user:pass@host:5432/db" }
}
}
}把连接字符串保留在用 env 配置块中,而不是放在命令行里,因为它会通过 ps aux 和你的 shell 历史泄露。该配置块仍会以明文写入文件,所以请给 Midplane 单独创建一个最小权限的 Postgres 角色:由它决定哪些 SQL 可以执行,而非底层角色能访问什么。
这份配置本身就已是安全默认值:允许读,拒绝写 DDL 和写语句,每条查询都会被记录到审计日志 ~/.midplane/audit.db。用 npx midplane alphabet 读取拒绝的审计记录。如果想放开某个表,可以用 npx midplane init 生成策略:它会通过只读连接探测你的库结构,建议租户列,并写入已验证的 midplane.policy.yaml。
对于 CI 流水线或长期运行的几乎进程,同一引擎提供为一份不含 Node.js 的自包含镜像——镜像
midplane/midplane:0.19.0,提供 Streamable HTTP 而不是 stdio。 安装指南 ·engine/README.md。
自托管全功能应用
完整的单租户产品——仪表盘、策略编辑器、审计日志、智能体令牌签发——无需 license 且无功能限制,部署在你的 Postgres 之上。唯一的依赖是 Docker:
git clone https://github.com/midplaneai/midplane && cd midplane
./bin/self-host up # → http://localhost:3000该命令会生成密钥并写入 .env.self-host,启动 Postgres + web 应用,启动时自动执行迁移,并打印仪表盘地址。第一个使用邮箱+密码注册的用户会成为所有者。
从源码运行、单个镜像部署、engine-spawn 架构以及完整演练:见 midplane.ai/docs(仓库内:SELF_HOST.md)。
开放核心
Midplane 是 开放核心 + MIT 许可 + 可自托管。除 apps/web/src/ee/ 之外的所有内容都是社区版,自托管时没有任何功能限制。apps/web/src/ee/ 是商业企业版(目前含 SSO/SAML;未来会有治理能力);删除该目录后,剩下的就是一个可正常构建的 MIT 版本。托管云使用同一套代码库,是受支持且付费的路径。详见 LICENSE 中的 MIT 条款,以及 NOTICE 中对 ee/ 的移除说明。
架构
一个代码库,两种部署方式:
控制平面(仓库根目录)—— 仪表盘、策略管理、审计视图、agent 令牌签发、托管 MCP Proxy。除
apps/web/src/ee/外均为 MIT。引擎(
engine/)—— MIT 协议的查询路径引擎,编译为自包含二进制。控制平面按项目启动它,且从不重新实现,因此托管和自托管运行的引擎本身完全一致,仅打包方式不同。
apps/web Next.js dashboard + Better Auth + projects API
packages/db Drizzle schema (customers, projects, audit index)
packages/kms encryptDsn / decryptDsn (env-mode dev, AWS KMS prod)
packages/router Hosted MCP request handler — token → project → engine
engine/ The MIT query-path engine
infra/telemetry-proxy Cloudflare Worker for anonymized OSS install telemetry托管的多区域云(Fly + Neon + KMS)的操作说明见 docs/deploy.md。
参与贡献
欢迎提交 Issue 和 PR——请先阅读 CONTRIBUTING.md。最高杠杆的贡献方向是:为对抗性 SQL 语料库加入一条新样本:一个绕过尝试和与它对应的策略修复。提交必须 DCO-signed(git commit -s)。安全问题请遵守 SECURITY.md ——不要公开 issue。
License
注——见 LICENSE。没有 Copyleft,没有 BSL,没有“源码可见但说不给就不给”的陷阱。唯一的例外是 apps/web/src/ee/(企业版,受 apps/web/src/ee/LICENSE 约束,并在 NOTICE 中说明);删除该目录后,仍是一个能完整构建的 MIT 版本。
This server cannot be deployed
Maintenance
Related MCP Connectors
Deterministic safety, correctness & cost gate that vets Postgres SQL before your AI agent runs it.
Safe, read-only Postgres and MySQL access for AI agents. Audit log + column-level controls.
Security gateway for AI agents: policy, approval, and audited execution, no secrets shared.
Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceConnects AI assistants to PostgreSQL databases with production-grade safety features including query validation, guarded writes, rate limiting, and audit logging.3MIT
- AlicenseNot gradedqualityDmaintenanceA default-deny SQL firewall sidecar for AI agents that enforces per-agent policies on database queries, provides safe rewrites, and maintains a tamper-evident audit chain.AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceA governed SQL gateway for untrusted AI agents, providing controlled access to PostgreSQL, MySQL, and OceanBase with RBAC, field ACLs, row policies, and cost controls.MIT
- AlicenseNot gradedqualityCmaintenanceEnforces safety and governance for SQL queries executed by AI agents, providing read-only enforcement, cost estimation, and audit trails.Apache 2.0