Skip to main content
Glama
midplaneai

Midplane

Official
by midplaneai

Midplane

License: MIT CI Docs MCP

**面向 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 版本。


更多: Docs · Pricing · Support · 设计系统 · 行为准则

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Connects AI assistants to PostgreSQL databases with production-grade safety features including query validation, guarded writes, rate limiting, and audit logging.
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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
  • A
    license
    Not graded
    quality
    C
    maintenance
    A 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
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enforces safety and governance for SQL queries executed by AI agents, providing read-only enforcement, cost estimation, and audit trails.
    Apache 2.0