Firebase MCP Server - Model Context Protocol implementation for Firebase services
Firebase MCP has 26 tools with consistent naming (verb_noun pattern) and basic schemas. However, descriptions are generic (avg ~40 chars, well below the 194-char baseline), parameter descriptions lack detail, and output schemas are not documented. Error handling exists but lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Duplicate tools (storage_list_files appears twice with different schemas). Missing idempotency guidance for destructive operations.
Create a new user account
Delete user account
Get a specific user by ID or email
List Firebase Authentication users
Send password reset email
Send email verification
Sign in a user
Descriptions are too short (avg ~40 chars vs 194-char baseline). Most lack context on WHEN to use the tool or WHAT it returns. E.g., 'Sign out the current user' does not explain prerequisites or side effects.
No output schemas documented. LLMs cannot infer what fields to expect from responses. E.g., does auth_create_user return just uid+email, or also displayName, photoURL, createdAt?
Duplicate tool: storage_list_files appears twice (tools 19 and 25) with different parameter schemas (path vs directoryPath, no pageSize in first). LLM will conflate them.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | <=2025-11-25 | v2 |
Sign out the current user
Update user email
Update user password
Update user profile
Add a document to a collection
Batch write operations to Firestore
Delete a document from Firestore
Get a document from Firestore
List collections in Firestore
Query documents in a collection
Update a document in Firestore
Delete a file from storage
Get download URL for a file
Get file information and download URL
Get metadata for a file
List files in a directory
List files in a directory
Update metadata for a file
Upload a file to storage
Destructive tools (auth_delete_user, firestore_delete_document, storage_delete_file) lack confirmation/dry-run patterns. No guidance on idempotency or recovery. Agents may delete data unintentionally.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes without explicit hints.