Inspiration
Millions of older adults live on their own and take several medicines a day, while their adult children live in another city or another country. The things that go wrong are small and ordinary: the evening pill that gets forgotten, an over-the-counter painkiller that doesn't mix with a blood thinner, a brand on the box that nobody connects to the generic on the prescription. The person who could catch it is often a phone call away and doesn't know there's anything to catch.
A smart speaker is already in the kitchen, it is patient, it speaks several languages, and nobody has to learn an app. I wanted to see how far a careful, sourced, never-guessing voice helper could go, built on MCP so any assistant could use it.
What it does
Dose Buddy is an MCP server with 10 tools and an MCP Apps card, shown in an Alexa+ (Echo Show-style) simulator next to a simulated caregiver phone.
- "Alexa, what do I take now?": doses due now, anything overdue, what's next, and the food rule that matters.
- "I took my pills.": logs doses, counts pills down, warns when a refill is close.
- "Can I take Advil for my knee?": maps Advil to ibuprofen through a cited global brand map, then checks a curated table of 17 high-risk pairs, each citing an exact FDA label quote re-checked against the live openFDA label on every request. It finds two warnings for Dad's list (Plavix: bleeding; Zestril: kidney risk), shows both sources, says to check with a doctor or pharmacist first and never to stop medicines on your own, and alerts the family feed.
- "¿Para qué es la metformina?": plain-language answers in English or Spanish from MedlinePlus, and in Hindi as a marked translation, plus the FDA label's indications and boxed warning.
- Missed doses: a dose more than 90 minutes late is recorded as missed; it tells the person to ask their pharmacist and alerts the caregiver.
- Caregiver briefing: "How is Dad doing?" gives doses taken vs due, misses, what Dad asked and what was flagged, and refills.
- Refills, family messages, and a demo clock so judges can test an evening missed dose any time.
Family alerts are a simulated feed: no SMS, call or push is sent.
How we built it
- MCP server in TypeScript on @modelcontextprotocol/sdk 1.32.1 with stateful Streamable HTTP, protocol 2025-11-25, ten tools with Zod input/output schemas returning structuredContent.
- MCP Apps via @modelcontextprotocol/ext-apps 1.7.5 for one HTML card.
- Alexa+ simulator: Web Speech mic, speech synthesis, an MCP Apps host shim, an agent trace and a caregiver phone panel; a deterministic intent parser in English, Spanish and Hindi makes real MCP tool calls. No paid LLM.
- Data: openFDA labels, MedlinePlus English and Spanish, UK emc, EMA, AEMPS, DailyMed.
- Reliability: live, memory, disk cache, then a snapshot of 36 openFDA responses; DB_OFFLINE=1 runs offline.
- Tests: 43 checks across a simulated day, live and offline; a verifier re-checks all 17 cited quotes.
Challenges we ran into
- Being useful without inventing anything: every fact traces to a source, and a wrong quote fails the build.
- Safety wording: it never says "stop taking it"; tests assert that.
- Going global: brands from US, UK, EU and Spanish sources mapped onto one ingredient list.
- Time: every tool takes an optional household-local "now" for deterministic tests and an honest demo.
Accomplishments that we're proud of
- 17 cited interaction quotes, verified against live FDA label text on every request.
- 43/43 tests pass live and offline.
- Every answer is short enough to say out loud and ends with "Not medical advice. Ask your doctor or pharmacist."
What we learned
- MCP plus MCP Apps fits voice: one tool call gives a sentence to speak and a card to show.
- openFDA is label text, not an interaction database; a small curated table with exact quotes beats a big guess.
- Older listeners need fewer words, the brand name first, and one clear next step.
What's next
- Real notifications once the caregiver opts in, pharmacy refill hand-off, a pharmacist-reviewed larger table, more languages, and a certified Alexa+ integration.
Built With
- dailymed
- edge-tts
- express.js
- ffmpeg
- mcp-apps
- medlineplus
- model-context-protocol
- node.js
- openfda
- playwright
- typescript
- web-speech-api
- zod

Log in or sign up for Devpost to join the conversation.