mcp燃烧酶
Firebase实时数据库的独立MCP服务器。使用它从 光标, 克劳德代码或任何MCP主机。完整的RTDB读/写/查询访问权限,以及用于调试的本地YAML转储/加载。
也可用作可导入库。
快速开始
来自npm(推荐): 包裹 @livx.cc/mcp-firebase.以开始该过程 项目根目录 作为当前的工作目录 mcp-firebase.json 已找到(见下文)。
# MCP stdio (installs/updates the package; -y = non-interactive)
bunx -y @livx.cc/mcp-firebase --stdio
# HTTP mode (REST + `/api/mcp`); PORT defaults to 3456
bunx -y @livx.cc/mcp-firebase从这个仓库的克隆中:
# MCP stdio mode — loads .env via mcp-firebase.json / flags (see below)
bun run src/cli.ts --stdio
# If mcp-firebase.json has no envPath, you can pass .env here instead
bun run src/cli.ts --stdio --env-path /path/to/.env
# HTTP mode (REST + MCP endpoint)
bun run src/cli.tsmcp-firebase.json
每个应用程序 使用此MCP的应具有 mcp-firebase.json 在项目根中 (与您使用的文件夹相同 cwd 启动服务器时)。Cursor、Claude Code和CLI都读取同一个文件—— 不 IDE特定。
例子:
{
"envPath": "./config/.env.firebase",
"basePath": "/myApp",
"workDir": ".mcp-firebase",
"readOnly": true
}envPath--通往.env此应用程序的文件(相对于项目根)。应定义RTDB凭据;看见 环境变量.basePath--可选RTDB路径前缀(默认/).workDir--缓存、转储、备份、审核的可选根目录(默认.mcp-firebase/).readOnly:true块写入工具(put_db,patch_db,delete_db,post_db_push,post_files_load,post_backup_restore).false允许他们。如果省略了键,请使用envMCP_READONLY:仅当满足以下条件时才允许写入MCP_READONLY=false;否则服务器是只读的。
所有钥匙都是可选的。 优先: mcp-firebase.json >CLI --env-path >环境>内置默认值。
目录布局 (根据 workDir,默认值 .mcp-firebase/):
.mcp-firebase/
cache/ ← query/read results (get_db shallow=false, list, query)
dumps/ ← manual YAML dumps (files/dump)
backups/ ← auto + manual backups before write ops
audit/ ← audit.jsonl (append-only write log)如果需要,覆盖单个dirs:
{
"workDir": ".mcp-firebase",
"localDir": ".mcp-firebase/dumps/",
"cacheDir": ".mcp-firebase/cache/",
"audit": { "logFile": ".mcp-firebase/audit/audit.jsonl" },
"backup": {
"dir": ".mcp-firebase/backups/",
"operations": ["put", "patch", "delete"]
}
}backup.operations 写操作触发自动预操作快照的控件。 push 默认情况下被排除在外(仅追加;回滚是删除)。如果需要,请明确添加。
环境变量
从指向的文件加载 envPath 在 mcp-firebase.json (或 --env-path / .env).
| 变量 | 必填 | 描述 |
|---|---|---|
FIREBASE_SERVICE_ACCOUNT | 是\* | 服务帐户JSON文件的路径,或JSON字符串本身 |
FIREBASE_DATABASE_URL | 是\* | Firebase RTDB URL |
FIREBASE_CONFIG | 否 | 如果设置并且 FIREBASE_DATABASE_URL 缺失, databaseURL 从JSON中读取(形状与Firebase客户端配置相同) |
MCP_READONLY | 否 | 何时 mcp-firebase.json 没有 readOnly 键:如果 MCP_READONLY=false,允许写入;否则为只读(默认) |
RTDB_BASE_PATH | 无 | 所有操作的路径前缀(默认值: /;通过以下方式覆盖 mcp-firebase.json basePath) |
RTDB_LOCAL_DIR | 否 | YAML转储文件的目录(默认:下 workDir,见上文) |
\*RTDB访问所需。 FIREBASE_SERVICE_ACCOUNT 自动检测格式:如果值以开头 {,解析为JSON;否则被视为文件路径。
光标
- 添加
mcp-firebase.json在应用程序根目录下设置envPath(以及任何其他选项),如 mcp-firebase.json 上面的部分。 - 以工作区根目录打开该应用文件夹 —
${workspaceFolder}在下面的代码段中,必须是包含以下内容的目录mcp-firebase.json. - 安装 包子 所以
bunx在你的路径上。 - 添加
.cursor/mcp.json:
{
"mcpServers": {
"mcp-firebase": {
"type": "stdio",
"command": "bunx",
"args": ["-y", "@livx.cc/mcp-firebase", "--stdio"],
"cwd": "${workspaceFolder}"
}
}
}- 重新加载 光标窗口(或重新启动光标)。如果工具未出现,请打开 输出 并选择 主控程序 或 MCP日志 对于错误。
可选:固定一个版本,例如。 "args": ["-y", "@livx.cc/mcp-firebase@0.1.13", "--stdio"].\ 可选: 用户范围 ~/.cursor/mcp.json 使用相同的形状;这 项目 文件胜过全局per Cursor的MCP文档.
克劳德代码
全球 --添加到 ~/.claude.json 一次。每个项目仍然使用自己的 mcp-firebase.json 在打开该repo时,在repo根目录处(流程 cwd 是项目):
{
"mcpServers": {
"firebase": {
"type": "stdio",
"command": "bun",
"args": ["run", "/path/to/mcp-firebase/src/cli.ts", "--stdio"]
}
}
}对于已发布的安装,您可以指向 args 在 bunx + @livx.cc/mcp-firebase + --stdio 同样的方式 光标,或使用如上所述的本地克隆路径。
MCP工具
服务器发送最佳实践 instructions 连接到代理(通过MCP initialize 响应)。主机(例如Cursor或Claude Code)可以将这些添加到代理上下文中——默认设置中不需要额外的斜线命令。说明包括:取用前务必检查尺寸,使用 get_db_keys 首先,对于大型集合,更喜欢查询而不是完整下载。
数据库操作
| 工具 | 说明 |
|---|---|
get_db | 读取任何RTDB路径上的数据。默认 shallow=true 内联返回键/类型摘要。 shallow=false 将完整数据写入缓存,并返回元数据+文件路径。 使用前务必先检查尺寸 shallow=false. |
put_db | 设置(替换)数据。首先自动备份路径,附加审核条目。退货 { id, backupFile } 为了相关性。 |
patch_db | 合并更新数据。首先自动备份路径,附加审核条目。 |
delete_db | 删除数据。首先自动备份路径,附加审核条目。 |
get_db_list | 将子项列为数组——写入缓存,返回元数据+文件路径。 使用 get_db_keys 首先检查计数。 |
get_db_keys | 仅列出子密钥(内联返回)。 在获取数据之前,请先使用此选项检查集合大小。 |
post_db_push | 使用自动生成的按键按下新孩子。附加审核条目。 |
get_db_query | 使用orderBy/eequalTo/limitToFirst/limitToSast查询--写入缓存,返回元数据+文件路径 |
文件操作
| 工具 | 说明 |
|---|---|
post_files_dump | 将RTDB路径转储到本地YAML文件 |
post_files_load | 将YAML文件加载回RTDB。附加审核条目。 |
get_files_list | 列出本地YAML转储文件 |
get_files_read | 读取本地YAML转储文件 |
备份操作
| 工具 | 说明 |
|---|---|
post_backup | 创建路径的手动备份(如果省略了路径,则创建整个数据库)。以YAML格式存储在 .mcp-firebase/backups/. |
get_backup_list | 列出所有备份。筛选依据 op 和 path.返回文件名、操作、路径、时间戳。 |
get_backup_read | 读取备份文件的内容。 |
post_backup_restore | 将备份还原到RTDB。使用备份 _path 以确定目标。附加审核条目。 |
审计业务
| 工具 | 说明 |
|---|---|
get_audit_list | 列出最近的写操作审核条目。筛选依据 op, path, limit (默认值为50)。最近的第一个。 |
检查
| 工具 | 说明 |
|---|---|
get_structure | 显示顶级RTDB密钥(廉价的浅REST调用——没有下载子数据) |
get_rules | 阅读 database.rules.json 来自cwd |
get_config | 显示解析的运行时配置:cwd、envPath、basePath、dirs、审计/备份设置、数据库URL |
图书馆使用情况
import { FirebaseModule, RtdbDAL, BaseRepository, AuditLog, BackupManager, YamlSync } from '@livx.cc/mcp-firebase';
const firebase = new FirebaseModule({
serviceAccountPath: './service-account.json',
databaseURL: 'https://your-project.firebaseio.com',
basePath: '/v1/',
});
const dal = new RtdbDAL(firebase);
const yamlSync = new YamlSync(dal);
// Audit log (append-only JSONL)
const audit = new AuditLog({ logFile: '.rtdb-audit/audit.jsonl' });
// Backup manager
const backup = new BackupManager({ dir: '.rtdb-backups/', operations: ['put', 'patch', 'delete'] }, yamlSync);
// Manual backup
const file = await backup.backup('users/abc', 'put');
// List backups filtered by path
const backups = backup.list({ path: 'users' });
// Restore a backup
await backup.restore('put_users.abc_2026-02-18T12-00-00-000Z.yaml');
// Query audit log
const entries = audit.list({ op: 'delete', limit: 20 });
// Typed repository
const users = new BaseRepository(dal, 'users');
const user = await users.getById('abc');
await users.update('abc', { name: 'Bob' });审计和备份
每次写作(put, patch, delete, push, load)将JSON行附加到配置的审核文件中(默认值: .mcp-firebase/audit/audit.jsonl):
{ "id": "2026-02-18T12-00-00-000Z", "ts": "2026-02-18T12:00:00.000Z", "op": "delete", "path": "users/abc", "status": "ok", "backupFile": ".mcp-firebase/backups/delete_users.abc_2026-02-18T12-00-00-000Z.yaml", "durationMs": 42 }这 backupFile 字段将审核条目与其操作前快照相关联。备份文件名编码 {op}_{path}_{timestamp}.yaml.
回收流程:
get_audit_list--发现错误操作,注意其id/backupFileget_backup_list--确认备份存在post_backup_restore { "filename": "..." }--恢复术前状态
YAML文件格式
转储文件使用 _path 跟踪RTDB源路径的约定:
_path: users/abc
name: Alice
email: alice@example.com
role: admin加载文件会写入其内容(减号 _path)返回指定的RTDB路径。
