FreshKeep MCP Server
Integrates with Amazon's ecosystem: exposes kitchen-memory tools to Alexa+ via an Agent Skill, optionally routes natural-language utterances through Amazon Bedrock (Converse router with schema validation and fallback), persists household data in DynamoDB via a DynamoStore adapter, and extracts receipt line items from photos using Amazon Textract.
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., "@FreshKeep MCP ServerWhat needs rescuing in my kitchen?"
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.
๐ฅฌ FreshKeep โ your kitchen's memory, built for Alexa+
FreshKeep gives Alexa+ persistent, structured memory of your kitchen โ it knows what you bought, warns you before food spoils, and turns expiring ingredients into tonight's dinner.
Built for Build, Ship, Shape: The Amazon Developer Hackathon 2026.
Primary track: Alexa+ โ self-hosted MCP server (Streamable HTTP, MCP spec 2026-07-28 via the official SDK; requirement was 2025-11-25+), an Agent Skill definition, and a simulated Alexa+ experience web app that acts as a real MCP client.
Mini-challenges: AWS Builder (Bedrock router + DynamoDB adapter seams) ยท Open Source (MIT).
The problem
The average household throws away roughly $1,500 of food per year (USDA estimates 30โ40% of the food supply is wasted). The reason is not lack of caring โ it's lack of memory: nobody maintains a pantry app when their hands are full of groceries. Voice is the natural fix, but before MCP, Alexa had no persistent, structured kitchen memory to reason over.
Related MCP server: CartWeave MCP Server
The 60-second wow
"We just bought spinach, 500 g of yogurt, and chicken that expires in 2 days" โ FreshKeep tracks them with structured MCP tool calls (visible in judge mode).
"What needs rescuing?" โ 4 at-risk items, most urgent first, with money-at-risk.
"Plan a rescue meal" โ Everything-Left Veggie Omelette, rescuing 3 items, โ$9.60 saved (estimate), and it notices you're missing bread.
"Add bread to the shopping list" โ write-back action completes the loop.
"Waste report" โ rescued vs wasted, in dollars.
๐งพ Bonus: paste a receipt โ FreshKeep proposes the items (noise like totals/tax filtered) โ confirm โ tracked via the same MCP path. With
FRESHKEEP_TEXTRACT=1, receipt photos are read by Amazon Textract.
Everything runs deterministically โ the demo never depends on an LLM behaving. Optional Bedrock mode enhances natural-language routing with strict schema validation and automatic fallback.
Quickstart (2 terminals, no cloud account needed)
git clone <this-repo> && cd freshkeep
pip install -r requirements.txt # add pytest via requirements-dev.txt for tests
# Terminal 1 โ the MCP server (Streamable HTTP on :8811)
python -m freshkeep.mcpserver
# Terminal 2 โ the simulated Alexa+ experience (:8800)
python -m freshkeep.simulator.appOpen http://localhost:8800, accept the consent prompt, press Seed demo kitchen, then use the quick-action chips (โ โโค) or type/speak:
"What needs rescuing?"
"Plan a rescue meal"
"Add soy sauce to the shopping list"
"Waste report"
"Delete my data" (two-step confirmation)
๐งพ button next to the mic: paste a receipt โ review parsed items โ track
Judge mode (right panel) shows every live MCP tool call with arguments, structured JSON results, latency, and which router answered.
Verify the MCP endpoint directly
curl -s -X POST http://127.0.0.1:8811/mcp \
-H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"probe","version":"0"}}}'Tests
pip install -r requirements-dev.txt
pytest -q # 34 tests: tools, router, receipts, API, and a real MCP wire loopArchitecture (summary)
Browser (simulated Alexa+ experience, judge mode)
โ /api/utterance
โผ
FastAPI simulator โโ deterministic router (default)
โ โโโ optional Bedrock Converse router (schema-validated, fallback-safe)
โ MCP: initialize โ tools/call (Streamable HTTP)
โผ
FreshKeep MCP server (official Python SDK, spec 2026-07-28)
โ
โโโ tool layer (validation, unit-aware merge, waste ledger)
โโโ deterministic rescue-meal engine (curated templates, zero hallucination)
โโโ storage: JsonFileStore (default) | DynamoStore (FRESHKEEP_STORE=dynamodb)Full diagram + AWS service justification: docs/ARCHITECTURE.md.
Environment
Copy .env.example โ .env (or export vars). Everything has a safe local
default; no AWS account is required for the core experience.
Variable | Default | Purpose |
|
| MCP server bind |
|
| simulator bind |
|
|
|
|
| local store file |
|
| DynamoDB table |
|
|
|
|
| router model |
|
| utterances/min per client |
|
| consent gate before any storage |
|
|
|
|
| Textract region |
Privacy & safety (short version)
Consent before storage โ nothing persists until granted; withdrawal supported.
Two-step deletion โ "delete my data" then explicit confirmation; nothing is model-callable.
Prompt-injection hardening โ user text is data only; router can only emit schema-validated calls to known tools; destructive tools unreachable from the model path.
Audit log excludes utterance text โ tool names and counts only.
Deterministic core โ AI never controls actions; savings figures are always labeled estimates.
Details + full threat model: docs/SECURITY.md.
Honest status (what is verified)
Capability | Status |
MCP server over Streamable HTTP (spec โฅ 2025-11-25) | โ
tested end-to-end ( |
Simulated Alexa+ experience as real MCP client | โ tested incl. rate-limit, consent, 2-step delete |
Deterministic router + rescue engine | โ unit-tested |
JSON file storage | โ exercised by all tests |
DynamoDB adapter ( | ๐ง implemented behind the same interface; live-verify with |
Bedrock NL router ( | ๐ง implemented with strict validation + fallback; live-verify with the same script |
Receipt ingestion ( | โ text path tested end-to-end; Textract photo adapter implemented, live-verifiable with the same script |
Agent Skill definition | ๐ follows public Agent Skills conventions; final format to be re-verified against Alexa+ docs before submission |
Repository map
freshkeep/ Python package
โโโ mcpserver.py MCP server entry (Streamable HTTP) โ 13 tools
โโโ mcpclient.py Real MCP client used by the simulator + test harness
โโโ tools.py Tool logic + shared JSON schemas (single source of truth)
โโโ router.py Deterministic utterance โ tool router
โโโ bedrock.py Optional Bedrock Converse router (guarded)
โโโ rescue.py Deterministic rescue-meal engine
โโโ receipts.py Receipt parsing (deterministic) + Amazon Textract adapter
โโโ storage.py JsonFileStore | DynamoStore
โโโ models.py Freshness math, validation helpers
โโโ safety.py Validation, rate limiter, PII-light audit log
โโโ seed.py Seeded demo kitchen (relative dates โ always demo-ready)
โโโ simulator/ FastAPI simulated Alexa+ experience + single-file UI
skill/SKILL.md Agent Skill definition for Alexa+
tests/ 29 tests incl. real MCP wire loop
docs/ Architecture, security, demo script, judge guide,
submission draft, product feedback, friction log,
rules complianceDeadline (verified against the official page)
Oct 23, 2026 โ 12:00 PM Pacific (PDT) ยท 3:00 PM EDT ยท = Oct 24, 2026, 00:30 IST (Asia/Kolkata). Re-check before submitting: https://amazonappdev2026.devpost.com/
License
MIT โ see LICENSE.
This server cannot be deployed
Related MCP Connectors
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.
Household-aware cooking brain: pantry, meal suggestions, dietary safety, recipes, shopping lists.
AI-powered kitchen management โ pantry, recipes, meal plans, shopping lists
Your kitchen in chat: pantry stock, shopping lists, recipes and scanned grocery receipts.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceAn 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
- AlicenseNot gradedqualityBmaintenanceEnables Alexa+ users to rescue expiring pantry items by planning high-protein meals, comparing and arbitraging grocery carts across Amazon Fresh, Whole Foods, and a local co-op, mutating dietary constraints mid-session, and checking out through five stateful MCP tools exposed over a Streamable HTTP transport. It also returns interactive MCP Apps UI cards so users can swap meals, filter dietary needs, and complete orders in a single tap.MIT
- AlicenseNot gradedqualityBmaintenanceEnables a voice assistant to keep a shared, persistent memory of a household's kitchen, turning spoken remarks into pantry updates, scaled recipes, a cart, and confirmed grocery orders. Household members can ask what can be made and for how many, review what is low or out, and place or restock simulated orders only after explicit confirmation.7 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables Alexa+ to remember kitchen inventory, track expiration dates, decide what to cook first, and identify missing recipe ingredients or shopping gaps. It provides fast voice-friendly tools for logging groceries, checking expiring items, marking food as used or wasted, and reporting waste and savings.MIT