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: household-agent
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.
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
Cross-tool persistent memory and context for AI assistants over MCP.
1
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
- 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 assistants to read current pantry inventory and low-stock shopping needs, export a shopping queue, and perform idempotent inventory adjustments and catalog link management through remote MCP tools.MIT
- AlicenseNot gradedqualityBmaintenanceEnables Alexa+ to access a live household food inventory, providing expiry warnings, use-it-up recipe suggestions, and grocery list management.MIT