Inspiration
Families often manage everyday household responsibilities and caregiving in completely separate places. Groceries and errands may live in one app, medication reminders somewhere else, and important updates may exist only in text messages or someone's memory.
I wanted to explore what a family assistant could look like if it had one persistent, shared memory that family members could interact with naturally.
That idea became Kinly, a family coordination and care assistant built for the Alexa+ track using the Model Context Protocol.
What it does
Kinly is a self-hosted MCP server that gives an assistant persistent shared family memory.
It provides five tools:
add_taskto add household tasks or errandslist_tasksto see unfinished taskscomplete_taskto complete a task using natural textlog_checkinto record a wellness or medication check-inget_family_summaryto combine open tasks, recent check-ins, and overdue care alerts
For example, one family member can add "Pick up Mom's prescription," another can log that Mom took her medication, and later someone can request a family summary and see both updates in one place.
The shared state is stored in Amazon DynamoDB, so it persists across sessions instead of disappearing when the server restarts.
How I built it
Kinly is built with Node.js and TypeScript using the official Model Context Protocol SDK.
The MCP server exposes its tools through Streamable HTTP, with Express handling the /mcp endpoint and Zod validating tool inputs.
I tested the implementation using the official MCP Inspector, where I verified all five tools end to end.
For persistent storage, I integrated Amazon DynamoDB using AWS SDK v3. Each tool reads the current shared family state from DynamoDB, performs the requested operation, and writes the updated state back.
The server itself remains stateless while DynamoDB provides durable shared memory.
Challenges I ran into
One challenge was navigating the MCP TypeScript SDK ecosystem. Both the stable v1 SDK and a newer generation are visible in current documentation. I initially spent time determining which version was appropriate for a hackathon project before settling on the stable SDK.
I also needed to verify that the server negotiated MCP protocol version 2025-11-25. The Inspector did not clearly display that field, so I verified the full initialization response directly through an HTTP request.
Another challenge came from AWS onboarding. My new AWS Free Plan account was assigned to us-east-2, while many tutorials default to us-east-1. Once I understood the regional restriction, the DynamoDB integration itself was straightforward.
Testing also revealed an interesting voice UX issue: identifying tasks by natural text is much easier than asking someone to speak an internal UUID, but duplicate task names can create ambiguity.
Accomplishments that I'm proud of
I built a working MCP server rather than a mocked prototype.
All five tools work through Streamable HTTP, and the family state persists in real Amazon DynamoDB storage.
I also documented the architecture, setup process, design decisions, developer friction, product feedback, and future roadmap in the public GitHub repository.
What I learned
This project gave me hands-on experience with MCP tools, transports, initialization, testing, and persistent state.
I also learned that designing for a voice-first interface changes seemingly small product decisions. Something as simple as identifying a task needs to feel natural when the user is speaking rather than clicking.
The project also showed how MCP can separate an assistant's conversational experience from the underlying tools and storage system.
What's next for Kinly
The next version of Kinly would add household authentication and isolation so multiple families could use it securely.
I would also improve duplicate-task handling, normalize the DynamoDB data model, add proactive notifications for overdue check-ins, and build an optional lightweight dashboard for family members who prefer a visual view.
Automated testing and CI would also be added before moving beyond the prototype stage.
Built With
- amazon
- amazon-web-services
- context
- dynamodb
- express.js
- http
- inspector
- mcp
- model
- node.js
- protocol
- sdk
- streamable
- typescript
- zod
Log in or sign up for Devpost to join the conversation.