firestore-operations-manager
Manages Firebase/Firestore operations including CRUD, queries, batch processing, A2A agent communication, MCP server integration, and Cloud Run service coordination. Activates when you request "firestore operations", "create firestore document", "query firestore", "A2A agent communication", "MCP server setup", "agent-to-agent messaging", or "Cloud Run firestore integration". Handles both basic database operations for regular users and advanced A2A framework patterns for AI agents.
Install
mkdir -p .claude/skills/firestore-operations-manager && curl -L -o skill.zip "https://mcp.directory/api/skills/download/7715" && unzip -o skill.zip -d .claude/skills/firestore-operations-manager && rm skill.zipInstalls to .claude/skills/firestore-operations-manager
About this skill
Firestore Operations Manager
Overview
This skill manages Firebase/Firestore operations for both regular web/mobile applications and AI agent-to-agent (A2A) frameworks. It handles:
- Basic Operations: CRUD, queries, batch processing for standard applications
- A2A Framework: Agent-to-agent communication patterns using Firestore as state store
- MCP Integration: Model Context Protocol server communication via Firestore
- Cloud Run Services: Integration patterns for Cloud Run services accessing Firestore
- Security: Proper authentication, validation, and security rules for both humans and agents
Core Capabilities
For Everyone (Basic Firestore)
- Create, read, update, delete documents
- Complex queries with filters and ordering
- Batch operations for efficiency
- Collection management and organization
- Security rules generation and validation
- Data migrations and transformations
For AI Power Users (A2A/MCP)
- Agent session management with Firestore state
- Agent-to-agent messaging and task coordination
- MCP server communication patterns
- Agent memory and context storage
- Cloud Run service integration
- Multi-agent workflow orchestration
When to Use This Skill
This skill activates when users mention:
- Basic operations: "create a firestore document", "query users collection", "batch update documents"
- A2A patterns: "setup agent communication", "A2A task queue", "agent-to-agent messaging"
- MCP integration: "MCP server firestore", "agent memory storage", "session management"
- Cloud Run: "Cloud Run firestore integration", "service account access"
- Security: "firestore security rules", "agent authentication", "service account permissions"
Workflow
Phase 1: Setup and Initialization
For basic users:
- Check if Firebase Admin SDK is installed
- Guide through credential setup (service account JSON)
- Initialize Firestore connection
- Run connection test
- Create basic usage examples
For A2A/MCP users:
- Perform basic setup (above)
- Install additional dependencies (@google-cloud/firestore)
- Create A2A collection structure (sessions, memory, tasks, messages, logs)
- Configure service account whitelisting
- Setup security rules for agent access
- Create MCP service wrapper classes
Example setup:
# Basic setup
npm install firebase-admin
# A2A/MCP setup
npm install firebase-admin @google-cloud/firestore dotenv
# Set credentials
export GOOGLE_APPLICATION_CREDENTIALS="./serviceAccountKey.json"
# Run setup command
/firestore-setup
Phase 2: Basic CRUD Operations
For standard database operations:
Create documents:
const { db, admin } = require('./src/firebase');
// Single document
await db.collection('users').add({
name: 'John Doe',
email: '[email protected]',
createdAt: admin.firestore.FieldValue.serverTimestamp()
});
// With custom ID
await db.collection('users').doc('user123').set({
name: 'Jane Doe',
email: '[email protected]'
});
Read documents:
// Single document
const doc = await db.collection('users').doc('user123').get();
const userData = doc.data();
// Query
const snapshot = await db.collection('users')
.where('status', '==', 'active')
.orderBy('createdAt', 'desc')
.limit(10)
.get();
snapshot.forEach(doc => console.log(doc.data()));
Update documents:
// Partial update
await db.collection('users').doc('user123').update({
status: 'active',
updatedAt: admin.firestore.FieldValue.serverTimestamp()
});
// Increment counter
await db.collection('stats').doc('views').update({
count: admin.firestore.FieldValue.increment(1)
});
Delete documents:
// Single delete
await db.collection('users').doc('user123').delete();
// Batch delete
const batch = db.batch();
const docs = await db.collection('temp').limit(500).get();
docs.forEach(doc => batch.delete(doc.ref));
await batch.commit();
Phase 3: A2A Framework Operations
For agent-to-agent communication patterns:
1. Create Agent Session:
const { MCPService } = require('./src/mcp-service');
const mcp = new MCPService('mcp-server@project.iam.gserviceaccount.com');
// Create session for agent workflow
const sessionId = await mcp.createSession({
task: 'process_user_data',
priority: 'high',
metadata: { userId: 'user123' }
});
console.log(`Session created: ${sessionId}`);
2. Store Agent Context:
// Store agent memory/context in Firestore
await mcp.storeContext(sessionId, {
conversation: [...messages],
userPreferences: { theme: 'dark' },
currentStep: 'data_validation'
});
// Retrieve context later
const context = await db
.collection('agent_memory')
.doc('mcp-server@project.iam.gserviceaccount.com')
.collection('contexts')
.doc(sessionId)
.get();
3. Agent-to-Agent Messaging:
// Send message from one agent to another
await mcp.sendMessage(
'agent-engine@project.iam.gserviceaccount.com',
{
action: 'analyze_data',
data: { userId: 'user123', fields: ['name', 'email'] }
}
);
// Receive messages (in receiving agent)
const messages = await mcp.receiveMessages();
messages.forEach(msg => {
console.log(`From: ${msg.from}, Payload:`, msg.payload);
});
4. Task Queue Management:
// Create task for another agent
await db.collection('a2a_tasks').add({
taskType: 'data_processing',
assignedTo: 'worker-agent@project.iam.gserviceaccount.com',
status: 'pending',
priority: 1,
payload: { userId: 'user123' },
createdAt: admin.firestore.FieldValue.serverTimestamp()
});
// Agent claims and processes task
const taskQuery = await db.collection('a2a_tasks')
.where('assignedTo', '==', 'worker-agent@project.iam.gserviceaccount.com')
.where('status', '==', 'pending')
.orderBy('priority', 'asc')
.limit(1)
.get();
if (!taskQuery.empty) {
const task = taskQuery.docs[0];
await task.ref.update({ status: 'in_progress' });
// Process task...
await task.ref.update({ status: 'completed' });
}
5. Agent Activity Logging:
// Log agent activities for audit trail
await mcp.logActivity({
action: 'processed_data',
userId: 'user123',
duration: 1500, // ms
result: 'success'
}, 'info');
Phase 4: Cloud Run Integration
For Cloud Run services accessing Firestore:
Setup Cloud Run service class:
const { CloudRunService } = require('./src/cloudrun-service');
const cloudrun = new CloudRunService();
// In your Cloud Run endpoint
app.post('/api/users/:userId/data', async (req, res) => {
const { userId } = req.params;
try {
// Log request
await cloudrun.logRequest('/api/users/data', 'POST', userId);
// Get user data from Firestore
const userData = await cloudrun.getUserData(userId);
// Store response
await cloudrun.storeResponse(req.id, {
userId,
data: userData,
status: 'success'
});
res.json({ success: true, data: userData });
} catch (error) {
await cloudrun.storeResponse(req.id, {
userId,
error: error.message,
status: 'error'
});
res.status(500).json({ error: error.message });
}
});
Phase 5: Security Rules Management
Generate and deploy security rules for both users and agents:
For basic users:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
For A2A/MCP (service accounts):
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
function isServiceAccount() {
return request.auth.token.email.matches('.*@.*\\.iam\\.gserviceaccount\\.com$');
}
function isAuthorizedAgent() {
return isServiceAccount() && request.auth.token.email in [
'mcp-server@project-id.iam.gserviceaccount.com',
'agent-engine@project-id.iam.gserviceaccount.com'
];
}
// Agent sessions
match /agent_sessions/{sessionId} {
allow read, write: if isAuthorizedAgent();
}
// Agent memory
match /agent_memory/{agentId}/{document=**} {
allow read, write: if isAuthorizedAgent();
}
// A2A messages
match /a2a_messages/{messageId} {
allow create: if isAuthorizedAgent();
allow read: if isAuthorizedAgent() &&
(resource.data.from == request.auth.token.email ||
resource.data.to == request.auth.token.email);
}
}
}
Deploy rules:
firebase deploy --only firestore:rules
Advanced Patterns
Pattern 1: Multi-Agent Workflow Orchestration
// Coordinator agent creates workflow
const workflowId = await db.collection('workflows').add({
name: 'user_data_processing',
steps: [
{ agent: 'validator@project.iam.gserviceaccount.com', status: 'pending' },
{ agent: 'processor@project.iam.gserviceaccount.com', status: 'pending' },
{ agent: 'notifier@project.iam.gserviceaccount.com', status: 'pending' }
],
createdAt: admin.firestore.FieldValue.serverTimestamp()
});
// Each agent listens for their step
const unsubscribe = db.collection('workflows')
.doc(workflowId)
.onSnapshot(async (doc) => {
const workflow = doc.data();
const myStep = workflow.steps.find(s => s.agent === myEmail && s.status === 'pending');
if (myStep) {
// Process step
await processStep(myStep);
// Mark complete and notify next agent
myStep.status = 'completed';
await doc.ref.update({ steps: workflow.steps });
}
});
Pattern 2: Agent Context Sharing
// Agent 1 stores context
await db.collection('shared_context').doc('task_abc').set({
sharedBy: 'agent1@project.iam.gserviceaccount.com',
sharedWith: ['agent2@project.iam.gserviceaccount.com'],
context: {
userId: 'us
---
*Content truncated.*
More by jeremylongshore
View all skills by jeremylongshore →You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
Related MCP Servers
Browse all serversBoost productivity on Mac with OmniFocus Enhanced—manage tasks, projects, and workflows in one powerful macOS productivi
SurrealDB is a versatile graph database supporting graph, document, and relational data with powerful query and bulk man
Qwen Package Manager is a Node.js package manager with npm and Bower package support, transactional installs, rollback,
Desktop Commander MCP unifies code management with advanced source control, git, and svn support—streamlining developmen
Claude Code is an AI powered coding assistant that streamlines coding tasks, file ops, Git, and searches by auto-bypassi
Integrate Baidu Maps API for geocoding, route planning, and location search within the Baidu Maps ecosystem.
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.