Inspiration
Every household has the same three problems: "Where did I put the passport?", "Is the fridge still under warranty?", and "Did we pay the electricity bill?" The answers exist somewhere (a receipt, an email, someone's memory), but nothing reminds you before it matters. Alexa+ is already in the kitchen, so it should be the household's memory.
What it does
Hearth is a self-hosted MCP server for Alexa+ that remembers for the whole household:
- Where things are: "I put the passport in the blue folder." Later: "Where's my passport?" It also notices when an item has moved.
- Shared info: wifi password, bin day, the plumber's number.
- Warranties, bills and renewals: Hearth tracks due dates and flags what is overdue, due this week, or due this month. Recurring bills roll to the next date when marked done.
- Receipt reading: paste a receipt and Hearth works out the warranty end date and starts tracking it. If the date is missing, it asks instead of guessing.
- Clarifying questions: if "charger" matches both a laptop charger and a phone charger, it asks which one you meant.
- Voice and screen: every tool returns a short
spokenline for voice, plus structured data for an Echo Show "household brief" card (MCP App).
How we built it
- Python with the official MCP SDK, serving Streamable HTTP (MCP spec 2025-11-25).
- A standard-library-only memory engine on SQLite, covered by 26 unit tests (fuzzy matching, ambiguity detection, urgency buckets, month-end date maths, receipt parsing).
- A deterministic offline receipt parser, with optional Amazon Bedrock extraction that automatically falls back to the offline parser if Bedrock is unavailable.
- An MCP App HTML view for the household brief card.
- An end-to-end smoke client that exercises the server over real HTTP.
Challenges we ran into
- Ambiguous requests. "Where's the charger?" can match several items. We score matches and, when the top two are too close, ask the user which one they meant instead of guessing.
- Dates. Warranty and bill dates arrive in many formats, and day-first formats like 05/10/2026 are common. Adding months also breaks at month ends (31 Jan plus one month must be 28 Feb, or 29 Feb in a leap year), so we clamp the day.
- Never guessing a deadline. A wrong warranty date is worse than none, so when the parser isn't confident, Hearth asks for the missing date instead of saving a guess.
- Voice and screen from one tool. Each tool returns a short spoken line and structured data, so the same call works on a voice-only device and on an Echo Show.
What we learned
MCP tools for a voice assistant should return something speakable as well as structured data. Asking a short question beats guessing on ambiguous requests. Keeping the memory logic separate from the MCP layer made it fast to test thoroughly.
What's next
Alexa+ account linking (OAuth 2.1) so each household has its own private memory, and proactive notifications so Hearth speaks up before a deadline instead of waiting to be asked.
Built With
- alexa
- alexa-plus
- amazon-bedrock
- boto3
- html
- javascript
- mcp
- model-context-protocol
- pydantic
- python
- sqlite
- streamable-http
Log in or sign up for Devpost to join the conversation.