Databasement 内置 MCP 服务器:让 AI 助手用自然语言管理数据库备份的完整指南
【免费下载链接】databasementSelf-hosted database backup manager with a web UI. Schedule, backup, and restore MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, MongoDB, SQLite & Redis to S3, SFTP, Samba or local storage. SSH Tunnel support.项目地址: https://gitcode.com/gh_mirrors/da/databasement
Databasement 是一个自托管的数据库备份管理系统,支持将 MySQL、PostgreSQL、MariaDB、SQL Server、MongoDB、SQLite 和 Redis 备份到 S3、SFTP、Samba 或本地存储。它内置了一个MCP 服务器(Model Context Protocol),只需几步配置,你就能用自然语言指挥 AI 助手:列出数据库服务器、触发备份、恢复快照、查看任务状态——无需再点开网页界面逐个操作。
什么是 MCP?MCP 服务器有什么用?
MCP 是一个开放协议,允许 Claude Code、Cursor、VS Code Copilot 等 AI 客户端自动发现并调用你的应用暴露的"工具"。
传统方式下,你必须在 Web UI 里点击"数据库服务器 → 备份配置 → 执行备份"。接入 MCP 后,直接说一句话即可:
- 🗣️ "列出我所有的数据库服务器"
- 🗣️ "备份生产环境的 MySQL 服务器"
- 🗣️ "把最新快照恢复到 staging 环境"
- 🗣️ "查一下刚才那个备份任务的进度"
MCP 服务器复用驱动 Web UI 和 REST API 的同一套服务层(DatabasementServer.php),因此三个入口的行为完全一致。
内置的 6 个 MCP 工具一览
| 工具 | 功能 | 有破坏性? |
|---|---|---|
| list-organizations | 列出你所属的组织及当前激活组织 | 否 |
| list-database-servers | 列出所有已注册的数据库服务器,可按数据库类型过滤 | 否 |
| list-snapshots | 列出备份快照,可按服务器过滤,最新在前 | 否 |
| trigger-backup | 触发按需备份,返回快照 ID 和任务 ID | 否 |
| trigger-restore | 将快照恢复到目标服务器,会删除并重建目标数据库 | ⚠️是 |
| get-job-status | 查询备份/恢复任务状态(等待、运行、完成、失败) | 否 |
工具源码位于 app/Mcp/Tools/,每个工具都是独立的 PHP 类,例如 TriggerBackupTool.php 和 TriggerRestoreTool.php。
💡 备份和恢复都是异步执行的:触发后拿回 Job ID,再让 AI 调用get-job-status轮询进度即可。
三步接入:最快配置方法
第 1 步:创建 API Token
在 Databasement 界面进入设置 → API Tokens(app/Livewire/ApiToken/Index.php),创建一个新的 Sanctum 令牌并妥善保存。
第 2 步:配置你的 AI 客户端
MCP 端点位于/mcp路径(routes/ai.php),由 Sanctum 令牌保护。将下面的配置加入你的 AI 客户端(如 Claude Code 的.mcp.json或 Cursor 的mcp.json):
{ "mcpServers": { "databasement": { "command": "npx", "args": [ "mcp-remote", "https://your-databasement-instance.com/mcp", "--header", "Authorization: Bearer YOUR_SANCTUM_TOKEN" ] } } }把 URL 换成你的 Databasement 实例地址,令牌换成第 1 步生成的令牌。工具会以mcp__databasement__trigger-backup-tool这样的形式原生出现在 AI 客户端中。
📌
mcp-remote需要本机安装 Node.js,它把 HTTP 传输桥接为 stdio,所有 MCP 客户端都兼容。
第 3 步:多组织场景下切换上下文
如果你属于多个组织,让 AI 调用list-organizations获取组织 ID,然后通过 URL 的org_id查询参数或X-Organization-Id请求头切换上下文;省略时默认使用 Main 组织。
一个典型工作流示例
以"给 MySQL 生产库做一次备份并确认完成"为例,AI 客户端内部会自动串起整条链路:
list-database-servers→ 找到"MySQL prod",拿到database_server_idtrigger-backup→ 备份异步启动,返回 Snapshot ID 和 Job IDget-job-status→ 轮询直到任务状态变为 completed
而恢复场景(trigger-restore)会明确告知 AI 该操作有破坏性(删除并重建目标数据库),并在服务端做双重权限校验:既要有目标服务器的恢复权限,也要有源快照的读取权限,越权请求会直接返回权限错误。
权限与安全说明
- 🔐 MCP 端点受 Sanctum 令牌保护,令牌泄露等于账户凭据泄露,请妥善保管
- 每个工具在执行前都会走与 Web UI 相同的策略检查(Policy),AI 无法绕过界面权限
trigger-restore被标记为破坏性工具,AI 客户端通常会先向用户确认再执行
延伸阅读
- 📖 官方 MCP 文档:docs/docs/user-guide/mcp.md
- 📖 MCP 服务器定义:app/Mcp/Servers/DatabasementServer.php
- 📖 组织切换测试示例:tests/Feature/Mcp/McpHttpAuthorizationTest.php
- 📖 工具功能测试:tests/Feature/Mcp/McpServerTest.php
给自托管的 Databasement 接上 MCP 后,数据库备份管理从"点界面"变成了"说句话",这也是运维自动化的一个好起点 🚀
【免费下载链接】databasementSelf-hosted database backup manager with a web UI. Schedule, backup, and restore MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, MongoDB, SQLite & Redis to S3, SFTP, Samba or local storage. SSH Tunnel support.项目地址: https://gitcode.com/gh_mirrors/da/databasement
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考