Inspiration
Managing medications and keeping track of daily health can be challenging for patients, especially those who need regular support from caregivers. Important details, such as missed doses, daily mood, and changes in emotional well-being, can easily go unnoticed.
I wanted to build something that could make these everyday caregiving tasks simpler and more accessible. This inspired CareSync — a Voice-First AI Caregiver Companion, designed to connect patients and caregivers through an easy-to-use interface for medication tracking and health check-ins.
What it does
CareSync provides a voice-enabled interface connected to an MCP-powered backend. Its key features include:
- Medication tracking: Retrieves a patient's medications scheduled for the day.
- Dose logging: Records medication doses marked as taken.
- Missed-dose reporting: Records missed doses and the associated reason.
- Daily health check-ins: Allows patients to record their mood and health notes.
- Family health summaries: Provides caregivers with a summary of medication adherence and patient check-ins.
- Emotional health trends: Retrieves trends based on recorded emotional health information.
- Voice interaction: Uses browser-based speech recognition and text-to-speech to make the interface more accessible.
How we built it
We built CareSync using Python, PostgreSQL, SQLAlchemy, the Model Context Protocol (MCP), and HTML, CSS, and JavaScript.
The Python backend exposes healthcare-related functions as MCP tools, allowing the frontend to discover and call specific capabilities through MCP's Streamable HTTP transport. PostgreSQL stores structured application data, while SQLAlchemy manages database interactions.
We used Docker and Docker Compose to containerize the backend and database services, making the application easier to run in a consistent development environment.
On the frontend, we created a voice-enabled web interface that communicates with the MCP server using JSON-RPC requests. Browser speech recognition captures spoken input, and speech synthesis reads responses aloud.
Challenges we ran into
One of our biggest challenges was establishing reliable communication between the browser and the MCP server. Initially, the frontend returned a Failed to fetch error. We investigated the MCP endpoint, request headers, session initialization, and browser CORS restrictions. Serving the frontend through a local HTTP server instead of opening the HTML file directly helped resolve the issue.
We also encountered a database initialization error when the application attempted to recreate an existing users table. We modified the initialization logic to detect an existing schema and avoid rerunning the initial migration unnecessarily.
Learning Docker while building the project presented another challenge. Understanding container networking, service dependencies, environment variables, and database connections required hands-on debugging. These problems taught us to inspect logs, isolate failures, and troubleshoot each component systematically.
Accomplishments that we're proud of
- Built a working MCP server that exposes six healthcare-related tools.
- Connected a browser-based voice interface to the backend using MCP Streamable HTTP.
- Integrated PostgreSQL for structured health and medication data.
- Containerized the backend and database using Docker Compose.
- Implemented functionality for medication tracking, missed-dose reporting, daily check-ins, family summaries, and emotional health trends.
- Successfully debugged real integration issues involving browser requests, MCP sessions, database initialization, and Docker services.
We're especially proud of bringing multiple technologies together into one working prototype and learning how to debug the complete system rather than treating each component in isolation.
What we learned
Building CareSync gave us practical experience with MCP, JSON-RPC, Streamable HTTP, Python backend development, SQLAlchemy, PostgreSQL, and Docker Compose.
We learned how frontend and backend systems communicate, how database schemas should be initialized safely, and how browser security policies can affect local development. We also gained a better understanding of how voice interfaces can make software interactions more accessible.
Most importantly, we learned that building a useful application is not just about implementing features. Reliability, integration, data handling, and a clear user experience are equally important.
What's next for CareSync
We want to evolve CareSync into a more capable and reliable caregiver companion. Our next steps include:
- Smarter conversational interaction: Moving beyond keyword-based intent mapping toward more flexible natural-language understanding.
- Medication reminders: Adding scheduled reminders and timely notifications for upcoming or missed doses.
- Caregiver notifications: Making it easier for caregivers to stay informed about important changes.
- Improved patient management: Building more complete workflows for registering patients, managing medications, and maintaining schedules.
- Stronger security: Improving authentication, authorization, and protection of sensitive health information.
- Better testing and deployment: Adding automated integration tests and preparing the application for a secure deployment beyond the local development environment.
Our long-term vision is to make CareSync a simple, accessible tool that helps patients maintain their daily health routines and gives caregivers a clearer picture of the support they provide.
Built With
- api
- compose
- css
- docker
- fastmcp
- html
- javascript
- json-rpc
- mcp
- postgresql
- python
- speech
- sqlalchemy
- streamable
- web
Log in or sign up for Devpost to join the conversation.