Inspiration
Old Alexa games are scripted skills. Alexa+ can improvise, but a language model running a mystery on its own can forget who did it or change the answer when challenged. We wanted screen-free family game night that stays honest: the host improvises the drama, the server keeps the secrets.
What it does
Game Night is one self-hosted MCP server (Streamable HTTP, MCP spec 2025-11-25) that holds each game's secrets and rules. Two games ship today:
- Whodunnit at Home — the family names the rooms of their house; the server writes a cozy murder mystery set in those rooms (victim, suspects, culprit, motive, weapon, clues). Search rooms, interrogate suspects, accuse.
- Twenty Questions — the server picks a secret and locks it. Yes/no questions until they guess or run out.
The voice assistant never sees the solution until accuse or the round ends. Tool results are short sentences meant to be spoken.
How we built it
- TypeScript MCP SDK v2 (
@modelcontextprotocol/server) over Streamable HTTP - Bun + SQLite for durable game state (2025-era handlers are stateless per request)
- Shared
Gameinterface so adding a game is one file - Amazon Bedrock (Claude via AnthropicBedrock / bedrock-runtime) for case generation and the yes/no judge, with Zod + solvability validation and deterministic offline fallbacks so the demo never breaks
- Simulated Alexa+ web app (real MCP client) as allowed by the rules; ready for OAuth 2.1 when connecting a real device
Challenges we ran into
See the Friction log below (submitted for the 10% bonus). Highlights: no AWS credits left for the window; MCP SDK docs vs protocol version mismatch; Streamable HTTP statelessness forcing SQLite; Bedrock structured-output dropping enum/minItems; Alexa+ OAuth/CLI access and the 500 ms latency guideline vs LLM case generation.
Accomplishments that we're proud of
- A working hub with 11 MCP tools, secrets never in the conversation
- Case validation that rejects unsolvable/leaky mysteries before play
- Offline fallbacks so Bedrock quota issues don't kill the demo
- 446 unit tests, typecheck clean, 43 Playwright e2e passes
- A technical demo that shows raw MCP JSON-RPC (initialize 2025-11-25, tools/list, tools/call) with the secret visible only in SQLite
What we learned
Read the full Devpost rules early (simulated Alexa+ web app is allowed). Put LLM game content behind a validator + fallback. Check platform latency limits before putting an LLM call on the tool path. Prefer bedrock-runtime inference profiles over Mantle for Claude on new accounts.
What's next
Connect to real Alexa+ (OAuth 2.1 + Protected Resource Metadata), stream progress for long Bedrock calls under the 500 ms guideline, more games on the same hub, and plurals as correct Twenty Questions guesses.
Product feedback (Amazon)
- Give entrants a Bedrock sandbox for the whole submission window (credits ran out Oct 7).
- Name exact MCP SDK packages/versions known to work with Alexa+.
- Document whether Alexa+ sends Mcp-Session-Id and how to identify a household.
- Clarify if the 500 ms limit is per tool call and whether long calls can stream progress.
- Provide hackathon CLI/simulator access without waiting on production OAuth approval.
Friction log
Real problems hit while building Game Night (Oct 21, 2026). Severity: High = blocked a feature, Medium = cost real time or forced a design change, Low = papercut.
1. No way to run the Bedrock path: no credentials, credits gone
- Task: Generate mystery cases and judge Twenty Questions with Claude on Amazon Bedrock.
- Expected: $150 hackathon AWS credits and live Bedrock tests.
- Actual: Credit requests closed Oct 21 12pm PT; Oct 7 update said codes were out. No credentials on the build machine.
- Severity: High
- Workaround: Deterministic offline fallbacks for every Bedrock call; Bedrock switches on when credentials exist.
- Suggestion: Bedrock sandbox / free-tier path for the whole submission window.
2. Two TypeScript MCP SDK lines; README vs protocol version mismatch
- Task: Pick the MCP TypeScript SDK that serves spec 2025-11-25 over Streamable HTTP.
- Actual: v2 README says 2026-07-28, but
LATEST_PROTOCOL_VERSIONis2025-11-25. Verified on the wire. - Severity: Medium
- Suggestion: Name exact SDK packages/versions known to work with Alexa+.
3. 2025-era Streamable HTTP is stateless in the SDK handler
- Task: Keep each game's secret between tool calls.
- Actual: Fresh
McpServerper HTTP request; no session id. Forced SQLite for all state. - Severity: Medium
- Suggestion: State this up front; document whether Alexa+ sends Mcp-Session-Id.
4. Structured-output helper silently drops enum and minItems
- Actual: Enum and minItems became description hints, not constraints.
- Severity: Low
- Workaround: Re-validate with Zod + game
validateCase; fall back on failure.
5. Alexa+ MCP requirements we could not meet or test
- Actual: No alexa-ai CLI / simulator access; OAuth 2.1 + PRM required; 500 ms latency vs LLM case generation.
- Severity: High for real Alexa+ demo
- Workaround: Simulated Alexa+ web app (allowed by rules) as a real MCP client.
6. Devpost rules/FAQ pages refuse automated fetches
- Actual: HTTP 403 on rules and FAQs for plain fetchers.
- Severity: Low
7. Bad initialize params answer -32603 with raw validation dump
- Expected: -32602 Invalid Params.
- Actual: -32603 with zod issue list from the SDK layer.
- Severity: Low
Built With
- alexa+
- amazon-bedrock
- bun
- claude
- mcp
- playwright
- sqlite
- streamable-http
- typescript
- zod

Log in or sign up for Devpost to join the conversation.