Couch Call MCP Server
Provides tools for a household play-along game on Alexa+, enabling game night management, player calls, scoreboards, season standings, and recaps.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Couch Call MCP Serverstart a couch call for the game and add me as a player"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Couch Call
A free household play-along for live sports on Alexa+: when the game hits a big moment, the room calls it out loud, the play settles it, and a family leaderboard carries over all season.

Watch the demo: YOUTUBE_URL
Quickstart (mock mode, no AWS needed)
Needs Node 22 or newer and pnpm 10.
pnpm install
pnpm seed
pnpm devOpen http://localhost:3000. The Couch Call MCP server runs on http://127.0.0.1:3001/mcp and the test bench (the Alexa+ stand-in) on port 3000. Mock mode uses a rule-based host instead of Bedrock and a silent clip instead of Polly. Type "start couch call for the game" in the "Type instead" box.
Real voice and Bedrock
Sign in with the AWS CLI:
aws login --profile <your-profile>. The profile needs Amazon Bedrock access to Nova 2 Lite and Amazon Polly in its Region.Copy
.env.exampleto.env.localand setAWS_PROFILE,AWS_REGION,BEDROCK_MODEL_ID(defaultglobal.amazon.nova-2-lite-v1:0) andPOLLY_VOICE(defaultJoanna).Run
pnpm dev:real. Bedrock and Polly are called only from the test bench's server routes, with the named profile's credentials. If your shell exportsAWS_BEARER_TOKEN_BEDROCK, the scripts remove it so the profile is used.
Related MCP server: CartWeave MCP Server
Why it matters
Live sports are watched together, by a room full of people on one couch.
Alexa+ is already in those rooms, on Echo Show and Fire TV.
Amazon reports that customers engage 6 times more with services integrated with Alexa+ (Alexa+ developer blog, July 2026).
The core loop
The household starts a game night; the game feed begins.
A big moment comes up: "Third and seven. Run or pass?" and a 9-second window opens.
Everyone calls it out loud; each call is recorded until the snap locks the window.
The play resolves the moment; correct callers score, with an underdog bonus and a streak multiplier.
Points roll into a family season table that survives restarts.
Architecture
flowchart LR
subgraph Bench["Test bench (Next.js, port 3000)"]
UI["Browser: MCP client, voice and typing, device frames, dev panel"]
Converse["/api/converse: Bedrock Converse (Nova 2 Lite)"]
TTS["/api/tts: Polly neural, cached"]
end
subgraph Server["Couch Call MCP server (port 3001)"]
HTTP["Streamable HTTP /mcp: sessions, SSE ids, Origin check"]
Tools["8 tools, session resource, board view"]
Engine["Replay feed, moment detector, resolver, scoring"]
DB[("SQLite, write-through")]
end
Skill["skill/couch-call-host/SKILL.md"]
UI -- "JSON-RPC: tools/call, resources/subscribe" --> HTTP
HTTP -- "notifications/resources/updated, elicitation" --> UI
UI -- "messages and tool results" --> Converse
Converse -- "toolUse" --> UI
UI --> TTS
Skill -. "system prompt" .-> Converse
HTTP --> Tools --> Engine --> DB
UI -- "ext-apps AppBridge" --> Board["ui://couch-call/board in the Fire TV and Echo Show frames"]The MCP server is the hackathon entry. The test bench plays the part of Alexa+: it runs a real MCP client in the browser, asks Bedrock what to do with the tools, speaks with Polly, and renders the MCP Apps board inside two device frames.
Where the required tech is called
Generated by pnpm tech-map (also in docs/where-tech-is-called.md).
What | Where | Detail |
McpServer creation |
| |
Streamable HTTP transport |
| |
Origin check (403) |
| |
Event store (SSE ids, Last-Event-ID replay) |
| |
Event store (SSE ids, Last-Event-ID replay) |
| |
registerTool |
| find_games |
registerTool |
| add_player |
registerTool |
| make_call |
registerTool |
| get_recap |
registerTool |
| end_game_night |
registerAppTool |
| start_game_night |
registerAppTool |
| get_scoreboard |
registerAppTool |
| get_season_standings |
registerAppResource |
| |
resources/subscribe handler |
| |
notifications/resources/updated send |
| |
Elicitation request |
| |
Elicitation request |
| |
Browser MCP client connect |
| |
Bedrock ConverseCommand |
| |
Polly SynthesizeSpeechCommand |
| |
SKILL.md loaded as the system prompt |
| |
SKILL.md loaded as the system prompt |
|
MCP 2025-11-25 features used
Feature | Where |
Streamable HTTP on one endpoint, |
|
Stateful sessions with |
|
Origin validation: 403 for an Origin outside ALLOWED_ORIGINS, before any MCP handling |
|
Tools with |
|
Tool |
|
Input and request errors as tool results with |
|
Resource template |
|
Elicitation: single-select enum with a default ( |
|
MCP Apps: |
|
Agent Skill for the host persona |
|
Latency
Every tool call is answered locally with no LLM or network call inside the handler. Amazon's limit is a 500 ms round trip.
Measured 2026-10-21 by pnpm latency: a real MCP client over Streamable HTTP against the server on 127.0.0.1, 200 calls per tool, round trip in ms. Machine: Apple M2, Node v26.7.0. Amazon's limit is 500 ms; our target is p95 under 50 ms.
Tool | n | p50 | p95 | max |
find_games | 200 | 1.9 | 2.3 | 4.1 |
start_game_night | 200 | 2.0 | 2.6 | 6.8 |
add_player | 200 | 1.8 | 2.9 | 7.6 |
make_call | 200 | 1.9 | 2.9 | 6.7 |
get_scoreboard | 200 | 1.7 | 2.3 | 7.8 |
get_season_standings | 200 | 1.8 | 2.4 | 6.8 |
get_recap | 200 | 1.9 | 2.2 | 6.1 |
end_game_night | 200 | 2.2 | 3.6 | 8.5 |
Testing it as a judge
No login and no AWS account are needed in mock mode.
pnpm install
pnpm seed # household with Riya, Kabir and Meera, plus last week's night
pnpm dev # MCP server on 3001 with dev controls, test bench on 3000Replay game id:
gulls-vs-foxes-q4(a fictional 4th quarter: Harbor City Gulls vs Ridgeview Foxes, 64 plays).In the test bench, type: "start couch call for the game", then "Riya says pass, Kabir says run", "who's winning the season", "what did I miss", "end the night", "yes".
Dev controls (also in the bench's dev panel, Replay tab):
curl -X POST http://127.0.0.1:3001/dev/pause
curl -X POST http://127.0.0.1:3001/dev/next-moment
curl -X POST http://127.0.0.1:3001/dev/resume
curl -X POST http://127.0.0.1:3001/dev/speed -H 'content-type: application/json' -d '{"speed":10}'
curl -X POST http://127.0.0.1:3001/dev/resetAny MCP client can connect to
http://127.0.0.1:3001/mcp; the MCP Inspector's origin (port 6274) is allowed.Checks:
pnpm test(unit and integration),pnpm e2e(Playwright, mock mode),pnpm latency,pnpm tech-map.
Honest limits
This is a simulator, not real Alexa+. The Alexa+ Category SDK, MCP Toolkit and Web Simulator are partner-only previews, so the test bench stands in for Alexa+ with a real MCP client, Bedrock and Polly.
Voice ID is replaced by "Name says X" and by tap chips for each player.
A live feed adapter is designed (the
FeedSourceinterface inpackages/server/src/engine/feed.ts), but only the replay feed is built.
Beyond the hackathon
The engine is a moment detector plus a resolver, so other events fit the same loop with a new event pack: basketball (free throws, the final possession), cricket overs (boundary or dot ball) and award shows (who wins the category).
License
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Live sports stats and pre-computed analysis for AI assistants across NBA, MLB, NFL, and NHL.
Live competitive-game predictions, meta data and decision tools for AI agents.
ESPN MCP — keyless multi-sport live scores, teams, and news via ESPN's public site API.
Sports data across 8 sports under one canonical schema — scores, stats, standings, Elo, odds
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables any MCP-capable assistant to provide a voice-first evening briefing, fetching current weather, live sports scores, and tonight's TV schedule from keyless public APIs.MIT
- AlicenseNot gradedqualityBmaintenanceEnables Alexa+ users to rescue expiring pantry items by planning high-protein meals, comparing and arbitraging grocery carts across Amazon Fresh, Whole Foods, and a local co-op, mutating dietary constraints mid-session, and checking out through five stateful MCP tools exposed over a Streamable HTTP transport. It also returns interactive MCP Apps UI cards so users can swap meals, filter dietary needs, and complete orders in a single tap.MIT
- AlicenseNot gradedqualityBmaintenanceEnables a family to find an in-network doctor for each member on their own plan, set aside the ones who won't see a patient of that age with the reason and its source, and book the visits around the family routine. Voice-first MCP server with Echo Show MCP Apps screens that turns a single spoken request into a confirmable, cancellable set of appointments.MIT
- AlicenseNot gradedqualityBmaintenanceEnables Alexa+ and other MCP clients to manage a household's shared shopping list, bills, chores, and pantry expiry through natural-language voice interactions. It provides read-only briefings and confirmation-gated updates for recurring household logistics.MIT