Firebase MCP

by gannonh
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Provides integration with Firebase services including Authentication for user management and verification, Firestore for document database operations, and Storage for file storage and retrieval

Servidor MCP de Firebase

Descripción general

El Protocolo de Contexto de Modelo (MCP) es un protocolo abierto que permite a las aplicaciones cliente LLM usar herramientas y acceder a fuentes de datos externas. Este servidor MCP permite que cualquier cliente LLM compatible con el protocolo MCP interactúe con los servicios de Firebase, incluyendo:

  • Autenticación : gestión y verificación de usuarios
  • Firestore : Operaciones de la base de datos de documentos
  • Almacenamiento : almacenamiento y recuperación de archivos

El servidor expone los servicios de Firebase a través de herramientas MCP, haciéndolos accesibles a los clientes LLM, incluidos Claude Desktop , Cursor , Roo Code y Cline , mientras manejan la autenticación y la administración de la conexión.

🔥 Novedades en la versión 1.3.0: Consultas de grupos de colecciones

Firebase MCP ahora permite consultar subcolecciones (grupos de colecciones) en Firestore. Esto permite consultar todas las subcolecciones con el mismo nombre, independientemente de su documento principal, lo que facilita la búsqueda en toda la jerarquía de la base de datos con una sola consulta. Ideal para búsquedas entre documentos, feeds de actividad y paneles unificados.

Configuración

La forma más sencilla de instalar el servidor Firebase MCP es simplemente alimentar a su cliente LLM (como Cline) con el archivo llms-install.md .

1. Configuración de Firebase

  • Ir a la consola de Firebase
  • Vaya a Configuración del proyecto > Cuentas de servicio
  • Haga clic en "Generar nueva clave privada".
  • Guarde el archivo JSON de forma segura

2. Variables de entorno

El servidor requiere las siguientes variables de entorno:

  • SERVICE_ACCOUNT_KEY_PATH : Ruta al archivo JSON de la clave de tu cuenta de servicio de Firebase (obligatorio)
  • FIREBASE_STORAGE_BUCKET : Nombre del depósito para Firebase Storage (opcional)
    • Si no se proporciona, el valor predeterminado es [projectId].appspot.com

3. Instalar el servidor MCP

Agregue la configuración del servidor a su archivo de configuración de MCP:

  • Escritorio de Claude: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Cursor: [project root]/.cursor/mcp.json
  • Código Roo (extensión de VS Code): ( ~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json )
  • Cline (extensión de VS Code): ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

Los servidores MCP se pueden instalar manualmente o en tiempo de ejecución mediante npx (recomendado). La instalación determina la configuración:

Configurar para npx

{ "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" } } }

Configurar para instalación local

{ "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" } } }

Instalación manual

Instalar dependencias
git clone https://github.com/gannonh/firebase-mcp cd firebase-mcp npm install
Construir el proyecto
npm run build

Pruebe su instalación

Para asegurarse de que todo esté funcionando, simplemente solicite a su cliente: Please run through and test all of your Firebase MCP tools.

Características

Herramientas de autenticación

  • auth_get_user : Obtener detalles del usuario por ID o correo electrónico
    { identifier: string // User ID or email address }

Herramientas de Firestore

  • firestore_add_document : Agregar un documento a una colección
    { collection: string, data: object }
  • firestore_list_collections : Lista de colecciones disponibles
    { documentPath?: string, // Optional parent document path limit?: number, // Default: 20 pageToken?: string // For pagination }
  • firestore_list_documents : Lista de documentos con filtrado opcional
    { collection: string, filters?: Array<{ field: string, operator: string, value: any }>, limit?: number, pageToken?: string }
  • firestore_get_document : Obtener un documento específico
    { collection: string, id: string }
  • firestore_update_document : Actualizar un documento existente
    { collection: string, id: string, data: object }
  • firestore_delete_document : Eliminar un documento
    { collection: string, id: string }
  • firestore_query_collection_group : Consulta documentos en todas las subcolecciones 🆕
    { collectionId: string, // The collection ID to query across all documents filters?: Array<{ // Optional filters field: string, operator: string, // ==, !=, <, <=, >, >=, array-contains, array-contains-any, in, not-in value: any }>, orderBy?: Array<{ // Optional fields to order by field: string, direction?: 'asc' | 'desc' // Default: 'asc' }>, limit?: number, // Maximum documents to return (default: 20, max: 100) pageToken?: string // Token for pagination }

Herramientas de almacenamiento

  • storage_list_files : Lista los archivos en un directorio
    { directoryPath?: string, // Optional path, defaults to root pageSize?: number, // Number of items per page, defaults to 10 pageToken?: string // Token for pagination }
  • storage_get_file_info : Obtener metadatos del archivo y URL de descarga
    { filePath: string // Path to the file in storage }

Desarrollo

Edificio

npm run build

Pruebas

El proyecto utiliza Vitest para las pruebas. Las pruebas pueden ejecutarse en emuladores de Firebase para evitar afectar los datos de producción.

  1. Instalar emuladores de Firebase
    npm install -g firebase-tools firebase init emulators
  2. Iniciar emuladores
    firebase emulators:start
  3. Ejecutar pruebas
    npm run test:emulator

Arquitectura

El servidor está estructurado en tres componentes principales:

src/ ├── index.ts # Server entry point └── lib/ └── firebase/ ├── authClient.ts # Authentication operations ├── firebaseConfig.ts # Firebase configuration ├── firestoreClient.ts # Firestore operations └── storageClient.ts # Storage operations

Cada módulo de cliente implementa operaciones de servicio específicas de Firebase y las expone como herramientas MCP.

Contribuyendo

  1. Bifurcar el repositorio
  2. Crear una rama de características
  3. Implementar cambios con pruebas (se requiere una cobertura del 80 % o más para aprobar el flujo de trabajo de CI)
  4. Enviar una solicitud de extracción

Licencia

Licencia MIT: consulte el archivo de LICENCIA para obtener más detalles

Recursos relacionados

Solución de problemas

Problemas comunes

Error "El depósito especificado no existe"

Si encuentra este error al intentar acceder a Firebase Storage:

  1. Comprueba que tu proyecto de Firebase tenga habilitado el almacenamiento
    • Vaya a la consola de Firebase
    • Navegar hasta Almacenamiento
    • Complete la configuración inicial si aún no lo ha hecho
  2. Verifique el nombre del depósito correcto
    • El nombre del depósito predeterminado suele ser [projectId].appspot.com
    • Algunos proyectos usan [projectId].firebasestorage.app en su lugar
    • Puede encontrar el nombre de su depósito en la consola de Firebase en Almacenamiento
  3. Establezca la variable de entorno FIREBASE_STORAGE_BUCKET
    • Agregue el nombre de depósito correcto a su configuración de MCP
    • Ejemplo: "FIREBASE_STORAGE_BUCKET": "your-project-id.firebasestorage.app"

Error "Firebase no se ha inicializado"

Si ve este error:

  1. Verifique la ruta de la clave de su cuenta de servicio
    • Asegúrese de que la ruta en SERVICE_ACCOUNT_KEY_PATH sea correcta y absoluta
    • Compruebe que el archivo existe y es legible
  2. Comprobar los permisos de la cuenta de servicio
    • Asegúrese de que la cuenta de servicio tenga los permisos necesarios para los servicios de Firebase que está utilizando
    • Para el almacenamiento, la cuenta de servicio necesita el rol de administrador de almacenamiento

Error "Esta consulta requiere un índice compuesto"

Si ve este error al usar firestore_query_collection_group con filtros o pedidos:

  1. Siga la URL proporcionada en el mensaje de error para crear el índice requerido
  2. Una vez creado el índice (lo que puede tardar unos minutos), vuelva a intentar su consulta
  3. Para consultas complejas con múltiples campos, es posible que necesite crear varios índices

Errores de análisis de JSON

Si ve errores sobre JSON no válido:

  1. Asegúrese de que no haya declaraciones console.log en el código
    • Todos los registros deben usar console.error para evitar interferir con la comunicación JSON
    • El protocolo MCP utiliza stdout para la comunicación JSON
  2. Comprueba si hay errores de sintaxis en tus solicitudes
    • Verifique que todos los parámetros estén formateados correctamente
    • Compruebe si hay errores tipográficos en los nombres de los campos
ID: x4i8z2xmrq