Alexa+ add-on · open-source MCP server · runs on AWS

Your home's memory,
on Alexa+.

HomeKeeper remembers every appliance in your house, reads their manuals so you don't have to, builds the maintenance schedule itself, and reorders the parts you forget about. Ask in plain words; get a grounded answer and a card you can act on.

Alexa, the dishwasher is showing E24.
Oh, that one's easy. E24 means the water isn't draining on your Bosch 300 Series. Check the drain hose for a kink and clean the filter under the lower rack. I've put the steps on screen.
Simulated Alexa+ host showing HomeKeeper's troubleshooting card for a Bosch dishwasher E24 error, with steps from the manual and the source excerpt
Live against the deployed stack: the simulated Alexa+ host calls troubleshoot on Bedrock AgentCore Runtime; Claude grounds the answer in the manual and the MCP App card renders inline.

Why

Every household owns 20 to 40 appliances, each with a manual nobody keeps, a warranty nobody tracks, and a filter nobody remembers to replace. The information exists; it is just scattered across PDFs, receipts and the back of a cabinet. A voice assistant in the kitchen is the natural home for it, but only if it can actually remember across sessions and read the source material instead of guessing.

Remembers

Appliances, purchase dates, warranties and maintenance history persist per household, across every conversation.

Reads

Manuals are chunked, embedded with Amazon Bedrock and retrieved per question, so answers are grounded in the actual document, with the excerpt shown.

Plans

Registering an appliance derives its maintenance schedule: filters, descaling, inspections. HomeKeeper surfaces what is due and what is overdue.

Acts

Consumables are linked to products, so "order the fridge filter" is one turn, confirmed through MCP elicitation.

How it works

Alexa+ talks to add-ons over the Model Context Protocol. HomeKeeper is a self-hosted MCP server (spec 2025-11-25, Streamable HTTP) with MCP Apps cards, deployed to Amazon Bedrock AgentCore Runtime.

Alexa+ (MCP client) ──Streamable HTTP──▶ HomeKeeper MCP server ──▶ Bedrock   Claude Sonnet 4.5: reasoning
        ▲                                on AgentCore Runtime              Titan Embeddings V2: retrieval
        │                                        │                 DynamoDB  household state
        └──── renders MCP App cards ◀────────────┘                 S3        manual chunks + embeddings

Grounded troubleshooting

Manuals are split by section and embedded. Retrieval is a hybrid of cosine similarity and keyword scoring, so an exact code like E24 always hits. Claude writes the answer from the retrieved chunks only.

MCP Apps cards

Tools declare _meta.ui.resourceUri; any MCP Apps host renders the appliance carousel, troubleshooting card, maintenance timeline and order confirmation inline. Cards can call tools back ("That fixed it", "Reorder part").

Confirmation, not guessing

Orders go through MCP elicitation when the host supports it, with a two-step quote-then-confirm fallback. Ambiguous appliance references return candidates instead of a guess.

Maintenance timeline card listing tasks due in the coming weeks with Done and Reorder part buttons, and Alexa's spoken summary of what is overdue
"What needs attention this month?" The timeline card comes from maintenance_due; the spoken summary is written by Claude and voiced by Amazon Polly.

Ten tools, one add-on

register_applianceAdd an appliance (brand, model, room, purchase date). Auto-derives its maintenance schedule.
list_appliancesHousehold inventory, rendered as a carousel card.
ingest_manualAttach a manual (URL or upload) and index it for retrieval.
troubleshootGrounded Q&A against the appliance's manual, with the source excerpt.
maintenance_dueWhat needs attention now and in the next 30 days.
log_maintenanceRecord a completed task; resets its schedule.
reorder_consumableFind and order the matching filter, part or consumable.
warranty_statusIs it still covered, and what do I need to claim.
maintenance_historyWhat has been done, when.
remove_applianceForget an appliance.

Plus a weekly_checkup prompt and four ui://homekeeper/*.html MCP App resources. Because it is plain MCP, the same server works unchanged in Claude, ChatGPT, VS Code and any other MCP host.

A simulated Alexa+ while the toolkit is in preview

The Alexa+ MCP Toolkit is Private Preview, so the repo ships a web host that behaves like Alexa+ against the same server: an MCP client (SigV4-signed for AgentCore), MCP Apps rendering in sandboxed iframes, and two ways to talk.

Type

Bedrock Converse with Claude Sonnet 4.5 runs the tool loop; replies are spoken by Amazon Polly (generative Ruth by default, switchable live).

Talk

Tap the mic for a live session with Amazon Nova 2 Sonic: speech in, reasoning, MCP tool calls and barge-in over one bidirectional stream, with each sentence voiced by Polly.

Built on AWS

Amazon Bedrock AgentCore Runtime

Hosts the MCP server in MCP protocol mode as a Node.js 22 direct-code deploy. No containers.

Amazon Bedrock

Claude Sonnet 4.5 for reasoning and grounded synthesis; Titan Text Embeddings V2 for retrieval; Nova 2 Sonic for live voice.

Amazon Polly

Generative voices for everything the user hears, with SSML so error codes are read letter by letter.

Amazon DynamoDB

Single-table household state: appliances, schedules, maintenance history, orders.

Amazon S3

Manual chunks with their embeddings.

AWS CDK

All of it as code, including the runtime, IAM and an optional Cognito issuer for OAuth-protected inbound auth.

Run it

Node.js 22+. AWS credentials are optional locally; without them the server and simulator run in a rule-based mode that still exercises every tool and card.

git clone https://github.com/ritwikareddykancharla/homekeeper-alexa
cd homekeeper-alexa
npm install
npm run dev        # MCP server on :3000/mcp, simulator on :5173

# with Bedrock
AWS_PROFILE=your-profile AWS_REGION=us-east-1 npm run dev

# deploy to AWS (DynamoDB, S3, AgentCore Runtime)
npm run deploy

Read the README, the friction log and the product feedback.