Contradictory parameter definition in ListMyReposTool #11

Open
opened 2025-07-11 15:43:55 -05:00 by b3nw · 0 comments
Owner

Bug: Contradictory Parameter Definition

Issue Description

In operation/repo/repo.go, the ListMyReposTool has contradictory parameter definitions that specify both mcp.Required() AND mcp.DefaultNumber() for the same parameters. This is logically inconsistent - a parameter cannot be both required and have a default value.

Current Code (lines ~176-182)

ListMyReposTool = mcp.NewTool(
    ListMyReposToolName,
    mcp.WithDescription("List my repositories"),
    mcp.WithNumber("page", mcp.Required(), mcp.Description("Page number"), mcp.DefaultNumber(1), mcp.Min(1)),
    mcp.WithNumber("pageSize", mcp.Required(), mcp.Description("Page size number"), mcp.DefaultNumber(100), mcp.Min(1)),
)

Problem

  • mcp.Required() means the parameter must be provided by the user
  • mcp.DefaultNumber() means the parameter has a default value if not provided
  • These are mutually exclusive concepts

Expected Behavior

Parameters should either be:

  • Required (user must provide) - remove mcp.DefaultNumber()
  • Optional with defaults (user can omit) - remove mcp.Required()

Recommendation

Based on similar patterns in other modules (list_repo_issues, list_repo_labels, etc.), pagination parameters should be optional with defaults:

mcp.WithNumber("page", mcp.Description("Page number"), mcp.DefaultNumber(1), mcp.Min(1)),
mcp.WithNumber("pageSize", mcp.Description("Page size number"), mcp.DefaultNumber(100), mcp.Min(1)),

Impact

  • Current: Confusing API behavior - unclear whether parameters are required or optional
  • After Fix: Consistent pagination parameter behavior across all modules

This was discovered while investigating issue #10 regarding redundant default value handling patterns.

# Bug: Contradictory Parameter Definition ## Issue Description In `operation/repo/repo.go`, the `ListMyReposTool` has contradictory parameter definitions that specify both `mcp.Required()` AND `mcp.DefaultNumber()` for the same parameters. This is logically inconsistent - a parameter cannot be both required and have a default value. ## Current Code (lines ~176-182) ```go ListMyReposTool = mcp.NewTool( ListMyReposToolName, mcp.WithDescription("List my repositories"), mcp.WithNumber("page", mcp.Required(), mcp.Description("Page number"), mcp.DefaultNumber(1), mcp.Min(1)), mcp.WithNumber("pageSize", mcp.Required(), mcp.Description("Page size number"), mcp.DefaultNumber(100), mcp.Min(1)), ) ``` ## Problem - `mcp.Required()` means the parameter must be provided by the user - `mcp.DefaultNumber()` means the parameter has a default value if not provided - These are mutually exclusive concepts ## Expected Behavior Parameters should either be: - **Required** (user must provide) - remove `mcp.DefaultNumber()` - **Optional with defaults** (user can omit) - remove `mcp.Required()` ## Recommendation Based on similar patterns in other modules (`list_repo_issues`, `list_repo_labels`, etc.), pagination parameters should be **optional with defaults**: ```go mcp.WithNumber("page", mcp.Description("Page number"), mcp.DefaultNumber(1), mcp.Min(1)), mcp.WithNumber("pageSize", mcp.Description("Page size number"), mcp.DefaultNumber(100), mcp.Min(1)), ``` ## Impact - **Current**: Confusing API behavior - unclear whether parameters are required or optional - **After Fix**: Consistent pagination parameter behavior across all modules ## Related Issues This was discovered while investigating issue #10 regarding redundant default value handling patterns.
b3nw added the bug label 2025-07-11 15:45:29 -05:00
This repo is archived. You cannot comment on issues.
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: b3nw/gitea-mcp#11