A voice-first caregiver companion for Alexa+, built as a self-hosted MCP server.

Built for the Amazon hackathon, Alexa+ track (with the Open Source mini challenge).

CareBuddy lets family caregivers look after an older relative by voice: track medications, log daily check-ins, and get a plain-language summary that flags anything worth a phone call.

"Alexa, Mum took her Metformin." "Alexa, log a check-in for Mum, mood 4, she went for a walk." "Alexa, how is Mum doing today?"

The problem Millions of people care for a parent or grandparent who lives alone, often in another city. Missed medication and unnoticed low mood are two of the biggest risks, and caregivers mostly find out too late or by worrying. Voice is the interface that older adults and busy caregivers already use, so the answer should be one sentence away.

What it does CareBuddy exposes four tools to Alexa+ over the Model Context Protocol:

Tool What it does Example phrase list_medications Lists today's medications with taken/pending status; can show pending only "What medicines are left today?" mark_medication_taken Records that a medication was taken (case-insensitive name match) "Mum took her Metformin" log_checkin Saves a mood score (1-5) and an optional note "Check-in, mood 4, she went for a walk" daily_summary Combines adherence and mood into one summary and flags concerns "How is Mum doing today?" daily_summary flags three situations: doses still pending, a low average mood (2 or below), and no check-in yet today. If none apply, it reports that all is good.

How it works Alexa+ ──(MCP, Streamable HTTP, JSON-RPC)──▶ POST /mcp ──▶ Express app │ new McpServer + StreamableHTTPServerTransport per request │ list_medications · mark_medication_taken log_checkin · daily_summary (zod-validated inputs) │ in-memory demo data Protocol: MCP spec 2025-11-25, Streamable HTTP transport, using the official @modelcontextprotocol/sdk. Stateless: every request builds a fresh server and transport (sessionIdGenerator: undefined), which keeps the server simple and easy to scale horizontally. Validation: every tool input is described and validated with zod (for example, mood must be an integer from 1 to 5). Errors: an unknown medication returns an MCP isError result instead of crashing. Data: the demo uses in-memory data (three sample medications) and resets on restart. Everything lives in one readable file, server.mjs.

Built With

Share this project:

Updates

Submission history