HomePilot AI MCP Server
Optional durable snapshot mirror: when HOMEPILOT_DYNAMO_TABLE is set, the local database restores the latest snapshot on startup and every mutation writes a full snapshot item (pk=homepilot, sk=household-snapshot) to a DynamoDB table via the AWS SDK. Local SQLite remains the source of truth; mirror failures are logged and surfaced in integration status.
Real persistence backing the household state (profile, pantry, shopping list, tasks, plans, activity log) using Node's built-in node:sqlite module. Data is stored in a local database file (default data/homepilot.db, configurable via HOMEPILOT_DB_PATH) and remains durable across server restarts.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@HomePilot AI MCP ServerPlan three affordable dinners this week. Check weather, use pantry, make a shopping list."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
HomePilot AI
A stateful household operations agent with a real MCP server.
HomePilot turns a natural-language household request into a transparent, multi-step plan: read the household profile → check pantry stock → fetch a live weather forecast → choose dinners under diet, allergy, time, and budget constraints → calculate the true grocery gap → propose a shopping list and task → wait for explicit confirmation → apply the changes idempotently and keep an auditable activity trail.
Built for the Alexa+ track of the Build, Ship, Shape: Amazon Developer Hackathon 2026.
Submission deadline used for this build: October 23, 2026, 12:00 PM Pacific. See
docs/JUDGING_SCORECARD.mdfor the requirement-to-evidence map.
Quick start
Requirements: Node.js 24+ (the project uses the built-in node:sqlite module) and npm.
npm install
npm run build # builds the React dashboard into dist/web
npm start # serves API + MCP + UI at http://127.0.0.1:4173No AWS account, API key, or external database is required for the local demo. Weather uses Open-Meteo (keyless). If the network is unavailable, planning continues without weather and says so.
Open http://127.0.0.1:4173 and click Run demo workflow, or paste this prompt into the agent console:
Plan three affordable dinners for this week. Check the weather, use ingredients I already have, make a shopping list for the missing items, and keep everything under my budget.
The workflow proposes a plan but does not mutate the shopping list or tasks until you press Confirm plan.
Useful commands
Command | What it does |
| Production server (API, MCP, built UI) on port 4173 |
| Vite dev server for the React UI, proxying |
| Type-check-free production bundle into |
| TypeScript check of the React app |
| 41 automated tests (domain, tools, agent, shopping, AI fallback, end-to-end) |
| Connects a real MCP client to a freshly spawned server and calls tools |
| Real Amazon Bedrock connectivity check (requires env; exits 2 if unconfigured) |
Related MCP server: Gamito
What the demo shows
Dashboard — live forecast, pantry coverage, budget, pending tasks, and the current plan.
Agent console — streaming execution trace with every MCP tool call, timing, and outcome.
Plan studio — three dinners with weather rationale, pantry-aware gap table, pack-level demo prices, budget check, and an auditable 8-step timeline.
Confirmation gate — the plan is saved as
awaiting_confirmation; shopping and task mutations are blocked until the user confirms.Shopping / Pantry / Tasks — persistent CRUD with optimistic-free server reconciliation.
Activity — every plan, shopping edit, pantry change, task change, and profile update.
Settings — profile editor, integration status, MCP tool inventory, JSON export, and reset.
The same server exposes the full workflow to any MCP client at POST /mcp using the
Streamable HTTP transport and protocol 2025-11-25.
Architecture at a glance
Browser (React 19 + TypeScript)
│ HTTP /api + SSE
▼
Node 24 HTTP server ─────────────────────────────────────────────┐
│ in-process orchestrator (McpBridge) │
│ MCP Streamable HTTP client │
▼ │
POST /mcp ──► MCP server (official SDK, protocol 2025-11-25) │
│ 18 tools, Zod-validated │
▼ │
Domain logic (deterministic) │
SQLite via node:sqlite ◄── seed / persistence │
│ │
├── Open-Meteo (live forecast, cached 10 min) │
├── Amazon Bedrock (optional, advisory AI) │
└── Amazon DynamoDB (optional snapshot mirror)┘The web app is a real MCP client, not a mock: the agent invokes tools through the MCP transport, exactly as an external Alexa+ skill or MCP host would.
Full details: ARCHITECTURE.md.
MCP tools (18)
Core planning and state:
get_household_profile, update_household_profile, get_pantry_inventory,
update_pantry_inventory, get_weather_forecast, plan_meals,
calculate_missing_ingredients, get_shopping_list, update_shopping_list,
get_household_tasks, manage_household_task, create_household_plan,
start_household_plan, record_plan_step, complete_household_plan,
get_plan_status, get_activity_log, reset_household_data.
Schemas, annotations, and example payloads: docs/MCP_TOOLS.md.
Try it without the UI:
# Terminal 1
npm start
# Terminal 2
npm run test:mcpReal vs simulated integrations
Capability | Status | Notes |
MCP server (Streamable HTTP, 2025-11-25) | Real | Official |
Weather | Real | Open-Meteo, keyless; 10-minute cache; labelled forecast; graceful unavailable state |
Persistence | Real | SQLite |
Amazon Bedrock | Real integration, optional | Anthropic-style invoke via AWS SDK; deterministic fallback always available; no credentials bundled |
Amazon DynamoDB mirror | Real integration, optional | Full snapshot mirror + restore when |
Grocery prices | Demo data |
|
Household, pantry, tasks | Demo seed | Clearly labelled demo household; editable in the UI |
Retailer ordering / Alexa purchase | Not implemented | The app creates a shopping list; it never places an order |
Honesty rules used throughout:
A plan is not "applied" until the shopping and task tools confirm it.
Failed Bedrock calls surface a warning and fall back; they never fabricate narration.
Failed Open-Meteo calls return
available: false; planning continues and says so.Prices always carry their source and an explicit "not live retailer prices" disclaimer.
Allergy filtering is a filter, not a safety guarantee.
See docs/DATA_SOURCES.md.
AWS integration
Two genuine AWS services are wired through the official SDKs, both optional and lazy-loaded so the local demo never needs credentials:
Amazon Bedrock (advisory AI)
Model:
BEDROCK_MODEL_ID(for example an Anthropic Claude model available in your region).Region:
AWS_REGION(defaultus-east-1).Uses the standard AWS credential chain (environment, profile, SSO, instance role).
Intent extraction is advisory; the deterministic parser always runs and remains the source of truth. Narration is fact-checked against supplied numbers.
Verify with
npm run verify:bedrock.
Amazon DynamoDB (durable snapshot mirror)
Set
HOMEPILOT_DYNAMO_TABLEto enable.On startup, a fresh local database attempts to restore the latest snapshot.
Every mutation mirrors a full snapshot item (
pk=homepilot,sk=household-snapshot).The expected table has a string partition key
pkand string sort keysk.Local SQLite remains the source of truth; mirror failures are logged and surfaced in status.
Verification status in this workspace: both integrations are implemented and covered by
fallback tests, but they were not exercised against a live AWS account here because no
credentials were available. npm run verify:bedrock correctly exited with code 2
("not configured"). No deployment or AWS success is claimed.
Suggested IAM permissions (least privilege):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "bedrock:InvokeModel",
"Resource": "arn:aws:bedrock:<region>:<account>:inference-profile/*"
},
{
"Effect": "Allow",
"Action": ["dynamodb:GetItem", "dynamodb:PutItem"],
"Resource": "arn:aws:dynamodb:<region>:<account>:table/<table>"
}
]
}Configuration
Copy .env.example to .env if you want to override defaults. The app reads the process
environment directly (no dotenv dependency); use your shell, a process manager, or your
platform's environment settings.
Variable | Default | Purpose |
|
| HTTP port |
|
| Bind address ( |
|
| SQLite file |
|
| Data directory |
| unset | Enables Bedrock advisory AI |
|
| AWS region |
| unset | Enables DynamoDB snapshot mirror |
|
| Labels demo data in the UI/API |
|
| Reserved for log filtering |
Testing
npm test
ℹ tests 41
ℹ pass 41
ℹ fail 0Coverage includes:
Unit conversion, aliases, allergen and diet filters, pantry netting, pack costing, budgets.
All 18 tools registered; Zod validation and structured error codes.
Pantry, shopping, task, plan lifecycle, supersession, idempotency, reset guards.
Intent parsing, confirmation gating, revision replacement, honest fallback.
Bedrock-unconfigured behavior and narration fallback.
End-to-end: real HTTP server + real MCP bridge + SSE + persistence + reset.
Details and the exact commands used: docs/TESTING.md.
Project structure
src/
server.js process entry point
app.js HTTP API, MCP session transport, SSE, static serving
mcpServer.js MCP server + tool registration
mcpClient.js in-process MCP Streamable HTTP client
tools.js 18 tool definitions, Zod schemas, structured errors
agent.js deterministic intent parser + workflows + confirmation
domain.js meal planning, pantry netting, pack costing, budgets
db.js SQLite schema, seed, repository, snapshots
catalog.js demo ingredient/recipe/price catalog
weather.js Open-Meteo provider + cache + honest failure
ai.js Amazon Bedrock intent/narration with fallback
aws.js DynamoDB snapshot mirror/restore
config.js environment configuration
web/
src/ React 19 dashboard, views, components, design system
tests/ 41 Node test-runner tests
scripts/ verify-mcp.mjs, verify-bedrock.mjs
docs/ submission, architecture, tools, testing, strategy, friction
data/ local SQLite database (git-ignored)
dist/web/ built UI (git-ignored)Safety and limitations
Demo prices. Groceries are estimated from a bundled catalog. Check current prices and pack sizes in store.
Allergy filtering is best-effort. Ingredient metadata and cross-contamination are not guaranteed. Always read packaging.
Weather is a forecast. Open-Meteo data is labelled with source and fetch time.
No purchasing. HomePilot prepares a list and a task; it never buys anything.
Single-household demo. There is no authentication or multi-tenant isolation. Do not expose a public deployment without adding auth, rate limiting, and per-user storage.
Bedrock is advisory. The deterministic engine owns every computed number and action.
Submission docs
docs/SUBMISSION_DESCRIPTION.md— copy-ready submission textdocs/DEMO_SCRIPT.md— 3-minute recording plan and narrationdocs/ARCHITECTURE.md— system design and data flowdocs/MCP_TOOLS.md— tool contractsdocs/DATA_SOURCES.md— provenance and honesty labelsdocs/TESTING.md— test strategy and evidencedocs/DEPLOYMENT.md— local, Docker, and AWS notesdocs/HACKATHON_STRATEGY.md— track fit and judging rationaledocs/JUDGING_SCORECARD.md— requirement mappingdocs/PRODUCT_FEEDBACK.md— Alexa+/MCP product feedbackdocs/FRICTION_LOG.md— build friction log (bonus category)
License
MIT — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Household-aware cooking brain: pantry, meal suggestions, dietary safety, recipes, shopping lists.
Scraps Kitchen gives any AI agent a persistent, household-aware kitchen memory. Unlike generic chatbot recall, Scraps maintains structured cooking data: what's in your fridge (with freshness tracking), who you cook for (with allergens, dietary restrictions, and preferences), your recipe collection (with cook notes and per-diner ratings), your shopping list, and your kitchen equipment. 27 tools across 6 domains let agents read kitchen context, suggest meals that respect dietary safety, update the pantry after cooking, and build a history of what works for your household. Every interaction makes the data richer. Cooking history, preference signals, kitchen awareness = better suggestions next time. All tools work via oAuth and a free scraps.kitchen account.
Family meal planning run by your agent: weekly dinners, household votes, grocery list minus pantry.
AI-powered kitchen management — pantry, recipes, meal plans, shopping lists
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceHousehold-aware kitchen brain for AI agents: manage pantry inventory with freshness tracking, shopping lists, recipe collections with cook notes and per-diner ratings, dietary profiles with allergen safety, and kitchen equipment — all through 27 tools with OAuth 2.1 authentication. Includes a free tool for ingredient-based recipe generation without an account (accounts are free!).MIT
- FlicenseBqualityDmaintenanceEnables AI agents to generate budget-disciplined, allergy-safe weekly meal plans, shopping lists, and meal swaps using a fully local deterministic engine.20-
- AlicenseNot gradedqualityDmaintenanceEnables AI-powered household management including inventory tracking, restock predictions, meal planning from available ingredients, and baby supply monitoring through natural language commands.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables agents to manage household pantry inventory, dietary preferences, meal planning, product search, and shopping cart workflows over Streamable HTTP, with optional Bedrock-backed meal generation.MIT