Tend
Integrates with Amazon Alexa+ as an MCP host, enabling voice-driven caregiving queries and actions such as logging medication doses, checking in on mood, managing appointments, leaving handoff notes, and alerting family members. The bundled Alexa+ simulator also uses Amazon Bedrock for its conversational agent.
Sends alerts as plain-text POST requests to an ntfy topic or any webhook, pushing notifications to caregivers' phones when family alerts are raised.
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., "@Tenddid Mom take her morning pills?"
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.
Tend
A family caregiving MCP server for Alexa+. Tend gives Alexa+ (or any MCP host) a shared, self-hosted record of caring for an aging parent: medication doses, daily check-ins, appointments and who's driving, handoff notes between siblings, and alerts that reach everyone's phone.
"Alexa, did Mom take her morning pills?" "She took her Lisinopril at 8:07, but her Metformin and vitamin D haven't been logged yet."

Self-hosted MCP server: MCP spec 2025-11-25 over Streamable HTTP, built on the official MCP TypeScript SDK v2. 11 tools, 1 prompt, 1 MCP Apps UI resource.
Glanceable card for screens. On Echo Show-class displays (or any MCP Apps host),
get_care_summaryrenders a pill-organizer card. Missed doses can be logged by tapping them.Alexa+ simulator. A web Echo Show with voice in and out. Its agent is an MCP client driven by Amazon Bedrock (Converse API), so you can demo the full Alexa+ loop today.
One SQLite file per household, no cloud required. Built on Node's built-in
node:sqlite.
Why
63 million Americans are family caregivers, an increase of 20 million in ten years (AARP & NAC, Caregiving in the U.S. 2025). Most coordinate over group texts: "Did Mom take her pills?" "Who's taking her to cardiology Thursday?" Missed doses matter. About half of patients with chronic conditions don't take long-term medication as prescribed (WHO).
The parent being cared for often already has an Echo in the kitchen, and talking to it is easier for them than an app. Amazon's caregiving subscription, Alexa Together, is no longer offered. Tend brings the everyday coordination layer to Alexa+ as an open, self-hosted MCP server that the family owns:
Mom says "I just took my blood pressure pill" or "I'm feeling dizzy today".
Priya, two states away, asks "How has Mom been this week?", and Alexa+ answers from the record.
Sam says "I'll drive her to physical therapy", and everyone's screen shows it.
A low-mood check-in or an
alert_familycall pushes a notification to every caregiver's phone.
Related MCP server: SeniorCare MCP
Tools
Tool | What it does | Example utterance |
| Today's doses (taken, due, missed, upcoming), check-ins, next week's appointments, alerts, notes. Renders the MCP Apps card. | "How's Mom doing today?" |
| Logs a dose as taken or skipped. Matches loosely by name or purpose; picks the open dose closest to now. | "I took my blood sugar pill." |
| Manage the daily schedule. History is kept. | "Add vitamin D, 1000 IU, at 9 am." |
| Mood 1–5 plus a note. Mood ≤ 2 alerts the family automatically. | "I'm feeling a bit dizzy." |
| Appointments, and who is taking them. | "This is Priya, I'll drive Mom to cardiology." |
| Handoff notes between caregivers. | "Tell everyone the walker arrives Friday." |
| Adherence per medication with the exact missed doses, mood trend, notes, alerts. | "How has Mom been this week?" |
| Alerts every caregiver; pushes to phones through a webhook. | "Alert the family, Mom fell." |
Plus the daily_briefing prompt: a 60-word spoken morning briefing.
Tools carry MCP annotations (readOnlyHint, destructiveHint, idempotentHint), and every result returns both a speakable sentence and structuredContent. The server's instructions tell the host to keep answers short for voice, never give medical advice, and route emergencies to emergency services first.
How it works
flowchart LR
subgraph Home["Family's devices"]
A["Alexa+ / Echo Show<br/>(or the simulator)"]
H["Any MCP host<br/>(MCP Inspector, desktop agents)"]
end
subgraph Tend["Tend (self-hosted, Node.js)"]
M["/mcp<br/>Streamable HTTP<br/>MCP spec 2025-11-25"]
T["11 tools + prompt<br/>+ ui://tend/care-card.html"]
S[("SQLite<br/>node:sqlite")]
SIM["Alexa+ simulator<br/>MCP client + Amazon Bedrock"]
end
P["Caregivers' phones<br/>(ntfy or any webhook)"]
A -- "tools/call" --> M
H -- "tools/call" --> M
SIM -- "MCP client" --> M
M --> T --> S
T -- "alerts" --> P
SIM <-- "Converse API<br/>tool use" --> B["Amazon Bedrock"]src/server.jsis the MCP surface: tools, prompt, and the MCP Apps resource. A freshMcpServerand statelessNodeStreamableHTTPServerTransportare created per request, so the server scales horizontally and has no session state to lose.src/store.jsholds the domain logic: dose slots, grace windows (a dose is due 30 min before and missed 60 min after its time), adherence, and alerting.ui/card.js+ui/card.cssmake up the care card. The same file renders inside the MCP Apps iframe and in the simulator. The MCP Apps resource is one self-contained HTML document: the ext-apps browser bundle is inlined at serve time, so there's no bundler and no CDN.src/agent.jsis the simulator's brain. It discovers Tend's tools over MCP (it's a real MCP client, like Alexa+), hands them to a model on Amazon Bedrock through the Converse API, and executes the model'stoolUserequests as MCPtools/call.
Quick start
Requires Node.js 22.13 or later (developed and tested on Node 26).
git clone https://github.com/Kavaykhurana/tend.git
cd tend
npm install
npm run seed # a two-week demo household, relative to today
npm startMCP endpoint:
http://127.0.0.1:3000/mcpAlexa+ simulator:
http://127.0.0.1:3000/(voice works in Chrome, Edge and Safari; typing works everywhere)
Connect an MCP host
Use the MCP Inspector:
npx @modelcontextprotocol/inspectorChoose transport Streamable HTTP and URL http://127.0.0.1:3000/mcp. If you set TEND_TOKEN, add the header Authorization: Bearer <token>.
Any agent that supports remote MCP servers over Streamable HTTP can use the same URL. Hosts that support MCP Apps render the care card inline.
Turn on the simulator's voice agent (Amazon Bedrock)
The simulator's chat calls Amazon Bedrock. The quickest route is a Bedrock API key:
In the AWS console, switch to US East (N. Virginia) and open Amazon Bedrock, then API keys, then Generate long-term API keys.
Copy the key into
.envasAWS_BEARER_TOKEN_BEDROCK=<key>, alongsideAWS_REGION=us-east-1.Run
npm start.
Standard AWS credentials (an ~/.aws profile, SSO, or environment variables) also work. The principal needs bedrock:InvokeModel on the model (default us.amazon.nova-pro-v1:0, set with BEDROCK_MODEL_ID).
Without credentials, everything except simulator chat still works: the MCP server, the card, and tap-to-log. The chat explains what is missing.
Configuration
Put these in .env (see .env.example) or the environment.
Variable | Default | Purpose |
|
| Where to listen. Localhost binds get DNS-rebinding protection automatically. |
| (none) | Requires |
| (none) | Comma-separated hostnames to accept when |
|
| SQLite file for the household. |
|
| How the family refers to the person being cared for. |
| (none) | Receives a plain-text POST for every alert. Works as-is with ntfy: |
| system | The household's time zone. Dose times are local wall-clock times. |
| (none) | Amazon Bedrock API key for the simulator's voice agent (or use any standard AWS credentials). |
|
| Simulator voice agent. |
| (none) | Pins the household clock to a time of day, e.g. |
Self-hosting on the internet
Alexa+ and other cloud hosts need an HTTPS URL. Run Tend behind any TLS reverse proxy or tunnel:
HOST=0.0.0.0 TEND_ALLOWED_HOSTS=tend.example.com TEND_TOKEN=$(openssl rand -hex 24) npm startThen register https://tend.example.com/mcp with the bearer token in your MCP host.
Safety and privacy
The family's data stays in one SQLite file on hardware they control. Tend calls no third-party service unless you configure an alert webhook or the Bedrock simulator.
Tend records what the family enters; it does not give medical advice, check interactions, or change doses. The server instructions tell hosts so, and route emergencies to emergency services before
alert_family.The bearer token is compared in constant time. Localhost binds validate
Host/Originheaders. The simulator's tool proxy only exposesget_care_summaryandlog_dose. The card renders family-entered text with DOM nodes, neverinnerHTML.
Tests
npm testnode:test covers dose-slot logic, adherence history, and alerts against a fixed clock. It also runs an end-to-end MCP session over Streamable HTTP, asserting the negotiated protocol 2025-11-25, the tool list, input validation, bearer auth, and the MCP Apps resource. Finally, it runs the simulator's Bedrock tool-use loop against a stubbed Converse client.
Recording the demo video
npm run demo (macOS, with Google Chrome and ffmpeg) produces demo/out/tend-demo.mp4, a narrated walkthrough under 3 minutes:
It starts a private Tend instance on a fresh demo database, with the clock pinned to 9:40 am.
It drives the simulator through a scripted family morning with Playwright, using real Bedrock replies.
It voices the narration and every speaker with the built-in macOS
saycommand.It mixes the audio and video with ffmpeg.
Your own tend.db is not touched. To change the story, edit SCRIPT in demo/record.mjs.
Project layout
src/index.js entry point (env, webhook, listen)
src/app.js Express app: /mcp, simulator, /api/*
src/server.js MCP server: tools, prompt, MCP Apps resource
src/store.js SQLite schema and caregiving logic
src/agent.js simulator agent: MCP client + Amazon Bedrock Converse
src/seed.js demo household
demo/ scripted, narrated demo-video recorder
ui/ care card (shared by MCP Apps view and simulator)
web/ Alexa+ simulator page
test/ node:test suiteLicense
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted MCP server for the Healthie EHR & telehealth API: patients, appointments, charting, tasks.
Read-only MCP server for Sandwich aging-parent care resources and cost data.
MCP server for US nursing facility search and ownership lookup (NursingHomeDatabase).
Authenticated MCP for a user's care circle: read CareEvents, list loved ones, inspect workspace.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceSelf-hosted MCP server that aggregates personal health data from Google Health, Oura, and Withings into a single, provider-attributed interface with configurable source of truth preferences.MIT
- FlicenseNot gradedqualityDmaintenanceThis MCP server enables medicine management, stock/refill estimation, doctor search and availability checks, and appointment management for senior care scenarios.-
- 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 gradedqualityBmaintenanceEnables older adults to log medication doses by voice, receive double-dose and safety alerts, record mood check-ins, request help, and exchange family messages, while giving caregivers multilingual AI digests, adherence reports, refill forecasts, and proactive notifications.MIT