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 サービスを公開し、認証と接続管理を処理しながら、 Claude DesktopCursorRoo CodeClineなどの LLM クライアントがアクセスできるようにします。

🔥 v1.3.0 の新機能: コレクショングループクエリ

Firebase MCP が Firestore のサブコレクション(コレクショングループ)へのクエリをサポートしました。これにより、親ドキュメントに関係なく、同じ名前を持つすべてのサブコレクションに対してクエリを実行できるようになります。これにより、単一のクエリでデータベース階層全体を簡単に検索できるようになります。ドキュメント間検索、アクティビティフィード、統合ダッシュボードに最適です。

設定

Firebase MCP サーバーをインストールする最も簡単な方法は、LLM クライアント (Cline など) にllms-install.mdファイルを入力するだけです。

1. Firebaseの設定

  • Firebaseコンソールへ移動
  • プロジェクト設定 > サービスアカウントに移動します
  • 「新しい秘密鍵を生成」をクリックします
  • JSONファイルを安全に保存する

2. 環境変数

サーバーには次の環境変数が必要です。

  • SERVICE_ACCOUNT_KEY_PATH : Firebase サービス アカウント キーの JSON ファイルへのパス (必須)
  • FIREBASE_STORAGE_BUCKET : Firebase Storage のバケット名(オプション)
    • 指定されていない場合は、 [projectId].appspot.comがデフォルトになります。

3. MCPサーバーをインストールする

MCP 設定ファイルにサーバー構成を追加します。

  • Claude デスクトップ: ~/Library/Application Support/Claude/claude_desktop_config.json
  • カーソル: [project root]/.cursor/mcp.json
  • Roo Code (VS Code 拡張機能): ( ~/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

建築

サーバーは 3 つの主要コンポーネントで構成されています。

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. テストを使用して変更を実装する(CI ワークフローに合格するには 80% 以上のカバレッジが必要)
  4. プルリクエストを送信する

ライセンス

MITライセンス - 詳細はLICENSEファイルを参照

関連リソース

トラブルシューティング

よくある問題

「指定されたバケットは存在しません」エラー

Firebase Storage にアクセスしようとしたときにこのエラーが発生した場合:

  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ステートメントがないことを確認してください
    • すべてのログはJSON通信の妨害を避けるためにconsole.errorを使用する必要があります。
    • MCPプロトコルはJSON通信にstdoutを使用する
  2. リクエストの構文エラーをチェックする
    • すべてのパラメータが正しくフォーマットされていることを確認する
    • フィールド名に誤字がないか確認する
ID: x4i8z2xmrq