The system SHALL provide a Node/TypeScript MCP server package at roomy-firestore-mcp/ that starts via stdio using @modelcontextprotocol/sdk.
node roomy-firestore-mcp/dist/index.js is executedThe system SHALL provide get_env and set_env tools for managing the active Firestore environment.
get_env tool is called{ environment: "emulator|staging|prod" }set_env tool is called with { environment: "staging" }ROOMY_MCP_DEFAULT_ENV setemulatorThe system SHALL read Firebase project configuration from roomy-firebase/.firebaserc and roomy-firebase/firebase.json.
projects.default as prod project ID and projects.staging as staging project ID from .firebasercemulators.firestore.port from firebase.json (default: 8081)The system SHALL connect to Firestore using firebase-admin based on the active environment.
emulatorprojectId only and set Firestore host to 127.0.0.1:{port} with SSL disabledstaging or prodROOMY_MCP_SERVICE_ACCOUNT_PATH_STAGING or ROOMY_MCP_SERVICE_ACCOUNT_PATH_PRODstaging or prod and service account path is not setThe system SHALL derive entity definitions from YAML files in roomy-firebase/data_models/.
data_models/**/*.yaml for datamodel definitionslocations arraycollectionPathTemplate, pathParams, and docIdParamName{$id} or {code} style placeholdersscrapingSessions/{$sessionId}/logs/{$id}scrapingSessions_logs (static segments joined by underscore)locations fieldThe system SHALL provide list_collections and get_schema tools for schema discovery.
list_collections tool is called{ type, dtoName, location, collectionPathTemplate, pathParams, docIdParamName }get_schema tool is called with { type: "users" }timestampFormat: { __time__: "<ISO string>" } and fields mapThe system SHALL provide get_doc, list_docs, create_doc, update_doc, and delete_doc tools.
get_doc is called with { type, id }null if not foundlist_docs is called with { type, limit? }create_doc is called with { type, data }createdAt and updatedAt timestampscreate_doc is called with { type, id, data }update_doc is called with { type, id, data }updatedAt timestampupdate_doc is called with { type, id, data, upsert: true }delete_doc is called with { type, id }{ id, deleted: true } if deleted, { id, deleted: false } if not foundThe system SHALL provide create_docs, update_docs, and delete_docs tools for batch operations.
create_docs is called with { operations: [...] }update_docs is called with { operations: [...], upsert: true }delete_docs is called with { operations: [...] }transaction=false and operations exceed 500The system SHALL support subcollection paths via pathParams.
pathParams (e.g., cleaningSchedules_cleaningTimeSlots)pathParams object in tool calls to resolve collection pathThe system SHALL serialize all Firestore timestamps as { "__time__": "<ISO8601>" }.
Timestamp or Date fields{ "__time__": "2025-12-08T23:39:28.359Z" } format{ "__time__": "..." } fieldsTimestampThe system SHALL be configurable via .mcp.json for Cursor/Claude Code integration.
.mcp.json contains roomy-firestore-mcp entry
Reacties