☰
Databasement 内置 MCP 服务器:让 AI 助手用自然语言管理数据库备份的完整指南
2026/10/4 4:46:42 网站建设 项目流程

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 客户端内部会自动串起整条链路:

  1. list-database-servers→ 找到"MySQL prod",拿到database_server_id
  2. trigger-backup→ 备份异步启动,返回 Snapshot ID 和 Job ID
  3. get-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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询