Firebase MCP

by gannonh
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Provides integration with Firebase services including Authentication for user management and verification, Firestore for document database operations, and Storage for file storage and retrieval

Firebase MCP 服务器

概述

模型上下文协议 (MCP)是一种开放协议,允许 LLM 客户端应用使用工具并访问外部数据源。此 MCP 服务器允许任何支持 MCP 协议的 LLM 客户端与 Firebase 服务进行交互,包括:

  • 身份验证:用户管理和验证
  • Firestore :文档数据库操作
  • 存储:文件存储和检索

该服务器通过 MCP 工具公开 Firebase 服务,使 LLM 客户端(包括Claude DesktopCursorRoo CodeCline )可以访问它们,同时处理身份验证和连接管理。

🔥 v1.3.0 中的新功能:集合组查询

Firebase MCP 现已支持在 Firestore 中查询子集合(集合组)!这样一来,您就可以查询所有同名子集合,而无需考虑它们的父文档,只需一次查询即可轻松搜索整个数据库层次结构。非常适合跨文档搜索、活动 Feed 和统一仪表板。

设置

安装 Firebase MCP 服务器的最简单方法是向您的 LLM 客户端(如 Cline)提供llms-install.md文件。

1. Firebase 配置

  • 转到Firebase 控制台
  • 导航至项目设置 > 服务帐户
  • 点击“生成新私钥”
  • 安全保存 JSON 文件

2.环境变量

服务器需要以下环境变量:

  • SERVICE_ACCOUNT_KEY_PATH :Firebase 服务帐户密钥 JSON 文件的路径(必需)
  • FIREBASE_STORAGE_BUCKET :Firebase 存储桶名称(可选)
    • 如果未提供,则默认为[projectId].appspot.com

3. 安装 MCP 服务器

将服务器配置添加到您的 MCP 设置文件:

  • Claude 桌面: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 游标: [project root]/.cursor/mcp.json
  • Roo 代码(VS 代码扩展):( ~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json
  • Cline(VS Code 扩展): ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

MCP 服务器可以手动安装,也可以在运行时通过 npx 安装(推荐)。安装方式决定了您的配置:

配置 npx

{ "firebase-mcp": { "command": "npx", "args": [ "-y", "@gannonh/firebase-mcp" ], "env": { "SERVICE_ACCOUNT_KEY_PATH": "/absolute/path/to/serviceAccountKey.json", "FIREBASE_STORAGE_BUCKET": "your-project-id.firebasestorage.app" } } }

配置本地安装

{ "firebase-mcp": { "command": "node", "args": [ "/absolute/path/to/firebase-mcp/dist/index.js" ], "env": { "SERVICE_ACCOUNT_KEY_PATH": "/absolute/path/to/serviceAccountKey.json", "FIREBASE_STORAGE_BUCKET": "your-project-id.firebasestorage.app" } } }

手动安装

安装依赖项
git clone https://github.com/gannonh/firebase-mcp cd firebase-mcp npm install
构建项目
npm run build

测试您的安装

为了确保一切正常,只需提示您的客户: Please run through and test all of your Firebase MCP tools.

特征

身份验证工具

  • auth_get_user :通过 ID 或电子邮件获取用户详细信息
    { identifier: string // User ID or email address }

Firestore 工具

  • firestore_add_document :将文档添加到集合中
    { collection: string, data: object }
  • firestore_list_collections :列出可用的集合
    { documentPath?: string, // Optional parent document path limit?: number, // Default: 20 pageToken?: string // For pagination }
  • firestore_list_documents :列出带有可选过滤的文档
    { collection: string, filters?: Array<{ field: string, operator: string, value: any }>, limit?: number, pageToken?: string }
  • firestore_get_document :获取特定文档
    { collection: string, id: string }
  • firestore_update_document :更新现有文档
    { collection: string, id: string, data: object }
  • firestore_delete_document :删除文档
    { collection: string, id: string }
  • firestore_query_collection_group :查询所有子集合中的文档🆕
    { collectionId: string, // The collection ID to query across all documents filters?: Array<{ // Optional filters field: string, operator: string, // ==, !=, <, <=, >, >=, array-contains, array-contains-any, in, not-in value: any }>, orderBy?: Array<{ // Optional fields to order by field: string, direction?: 'asc' | 'desc' // Default: 'asc' }>, limit?: number, // Maximum documents to return (default: 20, max: 100) pageToken?: string // Token for pagination }

存储工具

  • storage_list_files :列出目录中的文件
    { directoryPath?: string, // Optional path, defaults to root pageSize?: number, // Number of items per page, defaults to 10 pageToken?: string // Token for pagination }
  • storage_get_file_info :获取文件元数据和下载 URL
    { filePath: string // Path to the file in storage }

发展

建筑

npm run build

测试

该项目使用 Vitest 进行测试。可以针对 Firebase 模拟器运行测试,以避免影响生产数据。

  1. 安装 Firebase 模拟器
    npm install -g firebase-tools firebase init emulators
  2. 启动模拟器
    firebase emulators:start
  3. 运行测试
    npm run test:emulator

建筑学

该服务器由三个主要组件组成:

src/ ├── index.ts # Server entry point └── lib/ └── firebase/ ├── authClient.ts # Authentication operations ├── firebaseConfig.ts # Firebase configuration ├── firestoreClient.ts # Firestore operations └── storageClient.ts # Storage operations

每个客户端模块实现特定的 Firebase 服务操作并将其公开为 MCP 工具。

贡献

  1. 分叉存储库
  2. 创建功能分支
  3. 通过测试实施变更(需要 80% 以上的覆盖率才能通过 CI 工作流程)
  4. 提交拉取请求

执照

MIT 许可证 - 详情请参阅许可证文件

相关资源

故障排除

常见问题

“指定的存储桶不存在”错误

如果您在尝试访问 Firebase 存储时遇到此错误:

  1. 检查您的 Firebase 项目是否已启用存储
    • 前往 Firebase 控制台
    • 导航至存储
    • 如果尚未完成初始设置,请完成
  2. 验证存储桶名称是否正确
    • 默认存储桶名称通常为[projectId].appspot.com
    • 有些项目使用[projectId].firebasestorage.app
    • 您可以在 Firebase 控制台的“存储”下找到存储桶名称
  3. 设置FIREBASE_STORAGE_BUCKET环境变量
    • 将正确的存储桶名称添加到您的 MCP 配置中
    • 例如: "FIREBASE_STORAGE_BUCKET": "your-project-id.firebasestorage.app"

“Firebase 未初始化”错误

如果您看到此错误:

  1. 验证您的服务帐号密钥路径
    • 确保SERVICE_ACCOUNT_KEY_PATH中的路径正确且绝对
    • 检查文件是否存在且可读
  2. 检查服务帐户权限
    • 确保服务帐号具有您正在使用的 Firebase 服务的必要权限
    • 对于存储,服务帐户需要存储管理员角色

“此查询需要复合索引”错误

如果在使用firestore_query_collection_group进行过滤或排序时看到此错误:

  1. 按照错误消息中提供的 URL 创建所需的索引
  2. 创建索引后(可能需要几分钟),重试查询
  3. 对于具有多个字段的复杂查询,可能需要创建多个索引

JSON 解析错误

如果您看到有关无效 JSON 的错误:

  1. 确保代码中没有console.log语句
    • 所有日志记录都应使用console.error以避免干扰 JSON 通信
    • MCP 协议使用 stdout 进行 JSON 通信
  2. 检查请求中的语法错误
    • 验证所有参数的格式是否正确
    • 检查字段名称中的拼写错误
ID: x4i8z2xmrq