Inspiration

Kids, and adults too, ask dozens of curious questions a day: why is the sky blue, why do planes leave white lines, how do noise-cancelling headphones work. Most never get answered, because dinner is cooking or the car ride ends and the moment passes. Those questions are the best learning signal a family has, and nothing keeps them. We wanted "I wonder…" to become something you can say once, out loud, and trust it will come back.

What it does

Wonder is an inbox for curiosity on Alexa+. During the day you say "Alexa, I wonder why planes leave those white lines in the sky", and Wonder saves the question in your own words. It ignores small talk like "want coffee?" and merges repeats. In the evening, "Alexa, what are tonight's answers?" gets a short, plain-English explanation, and a reminder goes to your phone. Each answer ends with a one-word recall check ("B") so it sticks, and "tell me more" adds detail and a source. "How was my week?" tells you how many questions you caught, your favourite themes and how much you remembered.

How we built it

Wonder is a self-hosted MCP server built with the official TypeScript SDK. It uses spec 2025-11-25 over Streamable HTTP, the standard Alexa+ add-ons use. It has six voice-first tools (save_question, list_questions, answer_questions, get_answer, check_quiz_answer, weekly_report), and each one returns a ready-to-speak sentence plus structured data. A classifier turns spoken phrasing into a clean question and filters out small talk. Answers come from Amazon Bedrock (Amazon Nova), with a built-in offline knowledge base as a fallback. Questions are stored in SQLite and the phone reminder goes out through ntfy.sh. There's no public Alexa+ test console, so we also built a simulated Alexa+ page. It's a real MCP client in the browser that shows every JSON-RPC message. The server runs on Cloudflare Containers at wonder.aifanatic.pro and has 18 automated tests.

Challenges we ran into

  • We had no way to hear the real Alexa+ choose between our tools, so we designed the tool descriptions and spoken replies carefully and built a simulator to test the whole flow.
  • The SDK's DNS-rebinding protection broke behind a proxy, so we switched to checking Origin only.
  • Stateless Streamable HTTP needs a new server and transport for every request, and that isn't obvious.
  • We started on the Bee wearable track and learned it needed hardware we didn't have, so we moved the same question pipeline to Alexa+.

Accomplishments that we're proud of

  • One MCP server works with Alexa+, desktop assistants and our tests, unchanged.
  • Answers are short enough to say out loud and end with a recall check, so the learning actually sticks.
  • Privacy by design: only the question text is stored (no audio), with Pause, Delete Today and a parent-consent toggle.
  • We contributed an upstream fix to an open-source CLI along the way (Open Source mini challenge).

What we learned

Designing for voice is a different job from designing for a screen: tool descriptions decide which tool runs, and every reply has to make sense when spoken. MCP made the Alexa+ integration a clean, testable contract instead of custom glue code.

What's next for Wonder

Test with real Alexa+ once MCP add-ons are open to developers, add per-child profiles and age-appropriate answers, spaced-repetition recall checks across the week, and a weekly email for parents.

Project description (technical detail; use it under "How we built it" if you have room)

Tagline: An inbox for curiosity. Ask Alexa+ "I wonder why…" during the day; Wonder answers it tonight.

What it does. Families ask dozens of questions a day: why is the sky blue, why do planes leave white lines, how do noise-cancelling headphones work. Most never get answered, because the moment passes. Wonder gives Alexa+ a place to put them. Say "Alexa, I wonder why planes leave those white lines in the sky", and Wonder saves the question in your own words. Small talk like "want coffee?" is filtered out, and repeats are merged. In the evening, "Alexa, what are tonight's answers?" gets a plain-English explanation of 80 words or fewer, and a reminder lands on your phone. Each answer ends with a one-word recall check ("B") so it sticks, and "tell me more" adds detail and a source. "How was my week?" reports how many questions you caught, your favourite themes, and how much you remembered.

How it works.

  1. MCP server: src/wonder-mcp.js is built with the official @modelcontextprotocol/sdk. It negotiates protocol 2025-11-25 and serves stateless Streamable HTTP at POST /mcp with JSON responses, which is proxy-friendly. Origin validation guards against DNS rebinding, as the spec requires.
  2. Six tools, designed for voice: save_question, list_questions, answer_questions, get_answer, check_quiz_answer, weekly_report. Each has a title, an input and output schema, and MCP annotations (read-only / idempotent / open-world). Each returns a ready-to-speak speech string plus structured data, so Alexa+ can read it straight out. Server instructions tell the assistant when to call which tool.
  3. Understanding the question: "I wonder why planes leave…" becomes "Why do planes leave…?". A classifier decides whether it's a real, learnable question (why / how / factual / definition) and drops small talk, errands and rhetorical questions. It respects the household's topics-to-ignore and sensitivity settings, and near-duplicates from the same day are merged. Everything is stored in SQLite (node:sqlite).
  4. Tonight's answers: Amazon Bedrock (Converse API with a Bedrock API key, Amazon Nova) or the Anthropic API writes each answer, quiz and source, validated against a schema. With no model configured, a built-in knowledge base answers common questions, and Wonder says plainly when it can't answer instead of inventing one. The digest also sends an ntfy.sh push to the phone.
  5. Simulated Alexa+ (public/alexa.html, at /alexa): a real MCP client running in the browser. It does the initialize handshake, tools/list and tools/call, with a live "MCP traffic" panel, a microphone (Web Speech API) and optional spoken replies. Simple intent rules stand in for Alexa+'s language model when picking the tool.
  6. Deployment: the unchanged Node server runs on Cloudflare Containers behind wonder.aifanatic.pro. Anyone can verify it with npm run mcp:check -- https://wonder.aifanatic.pro/mcp, which uses the official SDK client.
  7. Quality: 18 automated tests, including a real MCP client against /mcp covering the handshake, all six tools, grammar clean-up, the small-talk filter, the quiz and Origin rejection.

Built With

  • alexa+-(simulated-client)
  • amazon-bedrock-(amazon-nova)
  • cloudflare-containers
  • model-context-protocol-(typescript-sdk-1.32
  • node.js-22+-(`node:sqlite`)
  • ntfy.sh
  • puppeteer-core
  • spec-2025-11-25)
  • zod
Share this project:

Updates

Submission history