You can use the Firebase MCP server to give AI-powered development tools the ability to work with your Firebase projects. The Firebase MCP server works with any tool that can act as an MCP client, including Claude Desktop, Cline, Cursor, Visual Studio Code Copilot, Windsurf Editor, and more.
An editor configured to use the Firebase MCP server can use its AI capabilities to help you:
- Create and manage Firebase projects
- Manage your Firebase Authentication users
- Work with data in Cloud Firestore and Firebase Data Connect
- Retrieve Firebase Data Connect schemas
- Understand your security rules for Firestore and Cloud Storage for Firebase
- Send messages with Firebase Cloud Messaging
This is only a partial list; see the server capabilities section for a complete list of tools available to your editor.
Before you begin
Install the Firebase CLI. The MCP server is a component of the Firebase CLI, starting with version 14.4.0.
Authenticate the Firebase CLI by running the following command:
firebase login --reauth
The Firebase MCP server uses the CLI to handle authentication with your Firebase projects. You must authenticate with the CLI before using the MCP server. If you try to use the server without signing in, or if your authentication token has expired, the server will print an error message prompting you to reauthenticate.
Set up your MCP client
The Firebase MCP server can work with any MCP client that supports standard I/O (stdio) as the transport medium. Here are specific instructions for some popular tools:
Basic configuration
Claude Desktop
To configure Claude Desktop to use the Firebase MCP server, edit the
claude_desktop_config.json
file. You can open or create this file from the
Claude > Settings menu. Select the Developer tab, then click
Edit Config.
{
"mcpServers": {
"firebase": {
"command": "npx",
"args": ["-y", "firebase-tools", "experimental:mcp"]
}
}
}
Cline
To configure Cline to use the Firebase MCP server, edit the
cline_mcp_settings.json
file. You can open or create this file by clicking the
MCP Servers icon at the top of the Cline pane, then clicking the
Configure MCP Servers button.
{
"mcpServers": {
"firebase": {
"command": "npx",
"args": ["-y", "firebase-tools", "experimental:mcp"],
"disabled": false
}
}
}
Cursor
To configure Cursor to use the Firebase MCP server, edit either the file
.cursor/mcp.json
(to configure only a specific project) or the file
~/.cursor/mcp.json
(to make the MCP server available in all projects):
"mcpServers": {
"firebase": {
"command": "npx",
"args": ["-y", "firebase-tools", "experimental:mcp"]
}
}
Visual Studio Code Copilot
To configure a single project, edit the .vscode/mcp.json
file in your
workspace:
"servers": {
"firebase": {
"type": "stdio",
"command": "npx",
"args": ["-y", "firebase-tools", "experimental:mcp"]
}
}
To make the server available in every project you open, edit your user settings:
"mcp": {
"servers": {
"firebase": {
"type": "stdio",
"command": "npx",
"args": ["-y", "firebase-tools", "experimental:mcp"]
}
}
}
Windsurf Editor
To configure Windsurf Editor, edit the file
~/.codeium/windsurf/mcp_config.json
:
"mcpServers": {
"firebase": {
"command": "npx",
"args": ["-y", "firebase-tools", "experimental:mcp"]
}
}
Optional configuration
In addition to the basic configuration for each client, shown earlier, there are two optional parameters you can specify:
--dir ABSOLUTE_DIR_PATH
: The absolute path of a directory containingfirebase.json
, to set a project context for the MCP server. If unspecified, theget_project_directory
andset_project_directory
tools become available and the default directory will be the working directory where the MCP server was started.--only FEATURE_1,FEATURE_2
: A comma-separated list of feature groups to activate. Use this to limit the tools exposed to only features you are actively using. Note that the core tools are always available
For example:
"firebase": {
"command": "npx",
"args": [
"-y",
"firebase-tools", "experimental:mcp",
"--dir", "/Users/turing/my-project",
"--only", "auth,firestore,storage"
]
}
MCP server capabilities
Tool Name | Feature Group | Description |
---|---|---|
firebase_get_project | core | Retrieves information about the currently active Firebase project. |
firebase_list_apps | core | Retrieves apps registered in the current Firebase project. |
firebase_get_admin_sdk_config | core | Gets the Admin SDK config for the current project. |
firebase_get_sdk_config | core | Retrieves the Firebase SDK configuration information for the specified platform. You must specify either a platform or an app_id. |
firebase_create_project | core | Creates a new Firebase project. |
firebase_create_app | core | Creates a new app in your Firebase project for Web, iOS, or Android. |
firebase_create_android_sha | core | Adds a SHA certificate hash to an existing Android app. |
firebase_get_environment | core | Retrieves information about the current Firebase environment including current authenticated user, project directory, active project, and more. |
firebase_update_environment | core | Updates Firebase environment config such as project directory, active project, active user account, and more. Use firebase_get_environment to see the currently configured environment. |
firebase_init | core | Initializes selected Firebase features in the workspace. All features are optional; provide only the products you wish to set up. You can initialize new features into an existing project directory, but re-initializing an existing feature may overwrite configuration. |
firestore_delete_document | firestore | Deletes a Firestore documents from a database in the current project by full document paths. Use this if you know the exact path of a document. |
firestore_get_documents | firestore | Retrieves one or more Firestore documents from a database in the current project by full document paths. Use this if you know the exact path of a document. |
firestore_list_collections | firestore | Retrieves a list of collections from a Firestore database in the current project. |
firestore_query_collection | firestore | Retrieves one or more Firestore documents from a collection is a database in the current project by a collection with a full document path. Use this if you know the exact path of a collection and the filtering clause you would like for the document. |
firestore_get_rules | firestore | Retrieves the active Firestore security rules for the current project. |
firestore_validate_rules | firestore | Checks the provided Firestore Rules source for syntax and validation errors. Provide EITHER the source code to validate OR a path to a source file. |
auth_get_user | auth | Retrieves a user based on an email address, phone number, or UID. |
auth_disable_user | auth | Disables or enables a user based on a UID. |
auth_list_users | auth | Retrieves all users in the project up to the specified limit. |
auth_set_claim | auth | Sets a custom claim on a specific user's account. Use to create trusted values associated with a user e.g. marking them as an admin. Claims are limited in size and should be succinct in name and value. Specify ONLY ONE OF value or json_value parameters. |
auth_set_sms_region_policy | auth | Sets an SMS Region Policy for Firebase Auth to restrict the regions which can receive text messages based on an ALLOW or DENY list of country codes. This policy will override any existing policies when set. |
dataconnect_list_services | dataconnect | List the Firebase Data Connect services available in the current project. |
dataconnect_get_schema | dataconnect | Retrieve information about the Firebase Data Connect Schema in the project, including Cloud SQL data sources and the GraphQL Schema describing the data model. |
dataconnect_get_connectors | dataconnect | Get the Firebase Data Connect Connectors in the project, which includes the pre-defined GraphQL queries accessible to client SDKs. |
dataconnect_execute_graphql | dataconnect | Executes an arbitrary GraphQL against a Data Connect service or its emulator. |
dataconnect_execute_graphql_read | dataconnect | Executes an arbitrary GraphQL query against a Data Connect service or its emulator. Cannot write data. |
dataconnect_execute_mutation | dataconnect | Executes a deployed Data Connect mutation against a service or its emulator. Can read and write data. |
dataconnect_execute_query | dataconnect | Executes a deployed Data Connect query against a service or its emulator. Cannot write any data. |
storage_get_rules | storage | Retrieves the active Storage security rules for the current project. |
storage_validate_rules | storage | Checks the provided Storage Rules source for syntax and validation errors. Provide EITHER the source code to validate OR a path to a source file. |
storage_get_object_download_url | storage | Retrieves the download URL for an object in Firebase Storage. |
messaging_send_message | messaging | Sends a message to a Firebase Cloud Messaging registration token or topic. ONLY ONE of registration_token or topic may be supplied in a specific call. |
remoteconfig_get_template | remoteconfig | Retrieves a remote config template for the project |
remoteconfig_publish_template | remoteconfig | Publishes a new remote config template for the project |
remoteconfig_rollback_template | remoteconfig | Rollback to a specific version of Remote Config template for a project |
crashlytics_list_top_issues | crashlytics | List the top crashes from crashlytics happening in the application. |