mcpField
R
Rowbit

Rowbit

本地服务
ermag.github.io其他1今天更新

关于 Rowbit

Rowbit 是位于 AI Agent 与 MariaDB 或 MySQL 之间的开源 MCP 服务,可预览数据写入、按规则审批或拦截,并撤销单次更改。

主要功能

  1. 01精确预览行变更前后内容
  2. 02按规则审批或拦截写入
  3. 03撤销单次数据库更改
  4. 04按 Agent 限制表和列访问
  5. 05提供网页审核界面和审计日志

适用场景

  1. 01审核 Agent 提议的批量更新
  2. 02按规则放行安全的小型写入
  3. 03限制生产环境 Agent 的访问
  4. 04撤销有问题的数据更改

MCP 相关

Agent 通过 MCP 经由 Rowbit 读取数据并提出写入,而非直接连接数据库。Rowbit 向客户端提供受规则和审核流程约束的数据库操作。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"ermag-rowbit": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/ermag/rowbit:0.2.2"
]
}
}
}
启动命令docker run -i --rm ghcr.io/ermag/rowbit:0.2.2

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/ermag/rowbit:0.2.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Rowbit

为会向数据库写入数据的 AI Agent 提供安全保障。预览每次写入,审批有风险的操作,撤销任意单次更改。通过 MCP 支持 MariaDB 和 MySQL。

Release CI License: AGPL-3.0

Rowbit:为会向数据库写入数据的 AI Agent 提供安全保障。预览、审批、撤销。

开始使用

curl -fsSL https://ermag.github.io/rowbit/install.sh | sh
rowbit setup

适用于 macOS 和 Linux(Windows 可通过 WSL 使用)。如果 ~/.local/bin 不在你的 PATH 中,安装程序会提示你改为运行 ~/.local/bin/rowbit setup。Setup 会查找数据库的 URL,检查 Rowbit 的权限并打印用于修复权限的 GRANT 语句,编写规则以拦截所有写入操作供审核,连接你选择的客户端,并打印审核页面的密码。请参阅快速入门。

没有可供试用的数据库?在 setup 提示时选择示例:它会通过 Docker 运行一个商店数据库,并在前面部署 Rowbit(参见导览)。然后向 Agent 提出请求:

待处理的订单卡住了。取消它们。

兼容 Claude Code、Cursor、VS Code、Claude Desktop、Codex、Gemini CLI、Windsurf 和任意 MCP 客户端。

数据库状态
MariaDB、MySQL已支持,也支持 TLS(每次更改都会针对 MariaDB 11.4 和 MySQL 8.4 进行测试)
PostgreSQL已列入计划,接下来支持
MongoDB、Redis正在探索

文档 · 快速入门 · 交互式演示 · 告诉我们你的想法

功能介绍

你让编码 Agent 修复卡在待处理状态的订单,它便执行 UPDATE shop.orders SET status = 'cancelled' WHERE status = 'pending'。但这个操作也会匹配过去一小时内下的所有订单。Rowbit 会在操作影响任何数据行之前拦截它,向用户准确展示将要更改的 1,284 行,并等待审批。如果确实有不良更改通过了,你可以单独撤销这次更改,无需恢复备份。

状态: 处于早期阶段,且为开源项目;每次发布的内容请参阅更新日志。接下来要构建什么,取决于你在反馈讨论中告诉我们的内容。

工作原理

Rowbit 位于 Agent 与数据库之间。Agent 通过 MCP 与 Rowbit 通信,绝不会直接访问数据库:它们通过 Rowbit 读取并提出写入,无需数据库凭据。

  • 精确预览。 Rowbit 会读取写入将要更改的行,并在私有临时副本上重放操作,因此你可以准确查看每行更改前后的内容,与表实际存储的内容完全一致。你的表只会被读取。
  • 先定规则,再由人处理。 一个小型 YAML 文件允许安全写入通过,将有风险的写入暂存给人处理,并拒绝其余写入。只有人可以批准,批准后执行的内容与预览完全一致,否则什么也不执行。参见规则。
  • 撤销单项更改。 Rowbit 会保留每次更改涉及的所有行,因此你可以撤销一项错误写入,同时保留其他所有内容。
  • 作用域与影子模式。 对每个 Agent,指定它可以读取或写入哪些表,以及哪些列是它绝不能查看的;这些限制由数据库通过该 Agent 专属的用户账号强制执行。影子模式会显示规则会暂存哪些操作,让你在正式执行规则前先行查看。
  • 在当前环境中审核。 二进制文件内置 Web UI,通过你的身份提供商登录,并支持 Slack 或 webhook 通知,以及基于哈希链的审计日志。参见一项更改的流转过程。
# rowbit.yml
version: 0
agents:
  coding-agent:
    default: hold
    rules:
      - name: small-order-fixes
        when: { statement: update, table: shop.orders, columns: status, rows: { max: 20 } }
        then: allow
      - name: no-deletes
        when: { statement: delete }
        then: block
        reason: Data fixes don't delete rows.

这里的 Agent 可以自行更改最多 20 个订单的 status。如果更新操作写入其他列或涉及更多行,则会暂存给人处理;删除操作会被拒绝。

如需了解完整架构,请参见 examples/rowbit.yml 和 rowbit.yml 规范。

连接你的 Agent

rowbit setup 会连接你选择的客户端。rowbit connect <client> 会再设置一个客户端,并为其配置专属令牌。参见连接你的 Agent。

Claude Code
rowbit connect claude-code

使用 claude mcp add 为当前目录添加 Rowbit(要在所有位置使用,请设置 --scope user)。添加用于指导 Agent 善用 Rowbit 的技能:

/plugin marketplace add Ermag/rowbit
/plugin install rowbit@rowbit
Cursor
rowbit connect cursor

将 Rowbit 添加到 ~/.cursor/mcp.json。重启 Cursor。

VS Code
rowbit connect vscode

或者,在运行 rowbit demo 或 rowbit serve 后,将其添加到 VS Code,并在 VS Code 提示时粘贴 rowbit connect vscode --print 输出的令牌。

Claude Desktop、Codex、Gemini CLI、Windsurf
rowbit connect claude-desktop   # macOS; starts rowbit mcp itself
rowbit connect codex
rowbit connect gemini
rowbit connect windsurf
任何其他 MCP 客户端
rowbit connect --print

会输出地址(http://127.0.0.1:8080/mcp)和令牌;发送时将令牌作为 Authorization: Bearer <token>。

## 为什么不直接使用迁移?

对于修改架构的编码 Agent,让它编写迁移文件,再经过代码审查和 CI,这是正确的做法,而 Rowbit 并不与之竞争:它会将每项架构变更交由人工处理,并将实际工作流留给你的迁移工具。但它不适合修复数据:

  • 审查差异显示的是 SQL,而不是行。 UPDATE orders SET status = 'cancelled' WHERE status = 'pending' 在审查时看起来没问题。但它运行时会影响哪些行,取决于当时的数据。Rowbit 会在做出决定时显示确切的行;如果这些行后来发生了变化,它就会拒绝执行。
  • 一次性修复等不了拉取请求。 事故期间修复几行损坏的数据,需要在几分钟内得到解决方案,而没人会为每次修复都编写并审查一个迁移。
  • 并非每次写入都需要人工处理。 规则允许小型且安全的写入直接通过,只拦截有风险的写入,避免审查者养成不加判断就批准的习惯。
  • 每项变更都可以单独撤销。 数据迁移通常缺少下行迁移,或者会造成数据丢失。Rowbit 会保留每项变更所影响行的变更前快照。

众所周知,编码 Agent 清空生产数据库的事故,和其他因素一样,也是凭据管理问题:收回凭据,让 Agent 编写迁移即可。Rowbit 面向的是需要执行写入的 Agent。如果 Agent 总是重复执行同一操作,例如发放退款,就给它一个只执行该操作的工具,而不是让它使用 SQL。

须知

  • 只有 Rowbit 持有数据库凭据。 如果 Agent 也有自己的连接字符串,它就能绕过 Rowbit 进行写入。只向 Agent 提供 Rowbit 的端点,不提供其他信息(通过 HTTP,并使用其自己的令牌),并让 Rowbit 使用自己的数据库用户。
  • 没有 scopes 的 Agent 会使用 Rowbit 的权限进行读写。 它的规则仍会决定每次写入是否执行,但没有任何机制阻止它读取 Rowbit 用户能够读取的所有内容。请为生产环境中的 Agent 配置 scopes。
  • 撤销只会恢复行,不会让一切回到原样。 它会还原数据,但无法收回因此发送的邮件,也无法撤回因此支付的退款。
  • 预览绝不会写入你的表。 它会在不加锁的情况下读取受影响的行,并在临时副本上重放写入;只有 Rowbit 的连接可以访问该副本。对于带有触发器或级联外键的表,系统会拒绝操作,因为预览中不会显示这些副作用,也无法撤销。Rowbit 的数据库用户无法完整检查的表也会被拒绝:它需要 TRIGGER 和 PROCESS 权限。所需的精确授权请参阅数据库权限。
  • 数据存储位置。 变更状态、预览内容(包括受影响行的变更前和变更后副本)以及审计日志,都存储在 Rowbit 旁边的本地 SQLite 文件中。请像保护数据库副本一样保护它(了解方法)。
  • CLI 信任运行它的人。 任何能够读取 rowbit.db 并持有数据库 URL 的人,都可以使用任意 --as 名称运行 rowbit approve。请勿让 Agent 获得这两项信息,并以它们无法冒充的用户身份运行 Rowbit;另请参阅投入实际使用前。
  • 失败时默认拒绝。 对于 Rowbit 无法评估的任何内容,它都会拒绝执行。请参阅变更生命周期和 SECURITY.md。

贡献

欢迎在 Discussions中分享想法和意见。代码贡献请参阅 CONTRIBUTING.md。提交需要 DCO 签署(git commit -s)。请按照 SECURITY.md 中的说明报告安全问题。

许可证

服务端采用 AGPL-3.0-only 许可证。rowbit.yml 策略架构(crates/rowbit-policy)和未来的客户端 SDK 采用 Apache-2.0 许可证。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。