MCP server for the KeyQ Tempo sprint-card workflow with Claude Code.
This is sprint-mode v1. The previous bidirectional bridge (ask,
request_approval, notify, listening loop, Stop/PreToolUse hooks) is
preserved on the bridge-mvp branch for archaeology.
Each Claude Code instance running this MCP server can:
- Pull the next sprint card assigned to the "Claude Code" (CC) team_member on a configured Tempo board, and work it.
- Read card detail including comments thread (operator clarifications) and attachments.
- Create / update / comment on / move cards — the workflow Claude needs to drive a sprint forward.
- Email the operator when stuck. The blocker is posted as a comment on the card AND emailed to the user. Operator's reply lands back on the card via the AI router's
[Card #N]subject shortcut.
For scrum context: read recent Fathom meetings and attachments on cards to recover decisions/requirements.
In Tempo web → Team Members → toggle Claude Code bridge on for the user.
In Tempo web → Claude Sessions tab → Connect a Claude Code session. You'll get a 6-digit code valid for 5 minutes.
npx keyq-tempo-mcp enroll 123456This stores a long-lived device token at ~/.keyq-tempo/token (mode 0600).
{
"mcpServers": {
"keyq-tempo": {
"command": "npx",
"args": ["-y", "keyq-tempo-mcp"]
}
}
}Add .claude/sprint-config.json to each repo Claude will work in:
{
"project_code": "MPG",
"tempo_project_id": 12,
"branching_strategy": "card_branches",
"target_branch": "main"
}For team-branch projects (e.g. MPG with a long-running dev branch):
{
"project_code": "MPG",
"tempo_project_id": 12,
"branching_strategy": "team_branch",
"target_branch": "dev"
}The sprint-mode skill (~/.claude/skills/sprint-mode/) reads this config to know which Tempo board to pull cards from and which branch to target with PRs.
tempo_next_card(project_id)— pick up the next cardtempo_get_card(id)— full detail with comments + attachmentstempo_list_cards(project_id)— full board (columns + cards)tempo_create_card(project_id, ...)— new cardtempo_update_card(id, ...)— edit fields (vital for scrum-time enrichment)tempo_comment_card(id, content)— progress commenttempo_move_card(id, target_column)— column transitiontempo_email_stuck(id, blocker)— comment + email operatortempo_get_project_doc(project_id)— read a board's live scope/context doc (read before planning work on a board)tempo_update_project_doc(project_id, content, base_version)— create/update the scope doc (optimistic concurrency; 0 to create)
tempo_list_meetings(...)— Fathom meeting summaries for scrum contexttempo_get_meeting(id)— single meeting detailtempo_read_attachment(id)— text attachment contents inline
Device token (tcc_* prefix) loaded from ~/.keyq-tempo/token. Sent as Authorization: Bearer <token> on every API call. Tokens are SHA-256 hashed in Tempo's database; the raw token only ever lives on disk + in-memory in this process.
- v1.0.0 — sprint-card workflow (this version)
- v0.x — bidirectional bridge MVP, preserved on the
bridge-mvpbranch
MIT