Inspiration
Alexa+ can hold a brilliant conversation, but a household assistant is only as useful as the household context it can actually reach. Our own family reality: a grocery list stuck in one phone, chores tracked on a sticky note, and movie-night debates that go nowhere. Alexa+ has the conversational brain; what it lacked was a set of hands into the household's operational data.
The Model Context Protocol is the perfect bridge: Alexa+ gets real tools, and the family data stays on our own hardware. So we built Household Ops MCP - a self-hosted MCP server that turns Alexa+ into a genuine household copilot.
What it does
Household Ops MCP exposes five deterministic household tools over the official MCP spec (2025-11-25, Streamable HTTP):
- household_summary - one call gives Alexa+ the full picture: who is home, the shopping list, this week's chores and the movie-night plan.
- add_grocery_item - "Alexa, we're out of coffee" ends with the item actually on the shared list.
- get_shopping_list - read the list back grouped by store section, so one voice session equals one complete shopping run.
- assign_chores - deterministic rotation over the household members. No arguments about fairness: the server decides, Alexa+ announces.
- plan_movie_night - a deterministic picker that takes everyone's veto list and returns the evening plan.
Every tool is intentionally deterministic - the same household state always produces the same decisions. That keeps the assistant predictable and debuggable, which is exactly what you want when the whole family depends on it.
How we built it
- TypeScript + Node.js 22, built on the official @modelcontextprotocol/sdk (^1.10).
- Streamable HTTP in stateless JSON mode - a single /mcp endpoint, trivially self-hostable on any home server or small VPS behind HTTPS.
- Full MCP lifecycle implemented and verified with live round-trips: initialize handshake, notifications/initialized (HTTP 202), tools/list, and tools/call with structured content responses; GET on /mcp correctly returns 405.
- Tested end to end: the test suite walks the whole protocol lifecycle, and GitHub Actions CI runs install, typecheck and tests on every push - currently green.
- In-memory household store behind a clean service layer, so swapping to a real database later is a one-file change.
Challenges we ran into
- Getting the stateless JSON-mode details of Streamable HTTP exactly right: the server must be strict about what it accepts on GET vs POST, and the initialized notification must be acknowledged with 202 rather than a response body.
- Protocol version negotiation - implementing to the 2025-11-25 spec revision while staying compatible with SDK client behavior.
- Making chore rotation and movie picking deterministic and explainable rather than random, so the family trusts the answers and every decision can be replayed in tests.
Accomplishments that we're proud of
- A clean, fully typed, production-shaped codebase that a reviewer can read in ten minutes.
- Protocol-level correctness proven by tests: the same round-trips a real MCP client performs, asserted in CI.
- Zero external services required: clone, npm install, npm run build, npm start, point any MCP-capable client (like Alexa+) at the /mcp endpoint.
What we learned
- The MCP spec rewards careful reading: small details (202 acknowledgements, exact protocolVersion echo, structured tool content) are what separate a working server from a broken one.
- Deterministic behavior is a feature for household tools: predictability beats cleverness.
What's next for Household Ops MCP
- Persistent storage (SQLite) and multi-household support behind the same service layer.
- More domains: shared calendar, meal planning, home maintenance reminders.
- An Alexa+ agent configuration guide so any household can self-host it in an afternoon.
Built with
TypeScript, Node.js, @modelcontextprotocol/sdk, Streamable HTTP, GitHub Actions
Built With
- ai-agents
- alexa
- api
- json
- llm
- mcp
- model-context-protocol
- node.js
- open-source
- smart-home
- typescript
Log in or sign up for Devpost to join the conversation.