Skip to content

feat: add feedback read/triage MCP tools (PROJ-668) - #296

Merged
TAJD merged 1 commit into
mainfrom
feat/proj-668-feedback-triage-mcp-tools
Aug 24, 2026
Merged

feat: add feedback read/triage MCP tools (PROJ-668)#296
TAJD merged 1 commit into
mainfrom
feat/proj-668-feedback-triage-mcp-tools

Conversation

@TAJD

@TAJD TAJD commented Aug 24, 2026

Copy link
Copy Markdown
Owner

Summary

  • Adds list_feedback, update_feedback_status, and convert_feedback_to_issue MCP tools in apps/api/src/mcp/feedback.ts, delegating to the existing services/feedback.ts functions — closing the REST/MCP parity gap left by PROJ-378 (which only shipped MCP parity for feedback source management).
  • update_feedback_status and convert_feedback_to_issue drop the projectId requirement on the MCP surface: the service now resolves the project from the feedback row itself (requireFeedbackScope) when projectId is omitted, matching the existing pattern used by the feedback-sources MCP tools (see UpdateFeedbackSourceSchema's comment). REST routes are unaffected — they still always pass the URL path's projectId, so a mismatched row still 404s.
  • submit_feedback remains deliberately absent from MCP (anonymous ingest, no ServiceCtx user/role to act as) — documented in AGENTS.md's parity-exceptions list, updated to reflect that only the anonymous submit endpoint is REST-only now.
  • Removed the now-stale mcp-parity.node.test.ts exceptions for listFeedback/updateFeedbackStatus/convertFeedbackToIssue (previously exempted pending PROJ-634/agent-access consideration).

Design decisions / tradeoffs

  • Considered adding new MCP-specific service functions vs. reusing the REST ones with a schema tweak — reused the REST ones and made projectId optional (Zod), since the feedback-sources domain already established this exact "REST passes projectId, MCP resolves it" convention. Keeps one code path per operation.
  • list_feedback's MCP schema keeps projectId required (per the ticket's acceptance criteria) since there's no natural way to resolve "all feedback for a project" from anything but the project id itself.

Test plan

  • pnpm --filter @projektor/api test feedback — 74 passed (new MCP-tool test cases cover role guards for list/update/convert, and shape parity with the equivalent REST endpoints)
  • pnpm --filter @projektor/api test:coverage
  • pnpm --filter @projektor/db test
  • pnpm --filter @projektor/web test:coverage
  • pnpm --filter @projektor/web build
  • pnpm --filter @projektor/docs build
  • pnpm turbo type-check
  • pnpm lint
  • pnpm gen:docs — no diff beyond the expected tool-catalog/mcp-stats/conventions regeneration

🤖 Generated with Claude Code

https://claude.ai/code/session_01ARvtjr1d531r7ukzRd896Y

…sue MCP tools (PROJ-668)

Feedback read/triage was REST-only; only source management had MCP parity.
Adds the three missing MCP tools, delegating to the existing service functions.
update_feedback_status/convert_feedback_to_issue drop the projectId requirement on
the MCP surface (resolved from the feedback row instead), matching the pattern
already used by the feedback-sources MCP tools; REST still scopes by the URL
path's projectId. submit_feedback remains deliberately absent (anonymous ingest
has no ServiceCtx user/role to act as).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ARvtjr1d531r7ukzRd896Y
@TAJD
TAJD merged commit 9df2e57 into main Aug 24, 2026
1 check passed
@TAJD
TAJD deleted the feat/proj-668-feedback-triage-mcp-tools branch August 24, 2026 20:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant