Inspiration

We all know the feeling. You open the fridge, find a bag of spinach that went slimy last week, and realize you just bought more spinach yesterday. Food gets bought, forgotten, and thrown out, and the money goes with it.

Voice assistants should be great at this. They are always in the kitchen, and you can talk to them with messy hands. But when I looked at how Alexa+ works, I noticed something missing: it can suggest a recipe, but it has no idea what is actually in your fridge or what needs to be eaten first. So I built that missing piece.

What it does

ZeroWaste Kitchen gives Alexa+ a memory of your food. You just talk:

  • "I just bought chicken, spinach and yogurt." It remembers them and works out roughly when each will go bad. You never have to type a date.
  • "What's about to go bad?" It tells you, soonest first, so tonight's dinner uses the chicken before it turns.
  • "I want to make palak chicken curry. What do I need to buy?" It checks your kitchen and tells you only what is missing, so you stop buying things you already own.
  • "I cooked the chicken and spinach." It marks them as used.
  • "How am I doing on food waste?" It tells you what you used in time, what was wasted, and roughly how much money that is.

How we built it

ZeroWaste Kitchen is an MCP server (Model Context Protocol), written in Python. MCP is the standard way for an assistant like Alexa+ to talk to outside tools. Ours follows the 2025-11-25 version of the spec and runs over Streamable HTTP, which is what Alexa+ supports.

The key design choice is that Alexa+ is the brain and our server is the memory. Alexa+ already understands speech and thinks up recipes, so our server does not try to do that. It has five small tools (add items, what's expiring, mark used or wasted, shopping gap, waste report) that read and write a simple database and answer immediately. Every answer includes a short sentence written to be spoken aloud, plus structured data.

Because I do not have an Alexa+ device or developer access, I built a simulator that plays Alexa+'s part: it connects to the server, discovers the tools, turns a spoken request into a tool call, and reads back the answer. To be clear, the Alexa+ side of the demo is simulated. The server itself is a real MCP server that does not depend on the simulator.

Built with: Python, the official MCP Python SDK, SQLite, Pydantic, and pytest.

Challenges we ran into

My first plan was to put an AI model inside every tool to suggest recipes. Then I read that Alexa+ expects MCP servers to answer in under 500 milliseconds, and that Alexa+ already does the language work itself. An AI call inside each tool would have been slow and pointless, so I removed it. The server is now fast and predictable, with each tool answering in roughly 5 to 10 milliseconds in my tests.

I also hit a version problem. The newest release of the MCP Python SDK renamed a core class and moved to a newer protocol version than the 2025-11-25 one Alexa+ supports. I pinned the older 1.x release, which works. I wrote both issues up in a friction log in the repo, together with the fact that real Alexa+ access needs approval, which is why I built a simulator.

Accomplishments that we're proud of

  • A working, tested server: 7 automated tests pass, including an end-to-end test that starts the real server and talks to it with the official MCP client.
  • The 500 millisecond limit is checked by a test, not just claimed.
  • Answers are written to sound natural when spoken, not like database output.
  • The whole thing is small enough that anyone can read the code in an evening and run it with three commands.

What we learned

Good voice tools are boring in the best way: small, fast, and focused on one job. I also learned how much the details of a platform matter, like latency limits and protocol versions, and that it is better to find those out early than to discover them after building the wrong thing.

What's next for ZeroWaste Kitchen

  • Support more than one household, with proper account linking so each family has its own kitchen.
  • Replace my rule-of-thumb shelf-life table with a trusted dataset such as the USDA FoodKeeper.
  • Add a visual "expiring soon" card for Echo Show screens.
  • Let you add groceries by photographing a receipt.
  • Deploy it on AWS (Lambda and DynamoDB) so it can run for real households.

Built With

Share this project:

Updates

Submission history