Care Circle MCP Server
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Care Circle
Coordinate care responsibilities. Hand off with confidence.
Care Circle is an MCP-powered assistant that helps family caregivers coordinate who is doing what, when, and for whom — and hands off that information accurately when the next caregiver takes over.
Built for the Amazon Build, Ship, Shape 2026 Hackathon — Alexa+ track.
DEMO DATA NOTICE: All names, relationships and tasks in this application are entirely fictional. Care Circle is a coordination tool and does not provide medical advice.
What it does
Capability | Description |
Capture update | Enter a free-text care update. The app extracts proposed tasks for review — nothing is saved until you confirm. |
Review & confirm | Edit task descriptions, dates and assigned people before saving. |
Today's plan | View tasks grouped as overdue, due today, upcoming and unscheduled. |
Complete tasks | Mark tasks done (or reopen them). Every change is recorded in an audit log. |
Generate handoff | One click produces a plain-text handoff summary from live database state — completed, outstanding, upcoming, unassigned. |
Related MCP server: Alexa+ LifeOps
Architecture
Browser (src/web/)
│ HTTP requests to /api/*
▼
Express Web Server (port 3000)
│ MCP client (StreamableHTTPClientTransport)
│ HTTP POST to /mcp
▼
MCP Server (same process in unified mode, or port 3001 in dev)
│ McpServer + StreamableHTTPServerTransport
│ 5 tools: capture, confirm, plan, status, handoff
▼
SQLite Database (data/care-circle.db)The web server is a real MCP client — it connects to the MCP server using @modelcontextprotocol/sdk's StreamableHTTPClientTransport. Every data operation flows through MCP tools; the web server never accesses the database directly for care operations.
MCP transport: Streamable HTTP (POST /mcp) — satisfies MCP spec ≥ 2025-11-25 as required by the Alexa+ track.
Directory layout
care-circle/
├── src/
│ ├── db/ SQLite schema, seed data, data-access layer
│ ├── mcp/ MCP server + tool implementations
│ ├── server/ Express web server, MCP client, REST routes, unified server
│ ├── types/ Shared TypeScript interfaces
│ ├── utils/ Input validation (Zod), update text parser
│ └── web/ Static HTML/CSS/JS frontend
├── tests/ Vitest automated tests (43 tests)
├── dist/ Compiled JavaScript output (git-ignored)
├── data/ SQLite database file (git-ignored)
├── render.yaml Render.com deployment configuration
└── ...config filesPrerequisites
Node.js v18+ (tested on v24.19.0)
npm v8+ (tested on v11.17.0)
No external services, APIs or paid accounts required
Setup
# 1. Clone the repository
git clone https://github.com/AyoadeCreations/care-circle.git
cd care-circle
# 2. Install dependencies
npm install
# 3. Copy environment file (defaults work for local dev — no edits needed)
cp .env.example .env
# 4. Build TypeScript
npm run buildRunning locally
Option A — Unified server (recommended)
Single process, single port. MCP and web UI on port 3000.
npm run start:unified
# Output: [Care Circle] Unified server running at http://0.0.0.0:3000
# Output: [Care Circle] MCP endpoint: http://0.0.0.0:3000/mcpSet MCP_URL=http://localhost:3000/mcp in your .env (or it defaults to http://127.0.0.1:3001/mcp).
Option B — Two-process dev mode
Terminal 1 — MCP server:
node dist/mcp/index.js
# Output: [MCP] Care Circle MCP server running at http://127.0.0.1:3001/mcpTerminal 2 — Web server:
node dist/server/index.js
# Output: [Web] Care Circle web app at http://localhost:3000Single-command dev with file watching
npm run devCompiles TypeScript and starts both servers with --watch mode.
Then open http://localhost:3000 in your browser.
The database is created automatically on first start and seeded with fictional demo data (two care recipients, several tasks).
Running tests
npm testRuns 43 automated tests covering:
Proposed update is not treated as confirmed before confirmation
Confirmed tasks persist after restarting the server
Plan accurately reflects saved tasks and statuses
Completing a task updates the database and change history
Handoff reflects the real current database state
System does not invent a task owner or deadline when one is missing
Invalid task IDs and malformed inputs produce safe errors
End-to-end vertical slice: capture → confirm → plan → complete → handoff
Regression: HTTP status codes — 404 for not-found, 422 for validation only
Regression: CSS
[hidden]attribute must be respectedRegression: Duplicate submission prevention in frontend
MCP Tools
All tools are exposed over Streamable HTTP at POST /mcp.
capture_care_update
Parse a caregiver's natural-language update and return a proposed task list.
Does NOT save tasks. Call confirm_care_update to save.
Input | Type | Description |
| number | ID of the care recipient |
| string | Display name of the submitting caregiver |
| string | Free-form update (max 2000 chars) |
Returns: ProposedUpdate — includes update_id, proposed_tasks[] (with confidence level), and ambiguities[].
confirm_care_update
Save user-reviewed tasks from a previous capture_care_update call.
Input | Type | Description |
| number | ID returned by |
| number | ID of the care recipient |
| string | Name of the confirming caregiver |
| array | Tasks to save (description, due_date, responsible_person) |
Returns: { saved_tasks: CareTask[], update_id: number }
get_today_plan
Retrieve all open tasks for a recipient, grouped by urgency.
Input | Type | Description |
| number | ID of the care recipient |
Returns: TodayPlan — overdue, due_today, upcoming, unscheduled arrays.
update_task_status
Mark a task as completed or open. Writes an audit record.
Input | Type | Description |
| number | ID of the task to update |
|
| New status |
| string | Name of the person making the change |
| string (optional) | Note about the change |
Returns: { task: CareTask, message: string }
generate_care_handoff
Generate a handoff summary from live database state. Saves the handoff to the DB.
Input | Type | Description |
| number | ID of the care recipient |
| string | Name of the person generating the handoff |
Returns: HandoffSummary — completed, outstanding, upcoming, unassigned arrays, plus notes (formatted plain text).
Database schema
Table | Purpose |
| Fictional care recipients |
| Caregiver display names |
| Raw update text (stored before confirmation for traceability) |
| Confirmed care tasks with status, due date, responsible person |
| Audit log of every status change |
| Generated handoff summaries |
The database is created and seeded automatically on first start.
Environment variables
Variable | Default | Description |
|
| Web server port |
|
| MCP server port (two-process mode only) |
|
| MCP server endpoint URL |
|
| Path to SQLite database |
|
| Environment |
| (empty) | Comma-separated CORS allowed origins |
Deployment
Render.com (recommended)
Push this repo to GitHub
Go to render.com → New → Web Service
Connect your GitHub repo
Render detects
render.yamlautomaticallySet environment variables if needed (defaults work for a first deploy)
Click Deploy
The render.yaml configures:
Build:
npm install && npm run buildStart:
npm run start:unifiedPersistent disk at
/opt/render/project/datafor the SQLite databaseHealth check at
/health
Other platforms (Railway, Fly.io)
Any platform that supports:
Node.js 18+ runtime
Persistent disk storage (for SQLite)
Single HTTP port
Use npm run start:unified as the start command. Set MCP_URL to http://localhost:$PORT/mcp.
Demo script
See DEMO_SCRIPT.md for the full 3-minute walkthrough.
Quick summary:
Open the app — select "Margaret Chen"
Enter name "Sarah (daughter)" in sidebar
Paste: "Transport for Mum's appointment has changed to Tuesday at 10 AM. We still need to confirm who will pick her up."
Click Analyse update — review the proposed tasks
Edit the responsible person, click Confirm and save
See the task appear in today's plan
Click the circle to mark a task complete
Click Generate handoff — copy the summary
Known limitations
No LLM integration: The update parser uses regex/heuristics, not an LLM. Works well for explicit updates but won't catch implied tasks in complex language.
Single-user session: No authentication. In production, user sessions and role-based access would be needed.
No real-time sync: Multiple browser tabs don't auto-refresh. Use the Refresh button.
Alexa+ integration: This is a self-hosted MCP experience with its own web client. The MCP server is wired up correctly to the MCP spec (Streamable HTTP, spec 2025-11-25) but is not directly connected to an Alexa+ agent in this submission.
SQLite persistence: The database file is local to the server. Suitable for demo deployments; production would use an external database.
Tools and SDKs used
Tool / SDK | Role |
| MCP server and client implementation |
| HTTP server for both web UI and MCP endpoint |
| SQLite database access |
| Input validation for all MCP tool inputs |
| Test runner (43 automated tests) |
| Type safety across the full codebase |
License
MIT — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
ADHD-friendly tasks, notes & projects for LucidNest - 18 tools, scoped tokens, Streamable HTTP.
Hosted NeuroDock — stateless communication and planning tools over OAuth-secured Streamable HTTP.
Task and sprint coordination for humans and AI agents, with scoped API keys and full audit trail.
LovedOne Soft: clients, visits, notes, invoices, scheduling. API key or OAuth care_circle:write.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables families to care for an aging parent by voice, handling medication check-ins, appointments, daily summaries, missed-dose escalation, and parent-controlled sharing. Writes are tiered and confirmed by the user through MCP elicitation, and each session exposes only the tools of the caller's role.3 npmMIT
- AlicenseNot gradedqualityBmaintenanceExposes clinical triage and ambient care tools over the MCP 2025-11-25 Streamable HTTP transport, letting voice-driven clients analyze blood pressure, heart rate and SpO2, schedule medication reminders, retrieve patient profiles and trigger simulated emergency escalation. Tool orchestration can be driven by AWS Bedrock Converse multi-turn reasoning, with a deterministic rule-based fallback when cloud credentials are absent.1MIT
- AlicenseNot gradedqualityCmaintenanceExposes 11 tools over Streamable HTTP so any MCP client, including a voice assistant, can record doses and moods, send caregiver messages, raise urgent alerts, and pull a caregiver summary. It also covers profile setup and medication management while enforcing safety rules such as refusing not-yet-due doses and never giving medical advice.MIT
- AlicenseNot gradedqualityCmaintenanceA self-hosted Streamable HTTP endpoint that lets any MCP client manage a user's tasks and study plans through eight validated tools, including creating, listing, editing, completing and deleting tasks, generating timed study schedules, and fetching daily summaries. Destructive operations use MCP elicitation to request explicit user confirmation, and all calls share state with the accompanying dashboard activity log.MIT