mcpField
F
firebase-mcp-server

firebase-mcp-server

ローカル
dasasian.comクラウド・インフラ010 週間前に更新

firebase-mcp-server について

firebase-mcp-serverは、Firebaseを使う開発者向けに、Firestore、Storage、Auth、Cloud FunctionsログのMCPツールを提供します。スキーマ検証やコレクション検出に対応し、スキーマなしのデータ探索も行えます。

主な機能

  1. 01Firestoreドキュメントの検索・操作
  2. 02Storageファイルの管理
  3. 03Firebase Authユーザーの管理
  4. 04スキーマ検証とコレクション検出
  5. 05Cloud Functionsログの検索
  6. 06MCPツールグループの選択

活用シーン

  1. 01スキーマに照らしてFirestoreデータを検証
  2. 02未知のデータベースのコレクションを探索
  3. 03Firebaseユーザーと保存ファイルを管理
  4. 04関数ログの絞り込みと集計

MCP 対応

Firestore、Storage、Auth、ログのツールをMCPクライアントに公開し、ツールグループを選択できます。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 License: MIT Model Context Protocol server Node 18+

Firebase(Firestore、Storage、Auth、Functions Logging)向けの汎用 Model Context Protocol(MCP)サーバーです。スキーマ駆動の検証と、コンテキスト効率に優れたツールを備えています。

機能

  • @ メンション対応 - @firebase:firestore://users/user-123 を使って Firestore ドキュメントを参照できます
  • スマートオートコンプリート - MRU キャッシュがアクセスしたドキュメントを追跡し、素早く再参照できます
  • 自動検出 - スキーマベースのコレクションと検出されたコレクションの両方を表示します
  • パスベースのスキーマ - Firebase の firestore.rules の規約に従います
  • スキーマの進化 - フィールドのステータスメタデータ(experimental → official → legacy)
  • ホットリロード - ファイルの変更を監視するため、スキーマ変更時に再起動は不要です
  • 柔軟な検証 - 3 つのモード:strict、warn(デフォルト)、permissive
  • スキーマなしでも動作 - 未知のデータベースを調べるための検出モード
  • コンテキスト効率に優れたツール - 大規模なデータセットでトークンを 99% 削減します
  • インデックス対応クエリ - firestore.indexes.json に照らしてクエリを検証します
  • Functions のログ - Cloud Functions のログに対する、集計とラベルフィルタリングに対応した SQL 形式のクエリ

インストール

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 と入力すると:

スキーマベースのコレクションが表示されます(検証あり):

  • 📋 Users(ユーザーアカウントのドキュメント)
  • 📋 Posts(ブログ投稿のドキュメント)
  • 📋 Comments(投稿へのコメント)

さらに、自動検出されたコレクションも表示されます(スキーマなし):

  • 🔍 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/日(わずかです)

ツール

サーバーには 4 つのグループに分かれた 33 個のツールが含まれています。すべてのツールで MCP アノテーション (readOnlyHint、destructiveHint、idempotentHint、openWorldHint)が宣言されているため、クライアントは読み取りを 自動承認し、書き込みの前に確認を求めることができます。

読み込むツールの選択

33 個すべてのツール定義を読み込むと、毎回のセッションで約 12k トークンのコンテキストを消費します。 必要な機能が一部だけの場合は、対象を絞り込めます。

# 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 フラグは環境変数より優先されます。どちらも設定しない場合はすべてのツールが読み込まれるため、 アップグレードしても、すでに使用しているツールが利用できなくなることはありません。無効にしたグループのツールを呼び出すと、 追加すべきグループ名を示すエラーが返されます。

グループツール数約トークン数
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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。