Inspiration
My grandmother lives far from me. Every day I wonder: did she take her evening medicine? Is my grandfather feeling better or worse this week? Millions of family caregivers ask these small questions all the time, and the answers are usually scattered across phone calls, sticky notes and memory.
Alexa+ is already in the home and already voice-first, which makes it a natural place to answer them. So I built CareLoop.
What it does
CareLoop is a self-hosted MCP server that lets a caregiver look after elderly or unwell relatives just by talking to Alexa+:
- "Add Nani's Metformin, 500 mg, at 8 AM and 8 PM."
- "Nani just took her Metformin."
- "What is Dadu missing today?"
- "How was Nani's week?"
It tracks medicine schedules, logs doses, flags overdue and missed doses, records mood check-ins with symptoms, and produces a weekly summary (adherence %, average mood, trend, symptoms mentioned). A live dashboard shows the same data for a family member who prefers a screen.
Safety first: CareLoop is a memory aid, not a medical device. It never recommends doses or schedule changes, and when doses are missed or symptoms are mentioned it points the caregiver to a doctor or pharmacist. These rules are also written into the server's MCP instructions.
How I built it
- Python MCP server using the official MCP SDK, over Streamable HTTP (
/mcp), protocol version newer than 2025-11-25. - 8 tools (
add_person,add_medication,remove_medication,today_schedule,log_dose,missed_doses,log_checkin,weekly_summary) and one prompt (morning_briefing). - Every tool returns a short
speechstring written to be read aloud, plus structured data, so the same response works for voice and for the dashboard. - Business logic lives in a separate
core.py(SQLite, no MCP imports), so it is easy to test. - A small live dashboard (plain HTML/JS, auto-refreshes) shows each person's doses as taken / due / upcoming / missed.
- A real MCP client script (
demo_client.py) exercises every tool over HTTP, andseed_demo.pycreates a week of realistic history.
Challenges
- Making replies sound natural when spoken ("8 AM", not "08:00") and keeping them short.
- Deciding which scheduled dose "she took it" refers to. I settled on the most recent due or overdue dose, falling back to the next upcoming one.
- Not counting days before a medicine was added as "missed" in the weekly summary.
- Returning errors the voice agent can actually read back (for example, "I don't have anyone called Rahim. I know: Nani.").
- Moving to the newer MCP Python SDK, where some APIs changed.
What I learned
MCP is a clean way to give a voice assistant real, stateful abilities. Designing tool outputs for the ear, not the eye, changes how you write everything.
What's next
- Proactive nudges through Alexa+ routines when a dose is overdue
- Several caregivers sharing one circle with permissions
- Refill reminders and doctor-visit notes
- Bengali and Hindi voice phrasing
- OAuth authentication for public deployment
Built With
- alexa+
- html
- javascript
- mcp
- model-context-protocol
- python
- sqlite
- starlette
- streamable-http
- uvicorn
Log in or sign up for Devpost to join the conversation.