Skip to main content
Glama
gemini-dk

Firebase MCP Server

by gemini-dk

firestore_list_collections

List collections in Firestore, including root collections or subcollections under a specific document path for database organization.

Instructions

List collections in Firestore. If documentPath is provided, returns subcollections under that document; otherwise returns root collections.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
documentPathNoOptional parent document path
limitNoNumber of collections to return
pageTokenNoToken for pagination to get the next page of results

Implementation Reference

  • The core handler function implementing the firestore_list_collections tool. Lists root or sub-collections in Firestore with pagination.
    export async function list_collections(documentPath?: string, limit: number = 20, pageToken?: string) { try { if (!db) { return { content: [{ type: 'text', text: 'Firebase is not initialized. SERVICE_ACCOUNT_KEY_PATH environment variable is required.' }], isError: true }; } let collections; if (documentPath) { const docRef = db.doc(documentPath); collections = await docRef.listCollections(); } else { collections = await db.listCollections(); } // Sort collections by name collections.sort((a, b) => a.id.localeCompare(b.id)); // Find start index const startIndex = pageToken ? collections.findIndex(c => c.id === pageToken) + 1 : 0; // Apply limit const paginatedCollections = collections.slice(startIndex, startIndex + limit); const projectId = getProjectId(); const collectionData = paginatedCollections.map((collection) => { const collectionUrl = `https://console.firebase.google.com/project/${projectId}/firestore/data/${documentPath}/${collection.id}`; return { name: collection.id, url: collectionUrl }; }); return { content: [{ type: 'text', text: JSON.stringify({ collections: collectionData, nextPageToken: collections.length > startIndex + limit ? paginatedCollections[paginatedCollections.length - 1].id : null, hasMore: collections.length > startIndex + limit }) }] }; } catch (error) { return { content: [{ type: 'text', text: `Error listing collections: ${(error as Error).message}` }], isError: true }; } }
  • The input schema and metadata registration for the firestore_list_collections tool in the ListTools handler.
    { name: 'firestore_list_collections', description: 'List collections in Firestore. If documentPath is provided, returns subcollections under that document; otherwise returns root collections.', inputSchema: { type: 'object', properties: { documentPath: { type: 'string', description: 'Optional parent document path' }, limit: { type: 'number', description: 'Number of collections to return', default: 20 }, pageToken: { type: 'string', description: 'Token for pagination to get the next page of results' } }, required: [] } },
  • src/index.ts:244-249 (registration)
    Tool dispatcher registration in the CallToolRequestHandler switch statement, mapping the tool name to the list_collections handler.
    case 'firestore_list_collections': return list_collections( args.documentPath as string | undefined, args.limit as number | undefined, args.pageToken as string | undefined );
  • src/index.ts:4-4 (registration)
    Import of the list_collections handler function from firestoreClient.
    import { addDocument, getDocument, updateDocument, deleteDocument, listDocuments, list_collections } from './lib/firebase/firestoreClient';

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gemini-dk/mcp-server-firebase'

If you have feedback or need assistance with the MCP directory API, please join our Discord server