A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/gannonh/firebase-mcp below:

gannonh/firebase-mcp: 🔥 Model Context Protocol (MCP) server for Firebase.

Firebase MCP enables AI assistants to work directly with Firebase services, including:

The server works with MCP client applicatios such as Claude Desktop, Augment Code, VS Code, and Cursor.

⚠️ Known Issue: The firestore_list_collections tool may return a Zod validation error in the client logs. This is an erroneous validation error in the MCP SDK, as our investigation confirmed no boolean values are present in the response. Despite the error message, the query still works correctly and returns the proper collection data. This is a log-level error that doesn't affect functionality.

Add the server configuration to your MCP settings file:

MCP Servers can be installed manually or at runtime via npx (recommended). How you install determines your configuration:

Configure for npx (recommended)
{
  "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"
    }
  }
}
Configure for local installation
{
  "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"
    }
  }
}

Ask your AI client: "Please test all Firebase MCP tools."

🛠️ Setup & Configuration 1. Firebase Configuration
  1. Go to Firebase Console → Project Settings → Service Accounts
  2. Click "Generate new private key"
  3. Save the JSON file securely

Edit: ~/Library/Application Support/Claude/claude_desktop_config.json

Edit: ~/Library/Application Support/Code/User/settings.json

Edit: [project root]/.cursor/mcp.json

Tool Description Required Parameters firestore_add_document Add a document to a collection collection, data firestore_list_documents List documents with filtering collection firestore_get_document Get a specific document collection, id firestore_update_document Update an existing document collection, id, data firestore_delete_document Delete a document collection, id firestore_list_collections List root collections None firestore_query_collection_group Query across subcollections collectionId Tool Description Required Parameters storage_list_files List files in a directory None (optional: directoryPath) storage_get_file_info Get file metadata and URL filePath storage_upload Upload file from content filePath, content storage_upload_from_url Upload file from URL filePath, url Tool Description Required Parameters auth_get_user Get user by ID or email identifier
git clone https://github.com/gannonh/firebase-mcp
cd firebase-mcp
npm install
npm run build

First, install and start Firebase emulators:

npm install -g firebase-tools
firebase init emulators
firebase emulators:start

Then run tests:

# Run tests with emulator
npm run test:emulator

# Run tests with coverage
npm run test:coverage:emulator
src/
├── index.ts                  # Server entry point
├── utils/                    # Utility functions
└── lib/
    └── firebase/              # Firebase service clients
        ├── authClient.ts     # Authentication operations
        ├── firebaseConfig.ts   # Firebase configuration
        ├── firestoreClient.ts # Firestore operations
        └── storageClient.ts  # Storage operations

Firebase MCP now supports HTTP transport in addition to the default stdio transport. This allows you to run the server as a standalone HTTP service that can be accessed by multiple clients.

Running with HTTP Transport

To run the server with HTTP transport:

# Using environment variables
MCP_TRANSPORT=http MCP_HTTP_PORT=3000 node dist/index.js

# Or with npx
MCP_TRANSPORT=http MCP_HTTP_PORT=3000 npx @gannonh/firebase-mcp
Client Configuration for HTTP

When using HTTP transport, configure your MCP client to connect to the HTTP endpoint:

{
  "firebase-mcp": {
    "url": "http://localhost:3000/mcp"
  }
}

The HTTP transport supports session management, allowing multiple clients to connect to the same server instance. Each client receives a unique session ID that is used to maintain state between requests.

If you see "The specified bucket does not exist" error:

  1. Verify your bucket name in Firebase Console → Storage
  2. Set the correct bucket name in FIREBASE_STORAGE_BUCKET environment variable
Firebase Initialization Failed

If you see "Firebase is not initialized" error:

  1. Check that your service account key path is correct and absolute
  2. Ensure the service account has proper permissions for Firebase services

If you receive "This query requires a composite index" error:

  1. Look for the provided URL in the error message
  2. Follow the link to create the required index in Firebase Console
  3. Retry your query after the index is created (may take a few minutes)
Zod Validation Error with firestore_list_collections

If you see a Zod validation error with message "Expected object, received boolean" when using the firestore_list_collections tool:

⚠️ Known Issue: The firestore_list_collections tool may return a Zod validation error in the client logs. This is an erroneous validation error in the MCP SDK, as our investigation confirmed no boolean values are present in the response. Despite the error message, the query still works correctly and returns the proper collection data. This is a log-level error that doesn't affect functionality.

To help diagnose issues, you can enable file logging:

# Log to default location (~/.firebase-mcp/debug.log)
DEBUG_LOG_FILE=true npx @gannonh/firebase-mcp

# Log to a custom location
DEBUG_LOG_FILE=/path/to/custom/debug.log npx @gannonh/firebase-mcp

You can also enable logging in your MCP client configuration:

{
  "firebase-mcp": {
    "command": "npx",
    "args": ["-y", "@gannonh/firebase-mcp"],
    "env": {
      "SERVICE_ACCOUNT_KEY_PATH": "/path/to/serviceAccountKey.json",
      "FIREBASE_STORAGE_BUCKET": "your-project-id.firebasestorage.app",
      "DEBUG_LOG_FILE": "true"
    }
  }
}

To view logs in real-time:

# Using tail to follow the log file
tail -f ~/.firebase-mcp/debug.log

# Using a split terminal to capture stderr
npm start 2>&1 | tee logs.txt

The MCP Inspector provides interactive debugging:

# Install MCP Inspector
npm install -g @mcp/inspector

# Connect to your MCP server
mcp-inspector --connect stdio --command "node ./dist/index.js"
Storage Upload Response Example
{
  "name": "reports/quarterly.pdf",
  "size": "1024000",
  "contentType": "application/pdf",
  "updated": "2025-04-11T15:37:10.290Z",
  "downloadUrl": "https://storage.googleapis.com/bucket/reports/quarterly.pdf?alt=media",
  "bucket": "your-project.appspot.com"
}

Displayed to the user as:

## File Successfully Uploaded! 📁

Your file has been uploaded to Firebase Storage:

**File Details:**
- **Name:** reports/quarterly.pdf
- **Size:** 1024000 bytes
- **Type:** application/pdf
- **Last Updated:** April 11, 2025 at 15:37:10 UTC

**[Click here to download your file](https://storage.googleapis.com/bucket/reports/quarterly.pdf?alt=media)**
  1. Fork the repository
  2. Create a feature branch
  3. Implement changes with tests (80%+ coverage required)
  4. Submit a pull request

MIT License - see LICENSE file for details


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4