MCP Firebase サーバー (モデル コンテキスト プロトコル)
このサーバーは、モデルコンテキストプロトコル(MCP)を実装し、Claudeのような大規模言語モデル(LLM)とFirebase(Firestore)間のブリッジとして機能します。MCPの「ツール」としてこれらの操作を公開することで、LLMはFirestoreコレクションの読み取りと書き込みが可能になります。
このサーバーは、公式のmcp
Python SDK を使用して構築されています。
前提条件
- Python 3.7 以上 (MCP で使用される
asynccontextmanager
と完全な型ヒント機能には 3.8 以上が推奨) - Pip (Python パッケージ インストーラー) または
uv
(プロジェクト管理用の MCP ドキュメントで推奨) - Firestore が有効になっている Firebase プロジェクト。
- Firebase サービス アカウント キーの JSON ファイル。
設定
- **クローン/ダウンロード:**ローカル ディレクトリにサーバー ファイル (
mcp_firebase_server.py
)、requirements.txt
などがあることを確認します。 - サービスアカウントキー:
- サーバーを認証するには、Firebase サービス アカウント キーが必要です。
- オプション1(MCPクライアント構成に推奨):
SERVICE_ACCOUNT_KEY_PATH
環境変数を、サービスアカウントJSONファイルの絶対パスに設定します。これは、サーバーがMCPクライアントによって起動される場合に最も柔軟な方法です。 - オプション2(フォールバック):
SERVICE_ACCOUNT_KEY_PATH
環境変数が設定されていない場合、サーバーは自身のディレクトリ(mcp_firebase_server.py
と同じディレクトリ)にあるserviceAccountKey.json
というファイルを探します。この方法を使用する場合は、キーファイルの名前を適宜変更してください。 - **重要:**サービス アカウント キー ファイル (名前やアクセス方法に関係なく) が安全に保管され、プロジェクトにローカル コピーが存在する場合は
.gitignore
にリストされていることを確認してください。
- Firebase ストレージ バケット (オプション):
- このサーバーでFirebase Storage機能を使用する場合(現在、これを使用するツールはありませんが、将来追加することは可能です)、環境変数
FIREBASE_STORAGE_BUCKET
Firebaseプロジェクトのストレージバケット名(例:your-project-id.appspot.com
)に設定してください。設定されている場合、サーバーはこの値を読み取り、出力します。
- このサーバーでFirebase Storage機能を使用する場合(現在、これを使用するツールはありませんが、将来追加することは可能です)、環境変数
- 仮想環境を作成する(推奨):
venv
を使用する:または、uv
を使用する場合(新しいプロジェクト用の MCP ドキュメントで推奨されているとおり): - 依存関係のインストール:
pip
の使用:または、uv
を使用する場合:これによりmcp[cli]
とfirebase-admin
がインストールされます。
サーバーの実行
この MCP サーバーを実行するには、いくつかの方法があります。
- **直接実行(
run_server.sh
経由のstdioトランスポート用):**サーバーの起動を簡素化するために、run_server.sh
スクリプトが提供されています。このスクリプトは、Pythonスクリプトを実行する前に、仮想環境(venv
という名前でプロジェクトルートに存在する場合)の有効化を処理します。まず、スクリプトを実行可能にします。次に、スクリプトを使用してサーバーを実行します。これは、MCP クライアントがサーバーを起動するために通常構成される方法です (以下の「Claude での使用」セクションを参照)。 - **開発と検査のためのMCP CLIの使用(
mcp dev
):mcp
CLI(mcp[cli]
の一部としてインストールされます)は、開発サーバーと検査ツールを提供します。開発中はこれを強くお勧めします。これによりサーバーが起動し、多くの場合、その機能 (ツール、リソース) を検査したりテスト呼び出しを行うための Web インターフェイスが提供されます。
MCPツールの公開
MCPFirebaseServer
という名前のこのサーバーは、次のツールを公開します。
1. query_firestore_collection
- **説明 (docstring から):**指定された Firestore コレクションからドキュメントを取得します。
- 引数:
collection_name
(文字列、必須): クエリする Firestore コレクションの名前。limit
(整数、オプション、デフォルト: 50): 返されるドキュメントの最大数。
- 戻り値: (List[Dict[str, Any]]) コレクション内のドキュメントのリスト。各ドキュメントは
id
フィールドを含む辞書です。エラーが発生した場合は、単一のエラー辞書を含むリストを返します(例:[{"error": "Firestore not initialized..."}]
または[{"error": "Failed to query..."}]
)。
2. add_document_to_firestore
- **説明 (docstring から):**自動生成された ID を持つ新しいドキュメントを、指定された Firestore コレクションに追加します。
- 引数:
collection_name
(文字列、必須): ドキュメントを追加する Firestore コレクションの名前。document_data
(オブジェクト/辞書、必須): 追加するドキュメントを表す辞書。
- 戻り値: (Dict[str, Any]) 成功の場合は
success
(boolean) とid
(string) およびmessage
(string)、失敗の場合はerror
(string) を含む辞書。成功例:{"success": True, "id": "newDocId", "message": "Document added to 'logs'"}
失敗例:{"success": False, "error": "Firestore not initialized..."}
Claude (または他の MCP クライアント) と併用する
このMCP Firebaseサーバーは、別プロセスとして実行されるように設計されており、通常はMCPクライアントアプリケーション(Claude Desktopや、MCPサーバーを管理できるWindsurfなどのプラットフォームで構築されたカスタムアプリケーションなど)によって起動されます。クライアントは、通常、ローカルで実行されるサーバーの場合はstdio
(標準入出力)を介してこのサーバーと通信します。
一般的な統合手順:
- サーバーの可用性: MCP クライアントが実行されるシステムまたはプロセスを起動できるシステムで、
mcp_firebase_server.py
とその依存関係 (serviceAccountKey.json
を含む) にアクセスできることを確認します。 - クライアント設定: MCPクライアントアプリケーションは、
MCPFirebaseServer
の起動方法を設定する必要があります。この設定では通常、以下の項目を指定します。- 実行するコマンド(例:
python
またはuv run python
)。 - そのコマンドの引数(例:
mcp_firebase_server.py
へのパス)。 - オプションで、サーバーが必要とする可能性のある環境変数(現在のサーバーでは、同じディレクトリに
serviceAccountKey.json
あることを想定していますが、キー パスの環境変数を使用することもできます)。
- 実行するコマンド(例:
- 打ち上げとコミュニケーション:
- MCP クライアントがこのサーバーが提供するツールを使用する必要がある場合、設定されたコマンドを使用して
mcp_firebase_server.py
を起動します。 - その後、クライアントとサーバーはMCPプロトコル(例:
stdio
経由)を介して通信します。クライアントは利用可能なツール(query_firestore_collection
、add_document_to_firestore
)を検出し、それらを呼び出すことができます。
- MCP クライアントがこのサーバーが提供するツールを使用する必要がある場合、設定されたコマンドを使用して
概念的な構成例 (Claude Desktop のような MCP クライアントの場合):
MCP対応クライアントアプリケーション(MCPドキュメントに記載されているClaude Desktopなど)の多くは、MCPサーバーの起動と管理方法を定義するために構成ファイル(多くの場合JSON形式)を使用します。具体的な形式はクライアントによって異なる場合がありますが、基本的な考え方はほぼ同じです。
以下は、MCPドキュメントに記載されているパターンに基づいた概念的な例です。選択したMCPクライアント(Claude Desktop、Windsurfなど)の特定の設定メカニズムに合わせて調整する必要があります。
構成の重要なポイント:
"command"
: 実行する実行ファイル(例:python
)。システムのPATHに含まれていることを確認するか、Pythonインタープリターへのフルパスを指定してください。"args"
: 引数のリスト。最初の引数は通常、実行するスクリプトです。クライアントがどこから起動されたかに関係なく、クライアントがmcp_firebase_server.pyを見つけられるように、mcp_firebase_server.py
への絶対パスを指定することが重要です。"cwd"
(現在の作業ディレクトリ) : 場合によっては、サーバー プロセスの作業ディレクトリを指定する必要があることがあります。特に、他のファイルへの相対パスに依存している場合です (ただし、serviceAccountKey.json
パスはスクリプト自体に対する相対パスであるため、スクリプト パスが絶対パスであれば通常は堅牢です)。"env"
: 環境変数を渡します。現在のサーバーでは、serviceAccountKey.json
自身のパスを基準に検索しますが、より柔軟な設定が可能なサーバーでは、資格情報パスやその他の設定を環境変数経由で渡すのが一般的です。
インタラクションフロー(要約):
- クライアントがサーバーを起動します: MCP クライアント (上記の構成を使用) は
mcp_firebase_server.py
を起動します。 - **サーバーの初期化:**サーバーは Firebase への接続を試みます。
- **ツールの検出と呼び出し:**クライアントは必要に応じて
query_firestore_collection
やadd_document_to_firestore
などのツールを検出して呼び出します。 - **サーバーの応答:**結果は
stdio
経由でクライアントに送り返されます。
Claude Desktop または Windsurf の具体的な手順:
- Claude Desktop: Claude Desktop をご利用の場合は、カスタム MCP サーバーの追加と設定方法については、ドキュメントをご覧ください。上記の JSON 構造は、一般的なパターンとして適用できます。
- Windsurf: Windsurf がオーケストレーターとして利用されており、MCP サーバーの管理をサポートしている場合、これらの外部ツールサーバーの定義と起動には独自の方法があります。詳細については Windsurf のドキュメントを参照する必要がありますが、コア情報(コマンド、
mcp_firebase_server.py
を実行するための引数)は同じです。
クライアントに専用の MCP サーバー管理 UI/構成ファイルがなく、シェル コマンドを実行して stdio 経由で対話できる場合は、プログラムでmcp_firebase_server.py
スクリプトを起動し、MCP クライアント ライブラリ ( mcp.client.stdio
にあるものなど) を使用して通信します。
開発とテスト
mcp dev mcp_firebase_server.py
を使用して、MCP Inspector でサーバーを実行します。これにより、検出されたツールを確認し、インタラクティブにテストできます。serviceAccountKey.json
が正しく配置されているか、または MCP クライアントによってサーバーが起動されたときにSERVICE_ACCOUNT_KEY_PATH
環境変数が設定されていることを確認します。- サーバーのコンソール出力で、Firebase 初期化メッセージとランタイム エラーを確認します。
run_server.sh
スクリプト:
プロジェクト ルートのrun_server.sh
スクリプトは、次の目的で設計されています。
- 独自の場所を決定し、現在のディレクトリをそこに変更します。
- プロジェクト ルートに
venv
という名前の Python 仮想環境が存在する場合は、それを見つけてアクティブ化します。 python
インタープリター (アクティブ化された venv から実行するのが理想的) を使用して、mcp_firebase_server.py
スクリプトを実行します。
このスクリプトは、MCPサーバーが意図した環境で実行されることを保証します。実行可能ファイル( chmod +x run_server.sh
)を作成してください。
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
モデル コンテキスト プロトコル (MCP) ツールを通じて、大規模言語モデルが Firebase Firestore コレクションを読み書きできるようにするブリッジ。
Related MCP Servers
- AsecurityAlicenseAqualityProvides integration between Genkit and the Model Context Protocol (MCP).Last updated -65262,469TypeScriptApache 2.0
- AsecurityAlicenseAqualityA powerful Model Context Protocol (MCP) tool for exploring and managing different types of databases including PostgreSQL, MySQL, and Firestore.Last updated -93TypeScriptMIT License
MCP TapData Serverofficial
-securityFlicense-qualityA Model Context Protocol server that enables Large Language Models to access and interact with database connections, including viewing schemas and performing CRUD operations on connected databases.Last updated -- -securityFlicense-qualityA Model Context Protocol server that enables large language models to interact directly with Couchbase databases through natural language, supporting operations like querying buckets, performing CRUD operations, and executing N1QL queries.Last updated -286TypeScript