Inspiration
What it does
Inspiration
Australia has 17 streaming services worth tracking, from Netflix and Stan to ABC iview and 7plus, and no single place answers the question a household actually asks at 7pm: what's new tonight on the ones we pay for? Streamday started as a free AU release-calendar app. Voice is the natural home for that question, so for this hackathon we gave it to Alexa+.
What it does
Streamday for Alexa+ is a remote MCP server that turns a day-by-day release calendar into answers you can say out loud:
- What's new tonight, this weekend or next week, on your services only (
whats_on). - Tonight's pick: it ranks what's fresh by the shows you follow, how big the release is, your mood ("something light"), the time you have and popularity, says why for each pick, and won't repeat what it suggested in the last few days (
tonight_pick). - When's the next episode of a show, which services carry it, and whether you have one of them (
next_episode). - Follow a show and set your services by voice (
follow_show,set_my_services). - Plan my week: followed shows on their release night, then the biggest premieres on your free nights, skipping nights you say you're busy (
plan_my_week). - Memory across sessions: each viewer's services, followed shows and recent picks persist, so "what do I follow?" works the next day (
my_streamday).
Results come back as show cards through an MCP App (ui://streamday/cards.html), so hosts that support MCP Apps render posters, services and Follow buttons, and those buttons call follow_show back through the host.
Because Alexa+ isn't open for third-party MCP testing yet, we also built a simulated Alexa+ smart display. It's a web page with voice in, spoken replies, a light bar and an "Under the hood" panel that lists every MCP call as it happens. The simulator is a genuine MCP host: it connects to the server as an MCP client and lets an LLM choose the tools.
How we built it
- MCP server: Node.js with the official
@modelcontextprotocol/sdk(1.32), protocol 2025-11-25 over Streamable HTTP. It runs stateless with JSON responses as a Netlify Function at/mcp. - Agentic layer: pure functions for ranking tonight's picks, planning the week and wording answers for speech, covered by unit tests.
- Memory: Netlify Blobs, one record per viewer, keyed by an
x-streamday-viewerheader or a?viewer=parameter on the server URL. - MCP App:
@modelcontextprotocol/ext-apps. The view is bundled with esbuild into one self-contained HTML resource. - Data: Streamday's own release calendar, built from TMDB with JustWatch availability and precomputed per month, so the MCP server needs no API keys.
- Simulator: Web Speech API for listening, speech synthesis for replies, and a serverless MCP host that passes the server's tools to an OpenAI model and runs its tool calls over MCP.
- Testing: the official MCP client calls every tool against production, plus a six-turn conversation test and Playwright screenshots.
- Built by Treyn at AppForge Digital, with Claude as an AI coding partner.
Challenges we ran into
- We started on the Fire TV track. The Vega Virtual Device only runs on macOS and Linux, and new Fire TV Sticks run Vega OS rather than Fire OS, so with only a Windows PC and no device we switched to Alexa+.
- There's no Alexa+ console for testing a custom MCP server yet, so we built the simulator to prove the experience end to end.
- A production-only bug: our Netlify Blobs store was cached across warm function invocations, and its request-scoped token expired, so memory reads failed after a while. Recording the demo video caught it. The fix was to open the store per request.
- Making answers sound right when spoken: short sentences, the service named for every title, and dates said as "tomorrow" or "last Thursday" rather than as numbers.
Accomplishments that we're proud of
- It's one server with eight tools, and the same
/mcpURL works in any MCP host, not just our simulator. - Memory that survives a full reload, shown live in the video.
- "Tonight's pick" explains itself, and it stops repeating itself.
- The whole thing is open source under MIT.
What we learned
- MCP Apps make voice-plus-screen assistants much richer: the model speaks two sentences, and the card view carries the rest.
- Stateless Streamable HTTP plus a small per-viewer store is enough for real cross-session memory.
- Voice UX is mostly copywriting.
What's next
- Connect it to Alexa+ for real as soon as third-party MCP servers can be tested there.
- Account linking (OAuth) in place of the viewer ID.
- Episode reminders through Alexa notifications, matching the Streamday mobile app.
- More regions after Australia. ## How we built it
Challenges we ran into
Accomplishments that we're proud of
What we learned
What's next for Streamday for Alexa+
Built With
- javascript
- mcp
- mcp-apps
- model-context-protocol
- netlify
- netlify-blobs
- node.js
- openai
- tmdb
Log in or sign up for Devpost to join the conversation.