fix(gitea-mcp): address MCP tool issues from Sprint 6 #282

Merged
lmiranda merged 1 commits from fix/281-mcp-tool-issues into development 2026-01-28 21:48:07 +00:00
Owner

Summary

Fixes #281 - Multiple MCP tool issues discovered during Sprint 6 execution.

Issues Addressed

1. list_issues Token Overflow

  • Problem: list_issues(state="all") returned 123K+ characters, exceeding token limit
  • Fix: Added milestone parameter to filter issues server-side
  • Usage: list_issues(state="all", milestone="Sprint 6 - Visual Branding Overhaul")

2. Type Validation Inconsistency (get_milestone, create_issue labels)

  • Problem: MCP sometimes passes integers as strings and arrays as JSON strings
  • Fix: Added _coerce_types() helper that normalizes:
    • Integer fields: milestone_id, issue_number, pr_number, etc.
    • Array fields: labels, tags, issue_numbers, etc.

3. Sprint Approval Check Clarification

  • Problem: Documentation said approval check would "STOP" execution, but it wasn't enforced
  • Fix: Clarified in sprint-start.md that approval is RECOMMENDED, not code-enforced

Changes

  • mcp-servers/gitea/mcp_server/gitea_client.py: Added milestone param to list_issues
  • mcp-servers/gitea/mcp_server/tools/issues.py: Pass milestone param through wrapper
  • mcp-servers/gitea/mcp_server/server.py: Added _coerce_types() + milestone in schema
  • plugins/projman/commands/sprint-start.md: Clarified approval is recommended

Test Plan

  • Test list_issues(milestone="Sprint 6") returns filtered results
  • Test get_milestone(milestone_id=22) works without type error
  • Test create_issue(labels=["Type/Bug"]) works without type error
  • Verify sprint-start documentation is clear about approval being optional

Closes #281


Generated with Claude Code

## Summary Fixes #281 - Multiple MCP tool issues discovered during Sprint 6 execution. ## Issues Addressed ### 1. list_issues Token Overflow - **Problem:** `list_issues(state="all")` returned 123K+ characters, exceeding token limit - **Fix:** Added `milestone` parameter to filter issues server-side - **Usage:** `list_issues(state="all", milestone="Sprint 6 - Visual Branding Overhaul")` ### 2. Type Validation Inconsistency (get_milestone, create_issue labels) - **Problem:** MCP sometimes passes integers as strings and arrays as JSON strings - **Fix:** Added `_coerce_types()` helper that normalizes: - Integer fields: `milestone_id`, `issue_number`, `pr_number`, etc. - Array fields: `labels`, `tags`, `issue_numbers`, etc. ### 3. Sprint Approval Check Clarification - **Problem:** Documentation said approval check would "STOP" execution, but it wasn't enforced - **Fix:** Clarified in sprint-start.md that approval is RECOMMENDED, not code-enforced ## Changes - `mcp-servers/gitea/mcp_server/gitea_client.py`: Added milestone param to list_issues - `mcp-servers/gitea/mcp_server/tools/issues.py`: Pass milestone param through wrapper - `mcp-servers/gitea/mcp_server/server.py`: Added _coerce_types() + milestone in schema - `plugins/projman/commands/sprint-start.md`: Clarified approval is recommended ## Test Plan - [ ] Test `list_issues(milestone="Sprint 6")` returns filtered results - [ ] Test `get_milestone(milestone_id=22)` works without type error - [ ] Test `create_issue(labels=["Type/Bug"])` works without type error - [ ] Verify sprint-start documentation is clear about approval being optional Closes #281 --- Generated with [Claude Code](https://claude.ai/code)
lmiranda added 1 commit 2026-01-28 20:58:06 +00:00
Fixes #281 - Multiple MCP tool issues discovered during sprint execution

## Changes

1. **list_issues Token Overflow** (Issue 1)
   - Added `milestone` parameter to filter issues server-side
   - Reduces response size by filtering at API level instead of client-side

2. **Type Coercion for MCP Serialization** (Issues 2 & 4)
   - Added `_coerce_types()` helper function in server.py
   - Handles integers passed as strings (milestone_id, issue_number, etc.)
   - Handles arrays passed as JSON strings (labels, tags, etc.)
   - Applied to all tool calls automatically

3. **Sprint Approval Check Clarification** (Issue 3)
   - Updated sprint-start.md to clarify approval is RECOMMENDED, not enforced
   - Changed STOP/block language to WARN/suggest language
   - Added note explaining this is workflow guidance, not code-enforced

## Files Changed
- mcp-servers/gitea/mcp_server/gitea_client.py: Added milestone param
- mcp-servers/gitea/mcp_server/tools/issues.py: Pass milestone param
- mcp-servers/gitea/mcp_server/server.py: Type coercion + milestone schema
- plugins/projman/commands/sprint-start.md: Clarified approval check

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
lmiranda merged commit d27c440631 into development 2026-01-28 21:48:07 +00:00
lmiranda deleted branch fix/281-mcp-tool-issues 2026-01-28 21:48:07 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: personal-projects/leo-claude-mktplace#282