Review: Add hello-world MCP endpoint with get_schedule tool

review-992-2026-04-12b Review

review ready

Verdict: READY

Re-review of board item #992. Previous review returned false-negative NEEDS_REFINEMENT because it searched inline project page content instead of querying notes directly. This review verifies all artifacts exist as first-class pal-e-docs entities.

Template Completeness

  • [x] Type
  • [x] Lineage
  • [x] Repo
  • [x] User Story
  • [x] Context
  • [x] File Targets
  • [x] Acceptance Criteria
  • [x] Test Expectations
  • [x] Constraints
  • [x] Checklist
  • [x] Related

Traceability

  • [x] story:ai-assistant label — AI Business Assistant
  • [x] story note verified — story-westside-basketball-ai-assistant exists in pal-e-docs (id 1518, note_type: user-story, status: active)
  • [x] arch:dataflow label — Data Flow: Westside Basketball
  • [x] arch note verified — arch-dataflow-westside-basketball exists in pal-e-docs (id 394, note_type: architecture)
  • [x] Forgejo issue — forgejo_admin/basketball-api#454, state: open

File Targets

  • [x] src/basketball_api/mcp_server.py — new file, does not exist yet (correct)
  • [x] src/basketball_api/routes/mcp.py — new file, does not exist yet (correct)
  • [x] src/basketball_api/main.py — exists, uses include_router pattern (18 routers registered)
  • [x] pyproject.toml — exists, no mcp dependency yet (correct for adding)
  • [x] src/basketball_api/routes/schedule.py — exists, has get_schedule function at line 206, uses get_db dependency pattern. Correctly marked as DO NOT TOUCH.

Repo Placement

OK. Issue filed on forgejo_admin/basketball-api, all file targets are in basketball-api. Single-repo scope.

Dependencies

No blockers. Schedule infrastructure is fully shipped: data model (#629), CRUD API (#630), public endpoint (#653) are all in done column. The MCP tool wraps existing query patterns — no upstream dependencies pending.

Acceptance Criteria

6 criteria, all verifiable by an agent. Test expectations include unit, integration, and manual test instructions. Run command provided: pytest tests/ -k test_mcp. Solid.

Blast Radius

Low. No existing MCP code in basketball-api. New /mcp route is additive — does not modify any existing routes. Issue explicitly states existing REST endpoints must be unaffected. No auth on hello-world scope (noted as intentional, follow-up ticket for auth).
Note: The no-auth MCP endpoint will be internet-accessible via Tailscale funnel. Per feedback_funnel_requires_auth.md, the follow-up auth ticket should be tracked. The issue's Lineage section correctly identifies this as "Stage 1 of 4" with auth coming in a subsequent stage.

Decomposition Assessment

4 file targets (2 new, 2 modified), 1 repo, 6 AC. Estimated agent time: 3-4 minutes (single dependency add, single route registration, one new module with one tool). No decomposition needed.

Recommendation

No action needed. Ticket is ready for dispatch.