PantryPilot MCP
Provides kitchen-operations tools oriented toward the Amazon Alexa+ assistant: durable pantry/preferences/meal-plan state, shopping-gap analysis, product discovery against an Amazon-style catalog (ASINs, media cards), and a mock/reversible cart draft and confirm flow that never places a real Amazon order. Meal planning can optionally call Amazon Bedrock (Converse) to generate plans, falling back to a deterministic stub when not configured.
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., "@PantryPilot MCPPlan dinners for the week based on what's in my pantry."
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.
PantryPilot MCP
Greenfield TypeScript Model Context Protocol server for the Amazon Developer Hackathon — Alexa+ track.
PantryPilot is a persistent kitchen-operations agent: pantry state, dietary preferences, meal planning, shopping gaps, product discovery, and a mock/reversible cart over MCP 2025-11-25 Streamable HTTP. One tool (kitchen_run) orchestrates the full loop against durable SQLite household memory and structured media cards.
Safety: cart draft/confirm never places a real Amazon order or moves money.
Devpost | |
Demo video | |
Repo | |
Status | Devpost SUBMITTED (2026-09-11) · primary track Alexa+ · mini-challenges AWS Builder + Open Source |
AWS credentials are optional. Without AWS_REGION + BEDROCK_MODEL_ID, meal_plan uses a deterministic stub so local demos and Docker work offline. Live Bedrock (source: bedrock) is an optional enhancement, not required to judge.
Judge Quick Start
git clone https://github.com/burbanodev-lab/pantrypilot-mcp.git
cd pantrypilot-mcp
npm ci
npm run verify-submission
npm startThen open http://127.0.0.1:3000/companion/ → Stock sample pantry → Run weekly kitchen.
One-pager for reviewers: JUDGES.md · full narrative: SUBMISSION.md · failure modes: FAILURE_MODES.md
Aggregate check verify-submission runs build, submission audit, Alexa add-on check, raw MCP conformance, smoke, judge-check, and evals. No AWS credentials required.
Docker (optional)
docker compose up --build
# Health: http://127.0.0.1:3000/health
# Companion: http://127.0.0.1:3000/companion/Hosted MCP at https://pantrypilot.mcpize.run — /health is public; /mcp returns 401 Bearer token required (MCPize gateway). Prefer video + local companion for judging; do not treat the gated /mcp URL as the main live demo.
Related MCP server: Gamito
Architecture
Alexa+ / MCP client
│ POST /mcp (Streamable HTTP, JSON responses)
▼
┌───────────────────────────────┐
│ Express (createMcpExpressApp)│
│ StreamableHTTPServerTransport│ ← @modelcontextprotocol/sdk
│ McpServer + tools │
└───────────────┬───────────────┘
│
┌───────┴────────┐
▼ ▼
SQLite household Optional Amazon Bedrock
store (DATABASE_PATH; (Converse via
+ memory cache) @aws-sdk/client-bedrock-runtime)
│ │
▼ ▼
Mock product catalog Structured meal slots
(ASIN + mediaCard) + mediaCard payloadsLayer | Role |
| Entry: Streamable HTTP, session map, |
| MCP tools (incl. |
| Minimal web companion (HTML/JS) calling |
| Scripted happy-path + soft-failure eval ( |
| MCP resources ( |
| Household pantry / prefs / plan / cart + SQLite durability + |
| Deterministic meal-plan stub + slot enrichment |
| Optional Bedrock Converse meal_plan path |
| Deterministic mock catalog + |
| Asserts protocol |
Tools
Tool | Purpose |
| Add/update pantry items |
| List/filter pantry |
| Dietary preferences |
| Bedrock (if configured) or deterministic multi-day plan; structured slots + |
| Shortfalls vs pantry |
| Mock catalog cards (asin, image, price, URL) + |
| Mock cart (no Amazon order); lines carry |
| Session/household context snapshot |
| Agent loop: pantry → meal_plan → shop → product_search → cart_draft + step log |
Exact tool count is whatever tools/list returns (currently 11 including kitchen_run); smoke/conformance assert required names rather than a frozen integer.
Structured meal + media cards
Meal slots include description, tags, estimatedMinutes, ingredients, and an Alexa-oriented mediaCard (title, subtitle, text, imageUrl, detailPageUrl). Product search and cart lines expose the same mediaCard shape so companion UIs can render consistently.
Bedrock meal_plan (optional)
When both are set:
AWS_REGIONBEDROCK_MODEL_ID
…plus standard AWS credentials (AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_SESSION_TOKEN, shared config, or IAM role), meal_plan calls Bedrock Converse and expects a JSON array of meal objects. On missing config or invoke/parse failure, the server falls back to the stub and reports source: "stub" (and bedrockError when applicable).
Requirements
Node.js 20+
npm 9+
Setup
cd pantrypilot-mcp
cp .env.example .env # optional; add Bedrock vars only if you have access
npm ci
npm run buildRun
npm start
# → http://127.0.0.1:3000/mcp
# Health: http://127.0.0.1:3000/healthEnvironment (see .env.example):
PORT(default3000)HOST(default127.0.0.1; use0.0.0.0in Docker)ALLOWED_HOSTS— comma-separated Host allow-list when not on plain localhostAWS_REGION+BEDROCK_MODEL_ID— enable Bedrock meal plansStandard AWS credential env vars (never commit real values)
Docker
# Stub path (default — no AWS needed)
docker compose up --build
# Optional Bedrock (credentials from your shell / secret store)
export AWS_REGION=us-east-1
export BEDROCK_MODEL_ID=amazon.nova-lite-v1:0
# export AWS_ACCESS_KEY_ID=...
# export AWS_SECRET_ACCESS_KEY=...
docker compose up --buildCompose forwards AWS_* / BEDROCK_MODEL_ID from the host environment; the image itself does not bake secrets.
Smoke test
After npm ci, the smoke script starts an ephemeral server, runs MCP initialize + tools/list, then exits:
npm run smokeExpected output includes:
OK initialize protocolVersion=2025-11-25OK tools/list count=<N>(non-empty; required tools present)SMOKE PASSED
Against an already-running server you can also point a custom client at http://127.0.0.1:3000/mcp using @modelcontextprotocol/sdk Client + StreamableHTTPClientTransport.
Companion UI + evals
npm start
# open http://127.0.0.1:3000/companion/
# Stock sample pantry → Run weekly kitchen → media cards
npm run eval
# PASS happy_path_pantry_meal_cart
# PASS failure_cart_confirm_without_draft
# (+ allergen / budget gate evals)See FAILURE_MODES.md for judge-oriented failure documentation.
Demo script
Preferred (companion): open /companion/ → Stock sample pantry → Run weekly kitchen (kitchen_run).
Tool-by-tool (Alexa+ / MCP client):
Warm start —
session_recallwithhouseholdId: "demo".Stock the pantry —
pantry_upserteggs, milk, rice.Prefs —
prefs_set{ diet: ["omnivore"], servings: 2 }.Agent loop —
kitchen_run{ days: 3, goal: "weekly" }→ steps + meal/productmediaCards + cart.Or manual:
meal_plan→shop_list_build→product_search→cart_draft→cart_confirm.Recall —
session_recallshows cart + pantry counts (SQLite-durable across restart).
SDK notes
Package:
@modelcontextprotocol/sdkv1.30.x (monolith). ItsLATEST_PROTOCOL_VERSIONis2025-11-25.Transport:
StreamableHTTPServerTransportwithenableJsonResponse: trueand session IDs.Optional LLM:
@aws-sdk/client-bedrock-runtime(Converse).See
FRICTION_LOG.mdfor scaffold friction vs the newer v2 /2026-07-28packages and Bedrock notes.
Appendix — GenAI Open Agent 2026 (separate / parallel context)
Not the Amazon submission above the fold. Kept for continuity with a later competition prep trunk.
Track intent: 05 Real-World Industry Agents (household kitchen ops); backup 04 Persistent Memory
Baseline tag:
baseline/pre-genai-2026-10-14— seePREEXISTING.mdSubmission packet:
SUBMISSION_GENAI.mdResources / prompts and durable memory listed above are already part of the Amazon-facing product surface.
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.
AI meal plans that fill your Kroger/Instacart cart - pantry-aware lists, all from chat.
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 AI models to manage Kroger/QFC shopping lists, search products, and plan meals via the Kroger API.1MIT