Skip to main content
Glama
Esubalew-kunta

Cabinet Assistant MCP connector

Cabinet Assistant — MCP connector

A small, standalone, detachable remote-MCP service that gives Dr Amraoui's Claude a short menu of one-call actions over the cabinet's Notion (tasks + cases) and Supabase (fast reads). It never touches the cockpit web app — same databases, same field mappings, separate service.

Google Calendar stays on Claude's own Google Calendar connector; this service only returns the event ids to create/update/delete, and stores them back on the task (link_event).

What it exposes (16 tools)

Reads (instant, from Supabase): list_my_day, list_team_tasks, list_cases, find_patient, find_staff Task writes (preview → confirm): add_personal_task (private), add_clinic_task, edit_task, reschedule_task, complete_task, assign_task, plus link_event (mechanical). Cases (preview → confirm): add_case (+ auto triage task, web-app parity), assign_case, verify_case, set_report_status.

Every write returns a confirm_token first (nothing is saved); it only writes when called again with that token. Single-use token = confirmation enforced + idempotent.

Related MCP server: tasks-mcp

Environment (.env.local, same values as the cockpit)

Var

Meaning

NOTION_TOKEN

cockpit Notion integration (already shared with the DBs)

SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY

same Supabase project

MCP_SECRET

long random string; the endpoint is /mcp/<MCP_SECRET>

OWNER_PERSONNEL_ID

optional; else resolved from app_members.is_owner

Run locally

npm install
npm start                # http://localhost:8787/health
node test/smoke.mjs      # end-to-end MCP test (handshake, read, preview→commit, guard, cleanup)
node test/smoke2.mjs     # clinic delegation + case (dossier + triage) parity

Deploy on Render (free)

Repo: https://github.com/Esubalew-kunta/MCP (the connector is at the repo root).

  1. Render → New → Web Service → connect this GitHub repo.

  2. Root Directory = (blank / repo root), Build npm install, Start npm start, Health check /health, Plan Free.

  3. Add the env vars above (values from the cockpit's .env.local).

  4. Deploy. Your MCP URL is: https://<service>.onrender.com/mcp/<MCP_SECRET>

Keep it awake (free tier sleeps after 15 min)

Point a free pinger at GET https://<service>.onrender.com/health every ~4 min: cron-job.org, UptimeRobot, or an n8n Schedule → HTTP Request node.

Connect in her Claude

Claude → Settings → Connectors → Add custom connector → paste the full MCP URL (with the secret). Works in the mobile app too. Then a normal chat can create/assign/edit tasks & cases by voice.

Move to her VPS later

Deploy the same folder on the VPS (npm install && npm start behind HTTPS), repoint the connector URL.

Detach (remove entirely)

  1. Remove the connector in her Claude settings.

  2. Suspend/delete the Render service. → Cockpit, web app, Notion, calendar all unaffected. Nothing to clean up.

Security notes (pilot vs production)

  • Pilot auth = capability URL (secret path). Good for a private demo on an obscure URL.

  • Before real patients: put it behind OAuth, rotate MCP_SECRET, restrict egress. No PHI is stored here.

Related MCP Connectors

Related MCP Servers