Context
Roomy is a Firebase monorepo with YAML-based datamodels defining Firestore collections. AI assistants need direct Firestore access for development workflows (seeding data, debugging, querying).
Goals / Non-Goals
Goals:
- MCP server that exposes Firestore CRUD operations
- Schema discovery from existing YAML datamodels
- Support emulator, staging, and production environments
- JSON-safe timestamp serialization for MCP protocol
Non-Goals:
- Scraping or data migration tools
- UI integration beyond MCP configuration
- Modifying the datamodel YAML format
Decisions
Package Location
- Decision:
roomy-firestore-mcp/ in repo root
- Rationale: Keeps MCP tooling at repo level, not inside
roomy-firebase/ (which is Firebase backend only)
Datamodels Path
- Decision: Read from
roomy-firebase/data_models/ (underscore, not hyphen)
- Rationale: Match existing directory structure in the monorepo
Timestamp Format
- Decision:
{ "__time__": "<ISO8601>" } wrapper for all timestamps
- Rationale: JSON-safe serialization that round-trips through MCP protocol
Environment Variables
ROOMY_MCP_REPO_ROOT: Path to roomy-firebase/ directory
ROOMY_MCP_DEFAULT_ENV: emulator|staging|prod (default: emulator)
ROOMY_MCP_SERVICE_ACCOUNT_PATH_STAGING: Required for staging
ROOMY_MCP_SERVICE_ACCOUNT_PATH_PROD: Required for production
Entity Key Derivation
- Decision: Join static collection segments with underscore
- Example:
scrapingSessions/{$sessionId}/logs/{$id} → scrapingSessions_logs
Risks / Trade-offs
Risk: Service Account Exposure
- Mitigation: SA paths stored in env vars, not committed to repo
- Mitigation: Claude/Cursor MCP config uses absolute paths outside repo
Risk: Accidental Production Writes
- Mitigation: Default environment is
emulator
- Mitigation: Explicit
set_env call required to switch environments
Migration Plan
N/A - New capability, no existing implementation to migrate.
Open Questions
None.
Reacties