Inspiration
Voice assistants are great at answering one question and terrible at remembering you. Studying is the opposite: it only works when something remembers what you keep getting wrong and brings it back at the right time. We wanted a study partner you can talk to hands-free that actually builds a memory of your weak spots.
What it does
StudyBuddy is a self-hosted MCP server for Alexa+ (spec 2025-11-25, Streamable HTTP) plus an agentic Alexa+ simulator.
- Spaced-repetition quizzes: a Leitner-box system. Miss a card and it comes straight back; get it right and it moves out.
- Voice-tolerant grading: answers like "fifty six" match 56, and typos and plurals are forgiven, but near-misses like 156 are not.
- Your notes become flashcards: paste notes and the server turns them into short, speakable questions with model on Amazon Bedrock, or with an offline rule-based fallback.
- Revision plans and tasks: multi-day plans are saved as tasks.
- Progress reports: streak, accuracy and weakest subjects, all from stored data.
- Per-learner data and timezones: every learner's cards and tasks are separate, and the agent can set a timezone when a learner says where they live.
In the simulator, an LLM agent discovers the server's 10 tools over real MCP and decides which to call. The trace panel shows every call.
How we built it
- Server: Python with the official MCP Python SDK, 10 tools with titles and annotations, SQLite storage, served over Streamable HTTP.
- Agent: an agent loop where Claude Haiku 4.5 on Amazon Bedrock (Converse API with tool use, ap-southeast-2) reads the MCP tool list and chooses tools. Every call is executed over real MCP, not stubbed.
- Graceful fallback: with no Bedrock configured, a keyword router and a rule-based flashcard extractor keep everything working offline. This is how the public instance runs.
- Config and safety: all settings live in a git-ignored
.env. AWS keys never go in the repo or on the public server. The server also has input limits, host checks and optional auth. - Quality: 80 automated tests, a
selfcheck.pythat exercises a running server over real MCP, GitHub Actions CI, Docker, and a free Render deployment. - Licence: open source under MIT.
Challenges we ran into
- No real Alexa+ to test on. We built a simulator so the full MCP flow could be shown honestly, and we say so plainly.
- Rate limits. Haiku 4.5 allowed about 10 requests a minute, and each agent turn can use two or more, so we paced the demo.
- Not leaking credits. A public Bedrock agent can spend someone's AWS money. We made keyword mode the default for the public instance and kept Bedrock behind a local
.env. - Free hosting limits. The free tier sleeps when idle and has no persistent disk, so the first load is slow and data resets on restart.
Accomplishments that we're proud of
- A real, spec-compliant MCP server with an agent that discovers and uses its tools, not a hard-coded script.
- A memory loop that visibly works: miss a card, see it return.
- A design that never breaks: every Bedrock feature has an offline fallback.
- 80 passing tests, CI, and a one-command self-check against any running server.
- Being upfront about what runs where, including a simulator instead of real Alexa+.
What we learned
- Letting the model choose tools over real MCP is more flexible than a keyword router, but the router is what makes the app reliable when the model is unavailable.
- Voice changes everything about grading: numbers, typos and plurals matter more than exact text.
- Credential hygiene matters on day one: git-ignored config, a separate public mode, and short-lived keys.
What's next for Alexa+ (StudyBuddy)
- Run it on real Alexa+ once access is available, using the same MCP server unchanged.
- Richer media: cards and carousels for flashcards and progress.
- Account linking and persistent storage so a learner's memory survives restarts.
- More input sources: photos of notes, textbook chapters, class schedules.
- Reminders at the right time for due cards.
Log in or sign up for Devpost to join the conversation.