CareCircle
Integrates with Amazon Alexa+ as the voice agent, providing MCP tools for daily medication plans, dose confirmation and skipping, check-ins, family notifications, reminders, and weekly digests. It also supports optional Amazon SNS delivery for family alerts via SMS, email, or push, including urgency attributes for urgent escalations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CareCircleI took my blood pressure pill"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CareCircle — Alexa+ for families who care from far away
A self-hosted MCP server (spec 2025-11-25, Streamable HTTP) that gives Alexa+ a safe, caring job: keeping an older adult's medicines on track, listening to how they feel, and keeping the family in the loop. Built for the Alexa+ track of Build, Ship, Shape: Amazon Developer Hackathon.
A pill taken twice makes no noise. Neither does a pill that was never taken, or a lonely week nobody hears about. CareCircle gives Alexa+ the job of catching all three for an older adult who lives alone: it refuses a double dose, notices on its own when a dose is two hours late, and tells the family when a rule is bent or a bad day turns into a bad week. The safety rules live in the server, so they hold whatever the agent decides.
What it does
Moment | What Mrs. Han says | What happens (MCP tool) |
Morning | "What do I need to do today?" |
|
Taking a pill | "I took my blood pressure pill" |
|
Confusion | says it again a few minutes later |
|
Doctor's order | "My doctor told me to take my evening metformin now" |
|
Nobody says anything | — (the dose is two hours late) | watcher marks it missed and sends Jisoo one important alert per missed dose |
Low mood | "I feel lonely and tired today" |
|
Emergency | "I fell in the kitchen" |
|
Weekly | "How have I been this week?" (or Jisoo on the dashboard) |
|
The care rules live in the server, not in the model's judgment. Whatever agent calls the tools: without a doctor-directed override, a repeat or early dose is never logged; with one, the family is always told. A fall, chest pain, bleeding, trouble breathing or pain of 7/10 or more always becomes an urgent alert, and a dose nobody mentions is noticed by the server itself.
Related MCP server: Daybreak
MCP surface
Transport: Streamable HTTP at
/mcp(stateless, JSON responses), protocol2025-11-25negotiated and verified in tests.Tools (7):
get_daily_plan,confirm_medication,skip_medication,check_in,notify_family,add_reminder,get_family_digest— each with described, validated arguments, a typed output schema (Pydantic result models;spokenis required in every result and statuses such asalready_taken/too_earlyare enumerated) and accuratereadOnlyHint/destructiveHint/idempotentHint/openWorldHintannotations, so the voice agent can branch on the status and read safety-critical text verbatim.Resources (2):
carecircle://care-plan,carecircle://alerts.Prompt (1):
evening_check_in— a script for a warm end-of-day conversation.Server instructions: tell the agent to prefer
spoken, never to override a safety refusal, and to escalate emergencies.
Run it (one command)
python -m venv .venv && source .venv/bin/activate # Windows (Git Bash): source .venv/Scripts/activate
pip install -r requirements.txt # requirements-dev.txt adds the video tooling
CARECIRCLE_DEMO_NOW=2026-10-23T08:05 python -m carecircle # http://127.0.0.1:8780http://127.0.0.1:8780/— Alexa+ simulator (Echo Show screen + live MCP traffic inspector + demo clock)http://127.0.0.1:8780/family— family dashboard (Jisoo's phone)http://127.0.0.1:8780/demo— both side by side (what the demo video shows)http://127.0.0.1:8780/mcp— the MCP endpoint any MCP client can connect to
Without CARECIRCLE_DEMO_NOW the clock is the real wall clock. Data lives in carecircle.db (SQLite, seeded with one realistic past week).
Connect a real MCP client
{ "mcpServers": { "carecircle": { "type": "http", "url": "http://127.0.0.1:8780/mcp" } } }(see alexa_plus_mcp.json). Anything that speaks Streamable HTTP works, e.g. npx @modelcontextprotocol/inspector.
To audit the server the way a voice agent sees it, run our companion project
mcp-voice-check: python -m mcp_voice_check http://127.0.0.1:8780/mcp → 0 failures.
Make it reachable for Alexa+ (HTTPS)
Alexa+ connects to remote MCP servers over HTTPS. The repo ships what that needs:
Container:
Dockerfile(listens on 8080, SQLite on/data) for AWS App Runner, ECS/Fargate or any container host, or run it on a home server behind any HTTPS tunnel/reverse proxy.Public mode: with
CARECIRCLE_DEMO=0(the container default; on by default only when bound to localhost) the server answers only/mcp,/healthzand/.well-known/*— no demo pages, no/api. SetCARECIRCLE_ALLOWED_HOSTS=care.example.comto reject requests for any other Host (DNS-rebinding protection).Auth: set
CARECIRCLE_TOKEN; a request without the token gets401withWWW-Authenticate: Bearer resource_metadata=".../.well-known/oauth-protected-resource".Discovery:
/.well-known/oauth-protected-resourceserves RFC 9728 metadata. SetCARECIRCLE_PUBLIC_URL(your HTTPS origin) andCARECIRCLE_AUTH_SERVERS(comma-separated issuer URLs, e.g. Login with Amazon or Cognito).
For this submission the server ran locally; it has not been deployed to a public AWS endpoint.
About the simulator (please read)
Alexa+ MCP integrations are in preview, so the Echo Show screen here is a simulator. On a real device Alexa+ is
the agent; in the simulator a small, transparent intent router (carecircle/agent.py, plain rules) plays that role
and fills the tool arguments the way an agent would (e.g. "medication": "blood pressure pill").
Everything after the routing is real: for every utterance the simulator opens an official MCP client session over
Streamable HTTP, runs initialize, calls the chosen tool and speaks the tool's spoken result — you can watch each
tools/call in the inspector panel. The router never touches the care logic directly, and tests/test_mcp_e2e.py
proves the server with the official client independent of the simulator.
Voice design notes
Short, kind, one idea per sentence — every tool returns a
spokenline written to be heard, not read.Refuse with a reason and a next step — "Hold on. You already took your Amlodipine at 8:05 AM. Please don't take another one."
Read-back for every write — dose, time and (for reminders) day are repeated so the resident can correct a mistake.
Never leave her alone with bad news — a low mood or a fall ends with who has been told, not just a statement of fact.
No jargon, no dosage advice — CareCircle tracks the plan the doctor set; it does not prescribe, adjust or diagnose.
Why it can serve people beyond a hackathon
No new hardware — it is designed for the Echo the family already owns; the family side is any phone that can receive SMS or push.
Cheap to run — a single small process with a SQLite file (a home server or a small VM); alerts cost one SNS publish each.
Private by construction — medicine data stays on the family's own server; only first names appear in alerts.
Extensible — the data model is already per-medicine and slot based; several residents per household or a care agency's caseload are additional rows, not a redesign. The same tools suit a caregiver's own assistant ("what did Mom miss this week?").
Safety design
Double-dose guard — per-medicine minimum gap; a repeat is refused and not logged.
Timing check — a dose that is not due yet is not logged either.
Overrides are never silent —
force(meant for "my doctor told me to") can bypass either guard, but the family always gets an important alert saying which rule was bypassed.Proactive watcher — every minute the server checks today's doses; one still unlogged two hours after its time is marked missed and the family gets one important alert. Nobody has to speak first. (
CARECIRCLE_WATCH_SECONDS, 0 turns it off.)Alert ladder —
info(app) →important(push + SMS) →urgent(push + SMS through SNS subscriptions, plus a phone call via your own Lambda). A 7+/10 pain report, a fall, chest pain, bleeding or trouble breathing is urgent automatically; three low check-ins in a row are important.Never claims what it cannot do — Alexa tells the resident to call emergency services herself; CareCircle alerts the family, it does not pretend to be a medical alarm.
Small data — one local SQLite file, no cloud account required, no personal identifiers beyond first names.
Real delivery with Amazon SNS (optional, AWS)
Set CARECIRCLE_SNS_TOPIC_ARN and standard AWS credentials; every alert is also published to the topic with an
urgency message attribute. The family subscribes by SMS, email or mobile push, and an urgent subscription filter
({"urgency": ["urgent"]}) can trigger a Lambda that places a phone call (the Lambda itself is not included). Without
SNS, alerts are recorded in the outbox the dashboard shows. A failed publish is reported in the tool
output and never breaks the care flow. tests/test_sns.py verifies the publish call and the failure path against
botocore's Stubber. (Verified with the stub only; it has not been run against a live AWS account.)
Tests
python tests/test_mcp_e2e.py # starts the real server, official MCP client: 34 checks (protocol 2025-11-25, typed output schemas, guards, override alert, escalation, proactive watcher, RFC 9728 metadata, public-mode lockdown, simulator path, bearer-token auth)
python tests/test_sns.py # SNS delivery with a stubbed boto3 clientProject layout
carecircle/mcp_server.py FastMCP server: tools, resources, prompt, Streamable HTTP + demo routes
carecircle/service.py care logic (plan, medication safety, check-ins, escalation, digest) over SQLite
carecircle/notifier.py optional Amazon SNS delivery
carecircle/agent.py Alexa+ simulator brain (intent router -> MCP client)
carecircle/web/ simulator, family dashboard, side-by-side demo page
tests/ end-to-end (34 checks) and SNS tests
Dockerfile container for App Runner / ECS / any host
tools/make_video.py how the demo video was produced from the running app
docs/ product feedback + friction log, Devpost textLimitations and next steps
The simulator's intent router is rule based; a real Alexa+ agent chooses tools itself from the tool descriptions.
One resident and a fixed family circle in this version; the data model is ready for several residents.
Authentication:
CARECIRCLE_TOKENgives a static bearer token (constant-time check, tested) and the RFC 9728 metadata points clients at your authorization server; issuing OAuth tokens is left to that server. The demo UI and/apiexist only in demo mode (localhost by default).The watcher alerts the family; speaking a reminder on the Echo itself needs Alexa+ proactive notifications and is next.
Next: caregiver-side MCP prompts ("what should I ask Mom tonight?"), refill tracking, multi-language voice.
MIT licensed — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Family calendars, tasks, reminders, and pickup coordination for your AI assistant.
Your own SLATE health data in your AI assistant: read, trend, plan and log. Never suggests a dose.
Household-aware cooking brain: pantry, meal suggestions, dietary safety, recipes, shopping lists.
Household health records with source attribution. Read and add records with OAuth approval.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables older adults to log medication doses by voice, receive double-dose and safety alerts, record mood check-ins, request help, and exchange family messages, while giving caregivers multilingual AI digests, adherence reports, refill forecasts, and proactive notifications.MIT
- AlicenseNot gradedqualityBmaintenanceEnables voice-driven morning check-ins for older adults living alone through Alexa+, capturing sleep, mood and pain, logging medication doses and appointments, and answering medication questions from official FDA labels. Keeps family members informed with household status updates and automatic alerts when a check-in or dose is missed.1 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables older adults and family carers to coordinate daily elder-care by voice, including checking schedules, logging medications, setting reminders, and reviewing visit notes through Alexa+.Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables an older adult to talk with Alexa+ about medicines and daily routine while a caregiver sees a calm, consent-gated dashboard and push alerts only when a genuine pattern (e.g. an unusually late first activity) appears. Includes elicitation-based consent, emergency bypass, resumable SSE streams, and an inline MCP App view.MIT