Tabletime
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., "@TabletimeRepair the dinner schedule: lentils need 8 more minutes."
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.
Tabletime
Dinner, together. Four dishes share a cook, two burners and one oven. Tabletime finds a schedule, checks it independently, and repairs the remaining work when something changes.
Try the browser demo · Watch the working demo · Source

Built during September 2026 for the Alexa+ track of the Amazon Developer Hackathon. The entry uses the self-hosted MCP server path. It does not claim Alexa certification or an integration tested on an Echo device.
Run the real MCP version
Node.js 24 recommended. No account, API key, paid service or special hardware.
npm ci
npm run build
npm startOpen http://127.0.0.1:4318. The Under the lid panel says MCP connected and calls the actual MCP tools with the official SDK client. Connect another Streamable HTTP MCP client to http://127.0.0.1:4318/mcp. Protocol negotiation is tested against 2025-11-25.
The server deliberately binds to loopback and checks Host/Origin. It is a single-kitchen local prototype, not a public multi-tenant service. Saved plans live in .tabletime/dinner.json; TABLETIME_STATE_DIR and PORT can select a different local instance. No appliance is controlled.
The public demo runs the same solver and kitchen state machine in a Web Worker, with localStorage persistence. Its Under the lid panel is labelled Private browser demo. GitHub Pages hosts static files; it does not host the MCP endpoint. Fonts and solver assets are bundled; no analytics or model API is called.
Related MCP server: SupperShift
Try three things
Keep the four dishes, one cook, two burners and 19:30 target. Review the dish and equipment timelines, then choose Use this plan.
Choose Lentils need 8 more minutes. This explicitly simulates following the schedule up to simmering. Started steps stay fixed, the remaining work moves, and the later serving time is shown before confirmation.
Start a fresh dinner with Plan my dinner, accept it, then choose The oven isn't available. With this menu and its serving windows, one cook cannot fit the work. Review the independently checked two-cook alternative. Reload after confirmation to resume it.
Recipe timings and serving windows are illustrative. These are four original example recipes for four portions, not a tested recipe collection. Serving windows describe eating quality, not food-safety guarantees. There are no sensors, recipe imports, dietary guarantees, appliance controls or purchases.
What is implemented
Mixed-integer scheduling using HiGHS/WASM: alternative cooking methods, dependencies, exclusive cook/appliance lanes, blackouts, maximum waiting times and serving windows.
Continuous cookware occupancy: consecutive phases of the same saucepan remain on the same burner, including hands-free simmering.
Two-stage objective: first find the earliest feasible serving time at or after the requested target, then reduce waiting and disruption to the previous plan.
Repair with fixed started work and revised durations. Timeout is distinguished from a proof of infeasibility; an unchecked incumbent is never presented.
A separate interval checker verifies all returned assignments, dependencies, lane conflicts, blackouts, frozen history and serving constraints.
Persisted proposals, explicit confirmation, revision checks and idempotency receipts. A proposal cannot silently change the active dinner. The most recent 100 request receipts are retained; request IDs must not be reused after expiry.
MCP tool | Purpose |
| Read recipes, methods and assumptions |
| Resume current plan, revision and recent changes |
| Solve and persist a proposal, without activating it |
| Propose a repair against an expected revision |
| Confirm a reviewed proposal with an idempotent request ID |
MCP tool descriptions tell a client to explain the proposal and obtain the cook's approval. The server enforces state and revision integrity; it cannot verify whether an arbitrary client really obtained human consent. A deployed assistant must implement its own confirmation UI.
Reproduce the checks
npm test
npm run test:mcp
npm run benchmarkThe tests include an independently written exhaustive oracle: 36 small mixed-mode instances match the optimal finish time. Integration checks use the official MCP client over HTTP, inspect protocol negotiation, reject a foreign Origin, confirm/retry/stale-confirm proposals, repair a delay and verify persistence in a new server process.
artifacts/benchmark.json contains the full fixed-seed synthetic benchmark, hardware and settings. The recorded run uses 60 cases with 9–18 tasks and one second per optimization stage:
Result | Recorded value |
Independently valid returned schedules | 60/60 |
First-stage optimum proved within time budget | 24/60 |
Mean finish, MILP | 63.78 minutes |
Mean finish, FIFO greedy | 66.95 minutes |
Mean finish, longest-first greedy | 68.80 minutes |
Mean finish, best of 64 randomized priorities plus longest-first | 63.95 minutes |
Median / p95 solve time | 2,004 / 2,008 ms |
The mean improvement is 4.73% against FIFO and 0.26% against the stronger multistart baseline. This is not evidence of a large optimization breakthrough or measured time savings in real kitchens. The contribution is the constraint model, independently checked repairs and complete stateful interaction. Eight illustrative kitchen configurations are also reported, including infeasible cases. Time-limited results can vary across machines.
Interface and visual assets
The interface was developed from a full-page generated UI study, then implemented as real React components. Design study · Design prompt. Actual schedule bars, status, times and proposals always come from the solver, not the design image.
The five food illustrations are original generated assets, served locally as WebP (about 792 KB total). They are menu illustrations, not photographs of cooking trials. Asset files and prompts. Desktop uses an interactive timeline; narrow screens use expandable step lists with the same real timings.
Code map
core/model.js validates problems and checks schedules. core/solver.js builds the MILP. core/recipes.js defines the menu and repair semantics. core/kitchen.js owns persistent state. server/index.js exposes real Streamable HTTP MCP tools. ui/ implements the display and browser worker; scripts/ contains reproducible benchmarks and protocol checks.
The optional ?capture=1 recorder captures this app's rendered DOM to a silent WebM video, with manually entered captions. It does not access the microphone, webcam, desktop or other tabs.
Limits and next work
Integer-minute timing; at most 48 tasks; fixed recipe assumptions and conservative oven preheating. The time-advance control simulates all steps whose planned start has passed. A real cooking companion needs explicit observed step completion, tested recipes, variable oven temperatures, authentication and per-household storage before wider deployment. No real cooking trials or user outcome study have been run.
Integration friction log
These are observations from this build, not reports of an Amazon service outage. No Amazon device or hosted Alexa runtime was used.
Attempt and reproduction | Expected / observed | Severity and workaround | Actionable improvement |
Load the same HiGHS package in Node and a Vite Web Worker; run | Expected an unambiguous browser entry. Vite reports | Low; use explicit worker/WASM asset URLs and verify the deployed worker independently. | HiGHS packaging could expose a browser-only entry and a current Vite worker example. |
Install on Windows with the machine's configured npm mirror, commit the lockfile, then run | Local installation succeeded. Clean CI failed with | High for reproducibility; generate the lockfile in an empty directory against the official registry, pin the project registry, then verify both Linux and Windows CI. The failure was an install/lockfile issue, not an MCP defect. | npm could identify the exact invalid lockfile entry in the error. CI should always include clean installs on the target platforms. |
Bundle the React display with Lucide in Vite 8.3.0. | Expected a quiet build. Rolldown warns that dependency-level | Low; inspect the warning and verify the client build. No directive stripping or global warning suppression was needed. | Distinguish harmless client-only dependency directives from server/client boundary errors in bundler diagnostics. |
Connect an official MCP client, create a proposal, confirm it, retry the confirmation, then restart the server. | MCP transports the calls successfully, but application durability and confirmation semantics still need explicit implementation. This is a design boundary, not an SDK bug. | Important integration work; persisted revisions, proposals and bounded idempotency receipts are implemented and exercised by | A reference example for stateful consumer workflows should include proposal/confirm, duplicate retries, stale confirmations and restart recovery together. |
Feature requests: Important — a small device-independent Alexa+ MCP conformance harness with exact protocol negotiation, confirmation UI behavior and reconnect/retry cases. Nice-to-have — a maintained browser display example sharing a schema with a self-hosted MCP server. These would help validate the consumer experience before device testing; neither is claimed to be an existing product defect.
MIT for this project's code. Dependency notices and bundled font licenses are preserved in THIRD_PARTY_LICENSES.txt and the installed packages; React, Express, HiGHS, the MCP SDK, Zod, Lucide, html-to-image and Fontsource retain their respective licenses.
This server cannot be deployed
Maintenance
Related MCP Connectors
- QuietaOAuthapp.getquieta
Family calendar MCP server: read the family's week and propose changes a parent approves.
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
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.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables MCP-compatible clients like ChatGPT and Claude to manage a household's shared food inventory, meal plans, recipes, and preferences through natural language, with atomic updates and audit logging.-
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to manage a simulated kitchen by listing menus, starting meals, reporting step progress, advancing the clock, proposing and accepting recovery plans, and querying state with versioned, idempotent mutations.MIT
- AlicenseNot gradedqualityAmaintenanceEnables explainable household replanning by generating reviewable schedule proposals from constraint solving, with transactional MCP tools for retrieving state, proposing changes, committing approved plans, and undoing previous plans.MIT
- AlicenseNot gradedqualityCmaintenanceCoordinates meal plans, shared kitchen resources like cook/oven/hob, and cook handoffs; supports starting/completing steps, previewing timing changes before applying, undo, and state persistence via MCP.MIT