MCP FirestoreDB
Provides tools for managing Google Cloud Firestore databases, including document CRUD operations, batch operations, collection management, and schema analysis.
Enables interaction with Google Cloud Firestore, offering capabilities for advanced querying, indexing, and schema analysis within Google Cloud.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP FirestoreDBshow schema of users collection"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP FirestoreDB - Google Cloud Firestore MCP Server
A comprehensive Model Context Protocol (MCP) server for Google Cloud Firestore database operations. This server provides 12 powerful tools for document database management, collection operations, and data querying through the MCP protocol.
๐ Quick Start
Prerequisites
Node.js 18+ and npm
Google Cloud Firestore database with service account credentials
MCP-compatible client (Claude Desktop, Cursor IDE, etc.)
๐ฏ Tool Overview
Available Tools (17 Total)
This MCP server provides 17 optimized tools with short, intuitive names for efficient Firestore operations:
๐ Document Operations (5 tools):
create_doc- Create new documentsget_doc- Retrieve specific documentsget_docs- Query multiple documents with filteringupdate_doc- Update existing documentsdelete_doc- Remove documents
๐ Batch Operations (3 tools):
batch_create- Create multiple documents at oncebatch_update- Update multiple documents simultaneouslybatch_delete- Delete multiple documents in batch
๐ Collection Management (4 tools):
list_collections- List all available collectionscollection_stats- Get detailed collection statisticsanalyze_schema- Analyze document schemas and structuredelete_collection- Remove entire collections (with caution)
๐ Index Management (5 tools):
create_index- Generate composite index configurationslist_indexes- Get guidance on listing existing indexesget_index_status- Check index building status and informationparse_index_error- Parse Firestore error messages for index creationgenerate_indexes_config- Generate firestore.indexes.json for deployment
๐ Key Capabilities
Real-time Operations: Direct Firestore database access
Advanced Querying: Filtering, sorting, and pagination support
Batch Processing: High-performance bulk operations
Schema Analysis: Intelligent document structure analysis
Production Ready: Comprehensive error handling and validation
โ๏ธ Configuration
Required Environment Variables
Variable | Description | Example |
| Path to service account JSON file |
|
| Firebase/GCP Project ID |
|
Optional Environment Variables
Variable | Description | Default |
| Firestore database ID |
|
| Firestore emulator host for local development |
|
| Enable debug logging |
|
Installation Options
โญ Option 1: NPM Package (Recommended)
The easiest and most reliable way! No installation or build needed - just configure and use:
{
"mcpServers": {
"firestoredb": {
"command": "npx",
"args": ["-y", "mcpfirestoredb@1.1.2"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account.json",
"FIREBASE_PROJECT_ID": "my-firebase-project",
"FIRESTORE_DATABASE_ID": "(default)"
}
}
}
}Benefits:
โ Always uses the latest stable version
โ No local installation or compilation required
โ Automatic dependency management
โ Works immediately after configuration
โ Bug fixes included (v1.1.1 resolves
__dirnameerror)
Option 2: NPX from GitHub
Use the development version directly from GitHub:
{
"mcpServers": {
"firestoredb": {
"command": "npx",
"args": ["-y", "hendrickcastro/MCPFirestoreDB"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account.json",
"FIREBASE_PROJECT_ID": "my-firebase-project",
"FIRESTORE_DATABASE_ID": "(default)"
}
}
}
}Option 3: Local Development
git clone <your-repo-url>
cd MCPFirestoreDB
npm install && npm run buildThen configure with local path:
{
"mcpServers": {
"mcp-firestoredb": {
"command": "node",
"args": ["path/to/MCPFirestoreDB/dist/server.js"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account.json",
"FIREBASE_PROJECT_ID": "your-project-id"
}
}
}
}๐ ๏ธ Available Tools
MCP FirestoreDB provides 12 comprehensive tools for Google Cloud Firestore operations:
CRUD Operations
1. ๐ Create Document - create_doc
Create a new document in a Firestore collection.
Parameters:
collection_path: Collection path (e.g., "users" or "users/123/orders")document_id: Optional document ID (auto-generated if not provided)data: Document data object
2. ๐ Get Document - get_doc
Retrieve a specific document by ID from a collection.
Parameters:
collection_path: Collection pathdocument_id: Document ID to retrieve
3. ๐ Get Documents - get_docs
Get multiple documents with optional filtering and pagination.
Parameters:
collection_path: Collection pathlimit: Maximum number of documents (default: 100)order_by: Field to order byorder_direction: Order direction ("asc" or "desc")where_conditions: Array of where conditions [field, operator, value]start_after: Document ID for pagination
4. โ๏ธ Update Document - update_doc
Update an existing document in a collection.
Parameters:
collection_path: Collection pathdocument_id: Document ID to updatedata: Data to update (partial update supported)merge: Whether to merge with existing data (default: true)
5. ๐๏ธ Delete Document - delete_doc
Delete a document from a collection.
Parameters:
collection_path: Collection pathdocument_id: Document ID to delete
Batch Operations
6. ๐๐ Batch Create Documents - batch_create
Create multiple documents in a single batch operation.
7. โ๏ธโ๏ธ Batch Update Documents - batch_update
Update multiple documents in a single batch operation.
8. ๐๏ธ๐๏ธ Batch Delete Documents - batch_delete
Delete multiple documents in a single batch operation.
Collection Operations
9. ๐ List Collections - list_collections
List all collections in the Firestore database.
Parameters:
parent_path: Optional parent document path for subcollections
10. ๐ Get Collection Stats - collection_stats
Get statistics about a Firestore collection.
Parameters:
collection_path: Collection pathsample_size: Number of documents to sample (default: 100)
11. ๐๏ธ Analyze Collection Schema - analyze_schema
Analyze the schema of documents in a collection.
Parameters:
collection_path: Collection pathsample_size: Number of documents to sample (default: 100)
12. ๐๏ธ๐ Delete Collection - delete_collection
Delete an entire collection and all its documents (use with caution).
Parameters:
collection_path: Collection path to deletebatch_size: Documents to delete per batch (default: 100)
๐ Usage Examples
Document Operations
// Create a document
const newDoc = await create_doc({
collection_path: "users",
document_id: "user-123",
data: {
name: "John Doe",
email: "john@example.com",
createdAt: new Date()
}
});
// Get a specific document
const document = await get_doc({
collection_path: "users",
document_id: "user-123"
});
// Update a document
const updated = await update_doc({
collection_path: "users",
document_id: "user-123",
data: { lastLogin: new Date() },
merge: true
});Querying Data
// Get documents with filtering
const activeUsers = await get_docs({
collection_path: "users",
where_conditions: [
["status", "==", "active"],
["createdAt", ">", "2024-01-01"]
],
order_by: "createdAt",
order_direction: "desc",
limit: 50
});
// Get documents with pagination
const nextPage = await get_docs({
collection_path: "users",
limit: 10,
start_after: "last-document-id"
});Batch Operations
// Batch create multiple documents
const batchCreate = await batch_create({
operations: [
{
collection_path: "products",
document_id: "prod-1",
data: { name: "Product 1", price: 100 }
},
{
collection_path: "products",
document_id: "prod-2",
data: { name: "Product 2", price: 200 }
}
]
});Collection Analysis
// List all collections
const collections = await list_collections();
// Get collection statistics
const stats = await collection_stats({
collection_path: "users",
sample_size: 1000
});
// Analyze collection schema
const schema = await analyze_schema({
collection_path: "products",
sample_size: 500
});๐ง Configuration Examples
Production Environment:
{
"mcpServers": {
"firestoredb": {
"command": "npx",
"args": ["-y", "mcpfirestoredb@1.1.2"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/production-service-account.json",
"FIREBASE_PROJECT_ID": "my-production-project",
"FIRESTORE_DATABASE_ID": "(default)"
}
}
}
}Development with Emulator:
{
"mcpServers": {
"firestoredb": {
"command": "npx",
"args": ["-y", "mcpfirestoredb@1.1.2"],
"env": {
"FIREBASE_PROJECT_ID": "demo-project",
"FIRESTORE_EMULATOR_HOST": "localhost:8080",
"DEBUG_FIRESTORE": "true"
}
}
}
}Multiple Databases:
{
"mcpServers": {
"firestoredb-main": {
"command": "npx",
"args": ["-y", "mcpfirestoredb@1.1.2"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account.json",
"FIREBASE_PROJECT_ID": "my-project",
"FIRESTORE_DATABASE_ID": "(default)"
}
},
"firestoredb-analytics": {
"command": "npx",
"args": ["-y", "mcpfirestoredb@1.1.2"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account.json",
"FIREBASE_PROJECT_ID": "my-project",
"FIRESTORE_DATABASE_ID": "analytics-db"
}
}
}
}๐จ Troubleshooting
Authentication Issues:
Service account not found: Verify GOOGLE_APPLICATION_CREDENTIALS path
Permission denied: Ensure service account has Firestore permissions
Project not found: Check FIREBASE_PROJECT_ID matches your GCP project
Connection Issues:
Emulator connection failed: Ensure Firestore emulator is running on specified port
Network timeout: Check firewall settings and network connectivity
Database not found: Verify FIRESTORE_DATABASE_ID exists
Query Issues:
Invalid where condition: Check field names and operator syntax
Query timeout: Reduce sample sizes or add more specific filters
Index required: Create composite indexes for complex queries
Firestore Emulator Setup:
Install Firebase CLI:
npm install -g firebase-toolsStart emulator:
firebase emulators:start --only firestoreSet FIRESTORE_EMULATOR_HOST environment variable
Use demo project ID for testing
๐ Index Management Operations
Firestore index management tools help you handle composite indexes efficiently:
Creating Index Configurations
// Generate index configuration for complex queries
{
"collection_path": "users",
"fields": [
{"field": "status", "order": "ASCENDING"},
{"field": "created_at", "order": "DESCENDING"}
]
}Index Error Parsing
// Parse Firestore error messages to extract index creation links
{
"error_message": "The query requires an index. You can create it here: https://console.firebase.google.com/..."
}Index Status Monitoring
// Check index building progress
{
"collection_path": "products",
"index_fields": ["category", "price"]
}Important Notes:
Index creation requires Firebase Console or CLI due to security restrictions
Tools provide configuration generation and guidance for manual creation
Monitor index building status to ensure query performance
Use
firestore.indexes.jsonfor deployment automation
๐งช Development
npm install # Install dependencies
npm run build # Build project
npm test # Run tests
npm start # Development mode๐๏ธ Architecture
Project Structure:
src/
โโโ tools/ # Tool implementations
โ โโโ crudOperations.ts # CRUD operations
โ โโโ collectionOperations.ts # Collection management
โ โโโ indexOperations.ts # Index management operations
โ โโโ types.ts # Type definitions
โ โโโ index.ts # Tool exports
โโโ db.ts # Firestore connection
โโโ server.ts # MCP server setup
โโโ tools.ts # Tool definitionsKey Features:
โก Efficient connection management with optimized performance
๐ก๏ธ Comprehensive error handling and validation
๐ Advanced collection statistics and schema analysis
๐ง Flexible environment-based configuration
๐ High-performance batch operations
๐ Intelligent schema analysis with detailed insights
๐ Advanced querying capabilities with filtering and pagination
๐ฏ Shortened tool names for improved usability
๐ Real-time database operations
๐ Production-ready with extensive testing
๐ Important Notes
Collection Paths: Use forward slashes for nested collections (e.g., "users/123/orders")
Document IDs: Auto-generated if not provided in create operations
Batch Operations: Limited to 500 operations per batch
Security Rules: Ensure proper Firestore security rules are configured
Indexes: Create composite indexes for complex queries
Costs: Monitor Firestore usage to manage costs
๐ค Contributing
Fork the repository
Create feature branch (
git checkout -b feature/name)Make changes and add tests
Ensure tests pass (
npm test)Commit changes (
git commit -m 'Add feature')Push and open Pull Request
๐ License
MIT License - see LICENSE file for details.
๐ท๏ธ Tags & Keywords
Database: firestore google-cloud-firestore nosql document-database database-analysis database-tools google-cloud database-management database-operations data-analysis
MCP & AI: model-context-protocol mcp-server mcp-tools ai-tools claude-desktop cursor-ide anthropic llm-integration ai-database intelligent-database
Technology: typescript nodejs npm-package cli-tool database-client nosql-client database-sdk rest-api json-api database-connector
Features: collection-analysis document-operations batch-operations schema-analysis query-execution database-search data-exploration database-insights crud-operations real-time-database
Use Cases: database-development data-science business-intelligence database-migration schema-documentation performance-analysis data-governance database-monitoring troubleshooting automation
๐ Acknowledgments
๐ฏ MCP FirestoreDB provides comprehensive Google Cloud Firestore database management through the Model Context Protocol. Perfect for developers and data analysts working with Firestore! ๐
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/hendrickcastro/MCPFirestoreDB'
If you have feedback or need assistance with the MCP directory API, please join our Discord server