Inspiration
Every engineer spends the five minutes before standup scrolling GitHub, Slack and their own memory to answer "what did I do yesterday?". The answer is already in their activity log, plus the things they said out loud during the day ("I need to fix that redirect", "I'm blocked on the OAuth secret"). Voice is the natural interface for both: you capture notes hands-free while coding, and you hear your standup on the way to the meeting.
What it does
"Alexa, what's my standup?" returns Done / Next / Blockers:
- Done comes from real activity: merged PRs, closed issues and commits since your last standup, each dated by when it happened.
- Next comes from assigned issues, review requests and tasks you mentioned.
- Blockers come from what you said, and from your own PRs that have waited on review for more than a day.
You can also say:
- "Note: I need to fix the login redirect" to extract a task, bug, blocker, decision or done item and store it.
- "What's on my plate?" / "Mark the redirect done" to list open items and complete them.
- "File that as an issue" to create a deduplicated GitHub issue. It only does this after you confirm.
The output is voice-first. get_standup returns a ~20-second spoken script (three items per section) alongside markdown for screens.
How we built it
- MCP server (
src/mcp.ts,src/server.ts): built on the TypeScript MCP SDK v2, serving Streamable HTTP at/mcpwith protocol spec 2026-07-28 (newer than the required 2025-11-25). It exposes five tools with zod input/output schemas and tool annotations:get_standup,add_note,list_items,complete_item,file_issue. It binds to localhost and validates Host/Origin headers. - Agent Skill (
skill/standup/SKILL.md): teaches any agent when to call which tool and how to speak the result. - Simulated Alexa+ experience (
web/index.html,src/agent.ts): uses the browser's speech recognition and synthesis. The agent connects as a real MCP client (@modelcontextprotocol/client), discovers the tools, and calls them. It runs on Claude when a key is configured; otherwise a deterministic offline intent router drives the same MCP tools. - Extraction (
src/extract.ts): Claude (Anthropic API or Amazon Bedrock) turns free speech into typed work items, with a rules-based fallback. - GitHub (
src/github.ts,src/activity.ts): the search API supplies PRs, issues, commits and review requests. - Tests: 13 tests, including a real MCP client ↔ server round trip over HTTP.
Challenges we ran into
- We started on the Bee track, but Bee Developer Mode requires a paired Bee device, which we didn't have. We pivoted to Alexa+ and kept the shared extraction pipeline.
- GitHub commit search only indexes default branches, so work on feature branches shows up through PRs instead.
- Writing for the ear: we capped each section at three items and wrote the spoken script separately from the markdown.
What we learned
MCP tool descriptions are the product surface. Rewording get_standup's description to list real utterances ("what's on my plate") did more for tool routing than any code change.
What's next
- A hosted deployment with OAuth, so a production Alexa+ integration can connect.
- Jira and Linear as sources.
- Team standups that merge everyone's spoken notes.
Built With
- alexa
- amazon-bedrock
- claude
- github-api
- html
- model-context-protocol
- node.js
- typescript
- web-speech-api
- zod
Log in or sign up for Devpost to join the conversation.