mcpField
F
firebase-mcp-server

firebase-mcp-server

本地服务
dasasian.com云与基础设施010 周前更新

关于 firebase-mcp-server

firebase-mcp-server 为使用 Firebase 的开发者提供 Firestore、Storage、Auth 和 Cloud Functions 日志操作,并通过模式验证和自动发现辅助数据访问。它支持按需加载工具组,也可在没有模式文件时探索集合。

主要功能

  1. 01Firestore 查询与文档操作
  2. 02Storage 文件管理
  3. 03Firebase Auth 用户管理
  4. 04按模式验证与自动发现
  5. 05查询 Cloud Functions 日志
  6. 06按组选择 MCP 工具

适用场景

  1. 01按模式检查 Firestore 数据
  2. 02浏览未知数据库中的集合
  3. 03管理 Firebase 用户和存储文件
  4. 04筛选并汇总函数日志

MCP 相关

它作为 MCP 服务暴露 Firestore、Storage、Auth 和日志工具,并支持按工具组启用功能。MCP 注解标明工具的读写及风险属性。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"dasasian-firebase": {
"command": "npx",
"args": [
"-y",
"@dasasian/firebase-mcp-server"
]
}
}
}
启动命令npx -y @dasasian/firebase-mcp-server

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

安装包
npm@dasasian/firebase-mcp-server1.1.0

工具

还没有获取到工具列表

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

详细介绍

Firebase MCP 服务

npm 许可证:MIT Model Context Protocol 服务 Node 18+

适用于 Firebase(Firestore、Storage、Auth、Functions Logging)的通用 Model Context Protocol(MCP)服务,提供架构驱动的验证和高效利用上下文的工具。

功能

  • @ 提及支持 - 使用 @firebase:firestore://users/user-123 引用 Firestore 文档
  • 智能自动补全 - MRU 缓存会跟踪访问过的文档,便于快速再次引用
  • 自动发现 - 同时显示基于架构的集合和已发现的集合
  • 基于路径的架构 - 遵循 Firebase firestore.rules 约定
  • 架构演进 - 字段状态元数据(实验性 → 正式 → 旧版)
  • 热重载 - 监视文件,架构更改后无需重启
  • 灵活验证 - 三种模式:严格、警告(默认)、宽松
  • 无需架构即可使用 - 通过发现模式探索未知数据库
  • 高效利用上下文的工具 - 大型数据集的 Token 用量减少 99%
  • 索引感知查询 - 根据 firestore.indexes.json 验证查询
  • Functions 日志 - 使用类似 SQL 的查询查看 Cloud Functions 日志,并支持聚合和标签筛选

安装

将其添加到你的 MCP 客户端(例如 Claude Code)中 — 通过 npx 运行,无需全局安装:

{
  "mcpServers": {
    "firebase": {
      "command": "npx",
      "args": ["-y", "@dasasian/firebase-mcp-server", "start", "./firestore-schemas.json"]
    }
  }
}

start 接受可选的架构配置路径(默认为 ./firestore-schemas.json)和可选的索引路径(默认为 ./firestore.indexes.json)— 参见架构格式。Firebase 身份验证使用 Application Default Credentials。

或者全局安装 CLI:

npm install -g @dasasian/firebase-mcp-server
firebase-mcp start ./firestore-schemas.json

开发(从源代码构建)

npm install
npm run build
npm run cli -- start --config ./examples/basic/firestore-schemas.json

@ 提及支持(资源)

在 Claude Code 中直接引用 Firestore 文档:

What's the email for @firebase:firestore://users/user-123?
Show me all posts: @firebase:firestore://posts/*
工作原理

在 Claude Code 中输入 @firebase 时:

显示基于架构的集合(带验证):

  • 📋 用户(用户账号文档)
  • 📋 帖子(博客文章文档)
  • 📋 评论(文章评论)

此外还会自动发现集合(无架构):

  • 🔍 analytics
  • 🔍 sessions
  • 🔍 audit_logs
配置
# Enable/disable auto-discovery (default: true)
export FIRESTORE_AUTO_DISCOVER=true

# Cache duration in seconds (default: 300 = 5 minutes)
export FIRESTORE_DISCOVERY_CACHE_TTL=300

自动发现成本:每天约 $0.0003(可忽略不计)

工具

该服务提供 33 个工具,分为四组。每个工具都会声明 MCP 注解 (readOnlyHint、destructiveHint、idempotentHint、openWorldHint),因此客户端 可以自动批准读取操作,并在写入前询问。

选择要加载的工具

每个会话中加载全部 33 个工具定义约占用 12k Token 的上下文。如果 你只需要其中一部分,可以缩小范围:

# Only Firestore (12 tools, ~4.3k tokens)
firebase-mcp start --tools firestore

# Firestore plus Auth
firebase-mcp start --tools firestore,auth

也可以在 MCP 客户端配置中设置:

export FIREBASE_MCP_TOOLS=firestore,storage

--tools 标志的优先级高于环境变量。两者都未设置时会加载 所有工具,因此升级不会隐藏你已在使用的工具。调用已关闭组中的 工具时会返回错误,并指出需要启用的组。

组工具数约 Token 数
firestore124,341
storage144,152
auth62,075
logs11,817
全部(默认)3312,387
Firestore(12)— --tools firestore
  • firestore_show_collections — 显示集合(读取)
  • firestore_read — 读取文档(读取)
  • firestore_export — 导出集合(读取)
  • firestore_validate — 根据架构验证(读取)
  • firestore_query_select — 查询文档(读取)
  • firestore_query_collection_group — 查询集合组(读取)
  • firestore_count — 统计文档数(读取)
  • firestore_sum — 对字段求和(读取)
  • firestore_stats — 集合统计信息(读取)
  • firestore_import — 导入文档(写入,有破坏性)
  • firestore_update — 更新文档(写入,有破坏性)
  • firestore_delete — 删除文档(写入,有破坏性)
Firebase Auth(6)— --tools auth
  • firebase_auth_list_users — 列出用户(读取)
  • firebase_auth_get_user — 获取用户(读取)
  • firebase_auth_create_user — 创建用户(写入)
  • firebase_auth_update_user — 更新用户(写入,有破坏性)
  • firebase_auth_delete_user — 删除用户(写入,有破坏性)
  • firebase_auth_revoke_sessions — 撤销会话(写入,有破坏性)
Firebase Storage(14)— --tools storage
  • firebase_storage_list_buckets — 列出存储桶(读取)
  • firebase_storage_ls — 列出文件(读取)
  • firebase_storage_stat — 文件元数据(读取)
  • firebase_storage_find — 查找文件(读取)
  • firebase_storage_get_url — 获取文件 URL(读取)
  • firebase_storage_get_access — 获取文件访问权限(读取)
  • firebase_storage_read — 将文件下载到本地临时路径(写入)
  • firebase_storage_upload — 上传文件(写入,有破坏性)
  • firebase_storage_rm — 删除文件(写入,有破坏性)
  • firebase_storage_cp — 复制文件(写入,有破坏性)
  • firebase_storage_mv — 移动文件(写入,有破坏性)
  • firebase_storage_sync — 将存储桶同步到本地(写入,有破坏性)
  • firebase_storage_push — 将本地内容推送到存储桶(写入,有破坏性)
  • firebase_storage_set_access — 设置文件访问权限(写入,有破坏性)
Cloud Logging(1)— --tools logs
  • firebase_functions_logs — 使用类似 SQL 的语法查询 Cloud Functions 日志(写入)

firebase_storage_read 和 firebase_functions_logs 未标记为只读,因为它们会写入数据:前者会下载文件到本地临时文件,后者会在磁盘上更新自动发现的日志架构。

读取函数日志需要额外的 IAM 角色。 Firebase Admin SDK 服务账号默认没有 Cloud Logging 访问权限,因此即使其他所有工具都能正常工作,firebase_functions_logs 仍会失败,并显示 PERMISSION_DENIED: Permission denied for all log views。授予该角色后,请等待几分钟让设置生效:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:firebase-adminsdk-xxxxx@PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/logging.viewAccessor"

仅授予 roles/logging.viewer 可能不够——错误信息提到了 log views,而 logging.views.access 权限属于 viewAccessor。

查询示例:

// Discover what functions exist
{"distinct": "functionName"}

// Show recent errors
{"where": [{"field": "severity", "operator": "==", "value": "ERROR"}], "limit": 20}

// Top error patterns with counts (use "message" — structured logs have no textPayload)
{"groupBy": ["message"], "aggregates": [{"field": "*", "operation": "count", "alias": "count"}], "where": [{"field": "severity", "operator": "==", "value": "ERROR"}], "orderBy": [{"field": "count", "direction": "desc"}], "limit": 10}

// Filter by custom labels (e.g., user, environment)
{"where": [{"field": "labels.user_id", "operator": "==", "value": "123"}]}

架构格式

架构遵循 Firebase 基于路径的约定:

{
  "schemas": {
    "/organizations/{organizationId}": {
      "description": "Organization documents",
      "schema": {
        "type": "object",
        "required": ["id", "name"],
        "properties": {
          "id": { "type": "string" },
          "name": { "type": "string" }
        }
      }
    },
    "/organizations/{organizationId}/products/{productId}": {
      "description": "Product catalog",
      "schema": {
        "type": "object",
        "properties": {
          "name": { "type": "string" },
          "category": {
            "type": "string",
            "x-status": "legacy",
            "x-replacedBy": "productType"
          },
          "productType": {
            "type": "string",
            "x-status": "experimental"
          }
        }
      },
      "timestampFields": ["createdAt", "updatedAt"]
    }
  }
}

文档

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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