fix(gitea-mcp): address MCP tool issues from Sprint 6
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>
This commit is contained in:
@@ -53,6 +53,7 @@ class GiteaClient:
|
||||
self,
|
||||
state: str = 'open',
|
||||
labels: Optional[List[str]] = None,
|
||||
milestone: Optional[str] = None,
|
||||
repo: Optional[str] = None
|
||||
) -> List[Dict]:
|
||||
"""
|
||||
@@ -61,6 +62,7 @@ class GiteaClient:
|
||||
Args:
|
||||
state: Issue state (open, closed, all)
|
||||
labels: Filter by labels
|
||||
milestone: Filter by milestone title (exact match)
|
||||
repo: Repository in 'owner/repo' format
|
||||
|
||||
Returns:
|
||||
@@ -71,6 +73,8 @@ class GiteaClient:
|
||||
params = {'state': state}
|
||||
if labels:
|
||||
params['labels'] = ','.join(labels)
|
||||
if milestone:
|
||||
params['milestones'] = milestone
|
||||
logger.info(f"Listing issues from {owner}/{target_repo} with state={state}")
|
||||
response = self.session.get(url, params=params)
|
||||
response.raise_for_status()
|
||||
|
||||
Reference in New Issue
Block a user