Hearthkeep
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., "@Hearthkeepwhat appliance maintenance is due this week?"
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.
Hearthkeep
Hearthkeep is a local home-upkeep assistant: an MCP server plus a browser simulation of an Alexa+ style host. You talk through upkeep reminders, a fictional parts catalog, and a mock checkout. The default run stays on this computer. It does not call Amazon, Alexa, or a real payment, catalog, or booking provider.
Simulation disclosure
This project is a simulation. Appliances, households, prices, brands, and appointments are fictional. Payment is a mock that accepts only the demo purchase code. The simulator is not the Alexa app and it does not control devices in a house. The simulator frame and every card show a "Fictional data" label. The ribbon reads SIMULATION — not a real Alexa+ device.
Related MCP server: HomeBrain
Prerequisites
Node.js 20 LTS or newer
npm 10 or newer (this repo is an npm workspaces monorepo)
A Chromium-based browser for the simulator page
Chrome for
npm run test:e2e(Playwright uses thechromechannel)
No API key is required to install, run, or run npm test.
Install
From a fresh clone, with no .env file:
npm cinpm run demo reads .env when that file exists. Otherwise it reads .env.example, which contains only demo-safe values. .env is git-ignored.
Run
npm run demoThat starts both processes and leaves them in the foreground until you stop them (Ctrl+C):
Process | Address |
MCP server | |
Simulator |
Open http://127.0.0.1:5173. The first screen is the welcome overlay. Choose Start.
Health check:
curl -sS http://127.0.0.1:8787/healthzWith the demo defaults the body is JSON with status ok, protocolVersion 2025-11-25, storage sqlite, payment mock, simMode true, and simNow 2026-10-21T09:00:00-07:00.
The server log line is Hearthkeep MCP server listening on http://127.0.0.1:8787/mcp.
Test
npm testVitest covers the health payload, the domain rules, the protocol cases, the cards, and the planner. npm run typecheck runs the strict TypeScript projects.
E2E
Playwright opens the simulator in Chrome at 1280×800. The command starts the MCP server on 127.0.0.1:8787 and the simulator on 127.0.0.1:5173 with HK_SIM_MODE=1 and the database file data/e2e.db.
npm run test:e2eChrome has to be installed. The suite uses Playwright's chrome channel. It walks the simulator flows, including the quick chips, the cards, and the offline banner.
Env table
npm run demo fills a documented default when a variable is missing from both the environment and the env file. A value already present in the environment wins over the file.
Env var | Default | Status | Purpose |
|
| Implemented | Bind address and port. The server listens on localhost. |
|
| Implemented | SQLite file. Tests can use |
|
| Implemented | Origin allowlist for the browser host. |
|
| Implemented |
|
|
| Implemented | Seed clock. Passed through as a timestamp string, offset included. |
|
| Implemented | Mock payment confirmation code. An unset value uses |
|
| Implemented |
|
| unset | Not implemented | Listed for a future static bearer token. The server does not read this variable. Localhost has no auth. |
| unset | Not implemented | Listed for a future planner model. The host always uses the deterministic offline planner. Setting these variables does not call a model. |
| unset | Video script only | Set the environment variable |
Demo script
Household names, prices, brands, and the purchase code in this script are fictional sample data. The two code chips send the demo code. The transcript and the trace show •••• in place of the digits.
Run
npm ci, thennpm run demo.Open http://127.0.0.1:5173 and choose Start. The clock reads Wednesday, October 21, 2026, 9:00 AM. The badge reads
Deterministic (offline).Press the quick chips from left to right, in the order below. Wait until the assistant finishes each reply before you press the next chip.
Order | Chip | What you should see |
1 | What needs doing? | Morning briefing. The dryer vent cleaning is overdue and the fridge water filter is due today. Status card. |
2 | Order a new filter for the fridge | Two filters that fit the fridge. The certified Rillstone CX-28 is the one to choose. Options card. |
3 | Yes, the CX-28 | Checkout for $24.99, arriving Friday, October 23, within the $60 limit. The assistant asks for the purchase code. |
4 | Say purchase code (demo) | Receipt. The order is placed. The code is masked. |
5 | The hallway smoke alarm keeps chirping | Low battery. Two 9-volt batteries are already on the garage shelf, so nothing is purchased. Task card. |
6 | Done, I swapped it | One battery left. The next battery change moves out by a year. |
7 | Book someone to clean the dryer vent next week | Three openings. The earliest is Tuesday morning with Ventora Home Care. Options card. |
8 | Tuesday morning | Checkout over the $60 limit. The assistant asks you to approve and give the code. |
9 | Approve with code (demo) | Booking receipt for Tuesday, October 27, 9 to 11 AM. |
10 | I just installed a new water heater, a Brimwell WH-40, in the garage | The water heater is registered. A flush reminder is set for October 2027. |
11 | When is the water heater due? | The flush is due in October 2027. |
12 | I smell gas in the kitchen | Safety alert. Leave and call for help from outside. No shopping or booking tool runs. |
Trace shows each tool call with the code redacted. Data shows the fictional household tables and is read-only. Reset demo reseeds the clock and the database. Next morning advances the clock one day and opens a new session. New session keeps the database and opens a new MCP session.
Data notice
All sample households, appliances, prices, brands, and appointments in this repository are fictional and were invented for the demo. They are not real customers, orders, or offers. See docs/data-notice.md. Seed files live in data/seed/ and each one opens with a fictional-data notice.
Architecture
See docs/architecture.md. Protocol check notes are in docs/spec-notes.md.
apps/mcp-server— Streamable HTTP on127.0.0.1:8787, ten tools, five card resources,GET /healthz, and/sim/*packages/core— domain rules and the SQLite repositoryapps/simulator— Vite + React host on127.0.0.1:5173
Troubleshooting
Ports. The MCP server binds HK_HOST:HK_PORT (default 127.0.0.1:8787). The simulator binds 127.0.0.1:5173. If either port is taken, stop the other process and run npm run demo again. The simulator uses a strict port and exits when 5173 is busy.
Origin. Open the simulator at http://127.0.0.1:5173 or http://localhost:5173. Those two origins are the default HK_ALLOWED_ORIGINS. A page served from another origin receives HTTP 403 on /mcp and on /sim/*.
Reset. In the simulator, Reset demo calls POST /sim/reset. The response is { now, seed: "v1" } and the clock returns to HK_SIM_START (default Wednesday 2026-10-21 09:00, offset -07:00). Removing the git-ignored file data/hearthkeep.db drops the local SQLite file. The next start loads seed v1. With HK_SIM_MODE=0, every /sim/* path returns 404.
No .env. That is a supported start. npm run demo loads .env.example when .env is absent.
Health check is not ok. curl -sS -D- http://127.0.0.1:8787/healthz should return HTTP 200 and JSON. If the connection is refused, the server process is not up or HK_HOST / HK_PORT point somewhere else.
Can't reach the home server. The simulator shows that sentence in a banner, with a Retry button, when it cannot open a session. Start npm run demo if it is not running, confirm curl -sS http://127.0.0.1:8787/healthz returns 200, then press Retry. Retry opens a new session and keeps the transcript already on screen. The same banner appears if you stop the server in the middle of a turn.
License
MIT. Copyright (c) 2026 Psyche. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Mock REST APIs, fake OAuth2/OIDC provider, uptime monitors + heartbeats, live badge/QR images.
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.
Build, debug and break hosted mock APIs from Claude: endpoints, stateful CRUD data, OpenAPI import, response variants and fault injection.
Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables households to manage appliance inventories, manuals, warranties, and maintenance through natural-language voice interactions, with grounded troubleshooting and consumable reordering.MIT
- AlicenseNot gradedqualityBmaintenanceA self-hosted MCP server that gives an Alexa+ household a durable operational memory for home repairs, warranties, and service cases, enabling multi-turn troubleshooting, provider booking, and reminders.Apache 2.0
- AlicenseNot gradedqualityCmaintenanceTurns a local business's menu, hours, and booking rules from one JSON config into voice-callable tools, so an Alexa+ assistant can answer questions, quote and place pickup orders, check order status, and book appointments with customer confirmation. Works for restaurants, barbershops, salons, and clinics as a self-hosted Streamable HTTP server with a live owner dashboard.MIT
- AlicenseNot gradedqualityCmaintenanceEnables hands-free, context-aware control of a smart home by exposing MCP tools for device control, routine orchestration with confirmation flows, object finding, scene description, recent event history, and daily briefings. It keeps a mock home-state model with SQLite event memory and includes a web simulator that acts as an MCP client.MIT