PantryPilot
Integrates with Amazon Alexa+ for voice-driven pantry management and with Amazon Bedrock for generating recipes and weekly meal plans that prioritize soonest-expiring ingredients.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
PantryPilot: an Alexa+ MCP server that fights food waste
Track: Alexa+ (self-hosted MCP server, Streamable HTTP) | Mini challenge: AWS Builder (Amazon Bedrock)
"Alexa, good morning."
"Add six eggs that expire in ten days."
"What's expiring soon?"
"What can I cook tonight?"
"Plan my dinners for the week."
"Which medicines expire this month?"
PantryPilot gives Alexa+ a persistent household pantry plus recipes that use the soonest-expiring food first — reducing food waste one voice command at a time. Recipes come from Amazon Bedrock, with a built-in recipe book (offline_recipes.py) when Bedrock is unavailable.
Note: our AWS account is currently blocked from calling Bedrock models (FR-09), so the live demo uses the offline recipe book.
GET /healthshows the last Bedrock result.
How it works
flowchart LR
user([User speaks]) --> alexa["Alexa+<br/>or the web simulator"]
alexa -- "MCP over HTTPS<br/>Streamable HTTP, /mcp" --> server["PantryPilot MCP server<br/>FastMCP, 20 tools<br/>AWS App Runner"]
server --> db[("SQLite: pantry, shopping list,<br/>meal plan, medicine cabinet")]
server -- "Converse API" --> bedrock["Amazon Bedrock<br/>Nova Micro"]
server -. "if Bedrock is unavailable" .-> book["Offline recipe book"]
ecr["Amazon ECR"] -- "container image" --> serverAlexa+ reads each tool's description to decide which one to call, sends the call over MCP, and speaks the short reply. Every reply is written to be heard: one to four sentences, no lists or markdown.
Related MCP server: Chef's Brain
Tools (all voice-first: short, speakable, no markdown)
Tool | What Alexa says |
| "Add 6 eggs that expire in 10 days" |
| "Use 2 eggs" |
| "What's in my pantry?" |
| "What's expiring this week?" |
| "What can I cook tonight?" → Bedrock, offline recipe book fallback (preference-aware) |
| "Add milk to my shopping list" |
| "Read my shopping list" |
| "Plan my dinners for the week" → Bedrock, offline recipe book fallback (preference-aware) |
| "What did I use this week?" |
| "I don't eat coriander" / "I'm vegetarian" |
| "What are my dietary preferences?" |
| "Plan pasta carbonara for Tuesday" |
| "What's on my meal plan this week?" |
| "Add a bottle of paracetamol 500 mg that expires March 2027" |
| "What's in my medicine cabinet?" |
| "Which medicines expire this month?" |
| "Do we have any allergy tablets?" |
| "I used the last of the cough syrup" |
| "Remove expired medicines" |
| "Good morning" / "What do I need to know today?" |
Medicine cabinet: inventory only, never medical advice
Families keep half-forgotten medicines for years. PantryPilot tracks them like food: expiry dates as printed on the pack ("03/2027", "March 2027"), oldest batch used first, expired stock flagged and never "used", and safe disposal guidance (pharmacy take-back). Questions about dosing, safety, or which medicine to take get a fixed reply pointing to the label, a pharmacist, or a doctor; the same guard keeps medical questions out of the Bedrock recipe prompt.
Quick start (local)
# 1. Clone and set up
git clone https://github.com/abhisuman2001/pantrypilot-alexa-mcp.git
cd pantrypilot-alexa-mcp
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS / Linux
pip install -r requirements.txt
# 2. Configure AWS credentials (needed for Bedrock)
cp .env.example .env # then fill in your values
# AWS_ACCESS_KEY_ID=...
# AWS_SECRET_ACCESS_KEY=...
# AWS_REGION=us-east-1
# BEDROCK_MODEL_ID=amazon.nova-micro-v1:0 (enable in Bedrock console first)
# MCP_API_KEY= # optional: leave blank for local dev
# 3. Run
.venv\Scripts\python server.py # http://localhost:8000/mcpThe server starts with CORS enabled so the web simulator works out of the box.
Web Simulator (demo asset)
The server hosts the simulator at /. Start the server, then open:
http://localhost:8000/ # local
https://kykh233phz.us-east-1.awsapprunner.com/ # live, no setup neededThe page calls /mcp on the same server it was loaded from. Serving it over http(s) (not file://) is also what lets the browser microphone work.
Features:
Alexa-style voice chat UI (dark mode, animated ring)
One-click quick actions for the pantry, shopping list, and recipe tools
Forms for Add Item / Use Item / Add to Shopping List
🎤 Web Speech API voice input (Chrome/Edge)
Natural language parsing: "add 6 eggs expire 10 days", "what can I cook?", etc.
Settings panel: configure server URL + API key
Optional studio-quality voice from ElevenLabs (see below); otherwise the best browser voice
Optional: ElevenLabs voice
Set ELEVENLABS_API_KEY on the server and the simulator speaks replies with an ElevenLabs voice. The page posts the reply text to the server's /tts endpoint, and the server calls ElevenLabs, so the key never reaches the browser. Without a key, or if a call fails, the simulator falls back to the browser voice.
To protect the account's credits on a public server, /tts accepts at most 400 characters per request and 20 requests per visitor every 10 minutes, caches repeated phrases, and stops after ELEVENLABS_CHAR_BUDGET characters (8000 by default, reset on restart).
This only changes the simulator. Real Alexa+ reads PantryPilot's replies in Alexa's own voice.
Use it from any MCP client (the way Alexa+ calls it)
The live server is a standard MCP endpoint, so any MCP client can discover and call its tools.
MCP Inspector (no install):
npx -y @modelcontextprotocol/inspector
# Transport: Streamable HTTP, URL: https://kykh233phz.us-east-1.awsapprunner.com/mcp
# Then: List Tools, and call daily_briefing or add_medicineClaude Code, so an AI agent picks the tools from their descriptions, as Alexa+ does:
claude mcp add --transport http pantrypilot https://kykh233phz.us-east-1.awsapprunner.com/mcp
# then ask: "add six eggs that expire in ten days, then tell me what to cook tonight"Raw JSON-RPC with curl:
curl -s https://kykh233phz.us-east-1.awsapprunner.com/mcp \
-H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"daily_briefing","arguments":{}}}'Local development works the same with http://localhost:8000/mcp.
Run tests
.venv\Scripts\pytest -v
# 168 passedSmoke-test a deployed server end to end (it also reports whether Bedrock answered or the offline recipes were used):
python scripts/live_smoke.py # live App Runner URL
python scripts/live_smoke.py http://localhost:8000 # or any other base URLEnvironment variables
Variable | Default | Description |
|
| HTTP port |
|
| SQLite file path |
|
| Bedrock region |
|
| Model (enable in console) |
|
| Pantry owner when no header present |
| (empty) | Bearer token; empty = auth disabled |
| (empty) | Optional simulator voice; empty = browser voice |
|
| ElevenLabs voice |
|
| ElevenLabs model |
|
| Characters sent to ElevenLabs before |
Privacy & Terms
Served inline by the App Runner deployment:
Privacy Policy:
https://kykh233phz.us-east-1.awsapprunner.com/privacyTerms of Use:
https://kykh233phz.us-east-1.awsapprunner.com/termsHealth check:
https://kykh233phz.us-east-1.awsapprunner.com/health
Deploy (Docker → AWS App Runner)
# One-command deploy (builds, pushes to ECR, creates App Runner service):
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\deploy.ps1Live deployment:
Service URL:
https://kykh233phz.us-east-1.awsapprunner.comMCP endpoint:
https://kykh233phz.us-east-1.awsapprunner.com/mcpECR image:
448049796441.dkr.ecr.us-east-1.amazonaws.com/pantrypilot:latest
Alexa+ Registration
TODO(verify): registration steps pending — see track Resources page.
The MCP endpoint to register is: https://<your-domain>/mcpSubmission checklist
All 20 tools callable via MCP Inspector and web simulator
pytestpasses (168 tests)Bedrock called in code in
suggest_recipeandweekly_meal_plan(preference-aware, offline recipe book fallback)Bedrock answering live — blocked at the AWS account level, see FR-09
Bearer-token auth (
MCP_API_KEY), input validation, no stack traces exposedDeployed over HTTPS —
https://kykh233phz.us-east-1.awsapprunner.com/mcpPrivacy policy and Terms of Use served at
/privacyand/termsset_preferences,schedule_meal,get_meal_scheduleadded (Step 9)Medicine cabinet: 6 tools, inventory only, medical-advice guard
daily_briefingfor an Alexa+ morning routineRedeploy to App Runner with new tools
Demo video recorded (≤ 3 min, voice demo first) — record and link here
Devpost description written — see SUBMISSION.md
Product feedback for every tool/API/SDK used — see SUBMISSION.md
Friction log completed (+10% bonus) — see FRICTION_LOG.md (9 items, severity + workaround + suggestion each)
Demo note: the live deployment runs with
MCP_API_KEYunset so judges can call it without a key. The pantry is shared demo data and resets on every redeploy.
This server cannot be deployed
Maintenance
Related MCP Connectors
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
MCP server for Pinchwork - an agent-to-agent task marketplace with credits-based economy
Unlock the power of food transparency with our Open Food Facts MCP server. Easily look up any food
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server for meal planning and grocery list generation, enabling recipe storage, meal plan creation, and automated grocery lists with ignored ingredients.82MIT
- FlicenseNot gradedqualityDmaintenanceA smart pantry MCP server that gives Claude live access to your pantry ingredients, enabling ingredient tracking, recipe suggestions, and expiry management through natural language.-
- AlicenseNot gradedqualityNot gradedmaintenanceGives Alexa+ persistent, structured memory of a household kitchen: tracking purchased groceries, flagging items at risk of spoiling, proposing rescue meals from expiring ingredients, and maintaining shopping lists, receipt ingestion, and waste reports through MCP tool calls. Storage, tool logic, and safety controls (consent gates, two-step deletion, rate limiting) are exposed over Streamable HTTP for any MCP client.MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables Alexa+ to autonomously orchestrate multi-step household tasks by decomposing goals into parallel tool calls — cross-session memory and dietary/allergy auditing, culinary planning with wine pairings, Amazon Fresh cart assembly with human-in-the-loop purchase approval, smart-home ambiance and climate control, and calendar scheduling. It pairs AWS Bedrock multi-agent reasoning with Streamable HTTP transport and interactive generative UI cards, carousels, and live IoT sliders.MIT