Firebase MCPサーバーをClaude Codeで使う手順 — Firestore・Authの権限設計
ClaudeからFirebaseを操作する公式MCPサーバーの導入手順と、43個のツールのうち書き込み系をどこまで絞れるか。書き込みを絞る権限設計を解説します。
Firebase MCPサーバーとは何か
ClaudeからFirebaseを操作するなら、Claude Codeではプラグイン経由(claude plugin marketplace add firebase/firebase-toolsのあとclaude plugin install firebase@firebase)か、1行のclaude mcp add firebase npx -- -y firebase-tools@latest mcpで接続できます。Claude Desktopは設定ファイルに同じcommandとargsを書きます。
Firebase MCPサーバーは、Firebaseプロジェクトの操作をAIアシスタントに任せるためのGoogle公式MCPサーバーです。Firebase CLI(firebase-tools)に同梱されていて、Node.jsとnpmがあればnpx firebase-tools@latest mcpで起動できます。
標準入出力(stdio)に対応するMCPクライアントなら接続できます。Claude Code、Claude Desktop、Cursor、VS Code Copilot、Windsurf、Cline、Antigravityが対象です。ツールを呼ぶときの認証は、Firebase CLIと同じ資格情報です。ログイン済みユーザーか、環境によってはApplication Default Credentialsが使われます。
カバー範囲は広く、対象はFirestore・Authentication・Cloud Storage・Crashlyticsです。Cloud Messaging・Remote Config・App Hostingのほか、Realtime DatabaseとCloud Functionsのログも含まれます。
READMEのツール表の内訳
ツール総数
43個
11のFeature Group
core
15個
--onlyに関係なく常に有効
crashlytics
8個
coreを除くと最大
firestore
4個
取得・クエリー・一覧・削除
Claude Codeに接続する
Claude Codeへの導入は2通りあり、プラグイン経由が推奨されています。
プラグインで導入する
- 1
マーケットプレイスを追加する
claude plugin marketplace add firebase/firebase-toolsを実行します。 - 2
プラグインを入れる
claude plugin install firebase@firebaseを実行します。 - 3
入ったことを確かめる
claude plugin marketplace listで、追加したマーケットプレイスが並びます。
プラグインを使わず、MCPサーバーとして直接登録する方法もあります。
claude mcp add firebase npx -- -y firebase-tools@latest mcp
claude mcp listclaude mcp listにfirebase: npx -y firebase-tools@latest mcp - ✓ Connectedと出れば接続できています。Claude Desktopは、claude_desktop_config.jsonに同じcommandとargsを書きます。このファイルは、Claude > Settingsメニューの「Developer」タブで「Edit Config」を押すと開けます。
起動オプション付きで登録すると何が書き出されるか
次の節で説明する--dirと--onlyを付けて、プロジェクトスコープで登録した結果です。空のHOMEに差し替えた作業ディレクトリで、Claude Code v2.1.287を使って実行しました。出力に出たパスは、/Users/you/my-projectという置換例に置き換えています。
claude mcp add --scope project firebase -- npx -y firebase-tools@latest mcp --dir "$PWD" --only auth,firestoreAdded stdio MCP server firebase with command: npx -y firebase-tools@latest mcp --dir /Users/you/my-project --only auth,firestore to project config
File modified: /Users/you/my-project/.mcp.json生成された.mcp.jsonは次のとおりです。--の後ろがそのままargsに入り、typeはstdioになります。
{
"mcpServers": {
"firebase": {
"type": "stdio",
"command": "npx",
"args": ["-y", "firebase-tools@latest", "mcp", "--dir", "/Users/you/my-project", "--only", "auth,firestore"],
"env": {}
}
}
}--scope projectで登録すると、設定はリポジトリ直下の.mcp.jsonに入ります。チーム全員が同じ--onlyで起動する形にできるのは、この方法です。
ただし--dirには登録した人の絶対パスが入るので、そのままコミットすると他のメンバーの環境では存在しないパスになります。.mcp.jsonはargsで${VAR}と${VAR:-default}の環境変数展開に対応しています。チームで設定を共有しつつ、マシンごとのパスを変えられる仕組みです。--dirの値を${VAR}にして各自が環境変数で渡すか、--dir自体を外します。
npxは初回にパッケージを取得するため、起動に時間がかかることがあります。接続がタイムアウトする場合は、環境変数MCP_TIMEOUTでサーバーの起動待ち時間を延ばせます(例: MCP_TIMEOUT=10000 claudeで10秒)。
使えるツールの分類
Firebase MCPサーバーの機能は、Prompts(定型タスクのスラッシュコマンド)・Tools(AIが呼び出す操作)・Resources(ドキュメントの読み込み)の3種です。Toolsが属するFeature Groupのうち、coreは常に有効です。
| Feature Group | できること |
|---|---|
| core | できることプロジェクト・アプリの作成と一覧、ログイン、セキュリティルールの取得と検証、環境の確認と切り替え |
| firestore | できることドキュメントの取得・クエリー・削除、コレクション一覧 |
| auth | できることユーザー検索、有効化と無効化、カスタムクレーム設定、SMSリージョンポリシー設定 |
| realtimedatabase | できることパス単位のデータ読み取りと書き込み |
| storage | できることオブジェクトのダウンロードURL取得 |
| crashlytics | できることクラッシュレポート取得、issueのノート追加と状態更新 |
| dataconnect | できることFirebase SQL Connectのスキーマ検証と、GraphQLのクエリー・ミューテーションの実行 |
| messaging / remoteconfig / apphosting / functions | できることプッシュ通知送信、Remote Config更新、App Hostingのログ取得、Cloud Functionsのログ取得 |
ツール名はバージョンで増減します。手元の環境の正確な一覧はnpx firebase-tools@latest mcp --generate-tool-list、プロンプトの一覧は--generate-prompt-listで出せます。
Firebase以外のGoogleサービスをClaudeに繋ぐ手段もあります。Google Workspace側ならGoogle Drive MCPサーバー、Google Cloud側ならBigQuery連携が別のMCP実装として用意されています。イベントデータをBigQueryへエクスポートしている構成では、両方を併用して分析まで任せる使い方もできます。
本番で怖いのは書き込み系ツール
「読み取りだけ許したい」という要望には、Firebase MCPに専用のフラグがありません。--onlyはFeature Group単位で有効無効を切り替える仕組みだからです。ツール表から書き込み・変更・削除にあたるものを抜き出すと、--onlyで外せるかどうかが分かれます。
書き込み系ツールは--onlyで外せるか
--onlyで外せる
firestore_delete_document、auth_update_user、auth_set_sms_region_policy、realtimedatabase_set_data。
messaging_send_message、remoteconfig_update_template。
crashlytics_create_note、crashlytics_delete_note、crashlytics_update_issue。
dataconnect_executeはmutationも実行できるため、このグループに入ります。
外せない
firebase_create_project、firebase_create_app、firebase_create_android_sha。
firebase_init、firebase_update_environment、firebase_logout。
もう1つ見落としやすい点は、グループ内の粒度です。firestoreグループを有効にすると、取得と一緒にfirestore_delete_documentも使えるようになります。Firestoreに書き込み(作成・更新)のツールは表に無く、変更手段は削除だけです。データを書き換えたいときは、realtimedatabaseグループのrealtimedatabase_set_dataがパスにJSONを書き込みます。
Claude Code側の拒否ルールで個別に外す
グループ単位では粗すぎるとき、Claude Codeの権限設定でツール名を指定して拒否できます。MCPツールの指定はmcp__<サーバー名>__<ツール名>の形です。Claude Codeのドキュメントでは、mcp__puppeteer__puppeteer_navigateのように個別のツールも指定できると説明されています。
{
"permissions": {
"deny": [
"mcp__firebase__firestore_delete_document",
"mcp__firebase__realtimedatabase_set_data",
"mcp__firebase__messaging_send_message"
]
}
}サーバー名はclaude mcp addで付けた名前(ここではfirebase)です。この設定を.claude/settings.jsonに置けば、グループ単位の--onlyと組み合わせて「Firestoreは読めるが消せない」という構成になります。複数人の開発チームで接続できるMCPサーバー自体を制限するなら、Managed MCPの許可リストと併用する構成があります。個人の--only設定に頼らずに済みます。
公開範囲を絞る--dirと--only
起動オプションは2つあります。
--dir ABSOLUTE_DIR_PATH:firebase.jsonがあるディレクトリを絶対パスで指定し、プロジェクトの文脈を固定する--only FEATURE_1,FEATURE_2: 有効にするFeature Groupをカンマ区切りで指定する。coreは常に有効
npx firebase-tools@latest mcp --dir /Users/turing/my-project --only auth,firestore,storage--dirを省くと、サーバーを起動したときの作業ディレクトリが既定のプロジェクトになります。この場合、公式ページの--dirの説明にはget_project_directoryとset_project_directoryの2つのツールが使えるようになると書かれています。一方、同じページのツール表にこの2つは無く、プロジェクトディレクトリを変えるツールとしてfirebase_update_environmentが載っています。現在の環境を確認するfirebase_get_environmentも同じ表にあります。
firebase.jsonが見つからない場合の動きは、GitHubのissue #10525に出力が貼られています。サーバーは「firebase_update_environmentでディレクトリを変えるか、firebase_initで初期化する」という案内を返します。続けて「実行前にユーザーへ確認する」ことも指示しています。複数のプロジェクトを1つの接続で行き来する運用では便利ですが、誤操作を避けたいなら--dirで固定します。
Firestoreとユーザー管理を自然言語で操作する
セットアップ後は、コマンドを覚えなくても自然文で操作できます。「usersコレクションのうちstatusがpendingのドキュメントを一覧して」と頼むと、firestore_query_collectionがフィルタ付きで呼ばれます。「メールアドレスx@example.comのユーザーを無効化して」なら、auth_get_usersで対象を探してからauth_update_userが呼ばれる流れです。
サブコレクションの扱いには注意が要ります。Claude Desktopからサブコレクションを指定してfirestore_query_collectionを呼ぶと、コレクションIDが不正だというエラーになります。GitHubのissue #9698に報告があります。ドキュメントIDが分かっているなら、firestore_get_documentsで完全なパスを指定する方法があります。サブコレクション全体の絞り込みは、この方法では代替できません。
セキュリティルールは、定型プロンプトの/firestore:generate_security_rulesでルール案とユニットテストを生成できます。生成物は自分で読んでから、firebase_validate_security_rulesで構文を検証します。
Crashlyticsの障害調査に使う
Crashlyticsのツールは、調査の流れをそのままなぞれます。「直近の未解決issueを重大度順に見せて」と頼むとcrashlytics_get_reportが集計を返します。個別のissueはcrashlytics_get_issueとcrashlytics_list_eventsで追えます。crashlytics_create_noteで調査メモをissueに残せます。
イベントのスタックトレースは、20フレームで切り詰められるという報告があります。深いフレームワークのスタックだと、デバッグに必要な部分が省かれます(GitHubのissue #11027)。トレースが途中で終わっていたら、Crashlyticsのコンソールで全体を確認してください。
Realtime DatabaseとRemote Configも同じ流れで操作する
Realtime Databaseは、realtimedatabase_get_dataで読み、realtimedatabase_set_dataでパスを指定してJSONを書き込みます。パス単位の操作なので、書き込み先を具体的に指示するほど誤操作は減ります。
Remote Configは、remoteconfig_get_templateで配信中のテンプレートを取得します。remoteconfig_update_templateでは、新しいテンプレートの公開や過去版へのロールバックができます。App Hostingのバックエンド一覧とログは、apphosting_list_backendsとapphosting_fetch_logsで参照できます。Cloud Functionsのログはfunctions_get_logsです。
SupabaseのMCPサーバーとの違い
どちらも「マネージドなバックエンドをAIアシスタントから操作する」点は同じですが、認証と権限の絞り方が違います。
| 観点 | Firebase MCP | Supabase MCP |
|---|---|---|
| データモデル | Firebase MCPFirestore(NoSQL)+ Realtime Database | Supabase MCPPostgreSQL(SQLリレーショナル) |
| 接続方式 | Firebase MCPローカルstdio(npxで起動) | Supabase MCPリモートHTTP(mcp.supabase.com)+ OAuth |
| 読み取り専用モード | Firebase MCP専用フラグなし(--onlyはグループ単位) | Supabase MCPread_only=trueで書き込み系ツールを除外 |
| 認証情報 | Firebase MCPFirebase CLIの資格情報を継承 | Supabase MCPブラウザ経由のOAuthでSupabaseアカウントに紐づく |
ローカルで動くとはいえ、Firestoreのツールの一部は、クラウド上のリモートMCPサーバーやバックエンドへリクエストを中継します。ネットワークに出ない構成ではありません。
導入でつまずきやすいポイント
Gemini in Firebaseを使うツール(SQL Connectのスキーマ生成とFirebaseへの相談)の出力は、READMEが「もっともらしいが事実と異なることがある」と注意しています。生成したコードを未検証で本番に入れず、個人情報やユーザーデータも入力しないよう書かれています。
認証エラーが出たら、まずfirebase_loginツールでログイン状態を確認します。このツールはログインと状態確認の両方を担います。
まとめ
ツールの権限は2層で絞ります。グループ単位は--only、書き込みツール単位はClaude Codeのpermissions.denyです。coreの作成系ツールは--onlyで外れないので、本番プロジェクトに繋ぐ前に、何が常に残るかを表で確かめておくと安心です。
よくある質問
Firebase MCPサーバーとFirebase agent skillsは何が違うか
MCPサーバーはFirebaseを操作するツールの窓口で、agent skillsはそのツールの使い方をAIに教える手順知識です。公式ページの説明では、複雑なタスクにはスキルが向きます。Authentication・Firestore・Firebase AI Logicの設定や、Hostingへのデプロイが例です。/firebase:initや/firebase:deployのプロンプトより、案内が整っていて効率的だとされています。
Firebase Studioでも同じMCPサーバーを使えるか
既存のワークスペースなら使えます。設定ファイルの場所が.idx/mcp.jsonになるだけで、commandとargsはClaude Code向けと同じです。ただしFirebase Studioは廃止が決まっており、公式ドキュメントのメニューにも「deprecated」と表示されています。2026年6月22日以降は新規ワークスペースの作成と新規サインアップが止まり、2027年3月22日にサービスが終了します。