Athena — roomy-mobile/archive/changes/2026-01-05-add-roomy-firestore-mcp/tasks/001-package-skeleton.md


status: done

Task: Create package skeleton + startable MCP server

End Goal

A new roomy-firestore-mcp/ package that builds with TypeScript and runs as a stdio MCP server exposing get_env and set_env tools.

Currently

No MCP server package exists for Firestore operations.

Should

  • roomy-firestore-mcp/ folder with Node/TypeScript ESM package
  • Builds to dist/index.js via tsc
  • Runs as stdio MCP server process
  • Exposes get_env and set_env tools
  • Logs only to stderr

Constraints

  • [ ] Node >= 22, TypeScript, ESM ("type": "module")
  • [ ] Dependencies: @modelcontextprotocol/sdk, dotenv, zod, firebase-admin, yaml
  • [ ] Dev deps: typescript, tsx, vitest, @types/node
  • [ ] All logging to stderr (stdout reserved for MCP protocol)

Acceptance Criteria

  • [ ] npm test succeeds (empty suite acceptable)
  • [ ] npm run build produces dist/index.js and marks it executable
  • [ ] node dist/index.js starts and waits for stdio without crashing
  • [ ] get_env returns { environment: "emulator" } by default
  • [ ] set_env({ environment: "staging" }) updates environment

Implementation Checklist

  • [x] 1.1 Create roomy-firestore-mcp/package.json with scripts: build, dev, test, start
  • [x] 1.2 Create roomy-firestore-mcp/tsconfig.json for NodeNext output to dist/
  • [x] 1.3 Create roomy-firestore-mcp/src/index.ts with McpServer and StdioServerTransport
  • [x] 1.4 Create roomy-firestore-mcp/src/utils/logger.ts for stderr logging
  • [x] 1.5 Create roomy-firestore-mcp/src/env/environmentService.ts to hold current env
  • [x] 1.6 Register get_env tool returning { environment }
  • [x] 1.7 Register set_env tool with z.enum(['emulator','staging','prod'])
  • [x] 1.8 Run npm install and npm run build
  • [x] 1.9 Test server starts without crashing

Notes

  • Server name: roomy-firestore-mcp
  • Resolve repo root: process.env.ROOMY_MCP_REPO_ROOT || process.cwd()
  • Default env from process.env.ROOMY_MCP_DEFAULT_ENV || 'emulator'

Reacties

Nog geen reacties