Inspiration
What it does
How we built it
Challenges we ran into
Accomplishments that we're proud of
What we learned
What's next for Home Memory & Mechanic
Inspiration
I'm a Florida home inspector, in houses almost every day for insurers and homeowners. My 4-point and full inspection reports get read once, at closing or renewal, then forgotten. Yet they're the best record of a home's systems. So I put the inspector in the house.
What it does
Home Memory & Mechanic is an MCP server for Alexa+. It learns a house from photos of its data plates, remembers it, and helps keep it insurable and running.
- Scan:
scan_componentreads a data-plate photo for brand, model, serial, capacity and refrigerant, each with a confidence score. It decodes the manufacture date and asks the year when it isn't sure.confirm_componentsaves it, and the owner's date always wins. - Home profile: every system's age against its expected life, plus consumables and what's due.
- Insurability check: roof, electrical panel, wiring, plumbing, water heater and HVAC are each rated Ready, At risk, Likely problem, or Need info, with a fix list. Florida's 4-point is named only for Florida homes. This is not an inspection.
- Triage: guided checks with photo steps for an AC not cooling, a dead outlet, or a chirping smoke alarm. Safety stops end the repair path and write a ticket.
- Exact-fit consumables: filters and alarms, with a cart link only after a yes and never a checkout.
- Maintenance calendar: seasons follow the home's hemisphere. Recall check against the US CPSC list.
- Service tickets: drafted and sent only after an explicit yes.
- Six MCP Apps cards: spoken answers stay short, and the cards carry the detail.
How we built it
- Server: Python 3.12, uv, and the MCP Python SDK (
mcp==2.3.0). Protocol 2025-11-25 over Streamable HTTP, with bearer-key auth. - Surface: 13 tools, 4 resources (
home://profile,home://components/{id},home://reports/insurability/latest,home://history), 3 prompts, and 6 MCP Apps cards rendered fromui://resources. Tests assert all of these. - Photos: uploaded first, so the tools receive only an image key.
- Simulator: our own web app styled like an Echo Show, with browser speech, a simulator backend and a Node front end. It is not Amazon's partner Web Simulator.
- Assistant: a Claude tool-use loop when
BEDROCK_MODEL_IDis set (Anthropic SDK on Bedrock). Otherwise an offline router and a scripted plate reader (DEMO_MODE). - Storage: locally, a JSON home store and a photo folder. AWS-ready:
DynamoHomeStoreandS3PhotoStorewith presigned uploads, tested under moto, and a CDK stack that synthesizes the tables, bucket, KMS key and bearer secret. It isn't deployed. - Rules: shared with Vacant Home Watch through home-conditions-engine and the open-source home-conditions library.
- Tests: 80 tests passing at the last review.
Challenges we ran into
- Partner-only tools. The Alexa+ Category SDK, MCP Toolkit, CLI and Web Simulator read as available, then turn out to be partner-only (F-001). We built our own simulator.
- Import exits the process. Importing
mcp.clicallssys.exit(1)when typer is missing (F-002). - Tools silently dropped. Tools registered after
MCPServeris built are dropped with no warning (F-003). - Elicitation fails on stateless transport. It raises
NoBackChannelErroron the stateless transport even though the client advertises elicitation (F-004). We added a Confirm-tap or second-call fallback. - Bare 421. A non-localhost Host gets a bare HTTP 421 (F-005).
- No container for AgentCore. AgentCore Runtime needs a container image, and Docker isn't installed. The hosting choice is still open.
Accomplishments that we're proud of
- A full MCP server on the newest spec, with cards, elicitation-based consent, and memory across sessions. Restart the server and it still knows the house.
- Hard safety lines: nothing opens a panel, touches gas or refrigerant, or mixes water and electricity. Nothing is bought or sent without a yes.
- Shared rules: the same inspector rules engine runs in both of my entries.
What we learned
- On a voice surface, short spoken answers plus cards beat long answers.
- Consent has to work on every transport: elicitation where the client supports it, otherwise a Confirm tap or a spoken yes.
- When a date is uncertain, asking beats guessing.
What's next
All planned in the repo:
- a deployed MCP URL on AWS
- Strands as the assistant, on AgentCore Runtime with AgentCore Memory
- real Amazon product IDs, instead of spec searches
- Polly and Transcribe voice
- EventBridge maintenance nudges
Built With
- amazon-bedrock
- amazon-dynamodb
- anthropic-sdk
- aws-cdk
- aws-kms
- aws-secrets-manager
- cpsc-recalls-api
- mcp
- mcp-apps
- model-context-protocol
- moto
- node.js
- pytest
- python
- streamable-http
Log in or sign up for Devpost to join the conversation.