diff --git a/README.md b/README.md index 396fb1661..13b0586e4 100644 --- a/README.md +++ b/README.md @@ -668,15 +668,6 @@ The following sets of tools are available (all are on by default): - `title`: New title (string, optional) - `type`: New issue type (string, optional) -- **write_label** - Write operations on repository labels. - - `color`: Label color as 6-character hex code without '#' prefix (e.g., 'f29513'). Required for 'create', optional for 'update'. (string, optional) - - `description`: Label description text. Optional for 'create' and 'update'. (string, optional) - - `method`: Operation to perform: 'create', 'update', or 'delete' (string, required) - - `name`: Label name - required for all operations (string, required) - - `new_name`: New name for the label (used only with 'update' method to rename) (string, optional) - - `owner`: Repository owner (username or organization name) (string, required) - - `repo`: Repository name (string, required) -
@@ -688,12 +679,7 @@ The following sets of tools are available (all are on by default): - `owner`: Repository owner (username or organization name) (string, required) - `repo`: Repository name (string, required) -- **list_label** - List labels from a repository or an issue - - `issue_number`: Issue number - if provided, lists labels on the specific issue (number, optional) - - `owner`: Repository owner (username or organization name) - required for all operations (string, required) - - `repo`: Repository name - required for all operations (string, required) - -- **write_label** - Write operations on repository labels. +- **label_write** - Write operations on repository labels. - `color`: Label color as 6-character hex code without '#' prefix (e.g., 'f29513'). Required for 'create', optional for 'update'. (string, optional) - `description`: Label description text. Optional for 'create' and 'update'. (string, optional) - `method`: Operation to perform: 'create', 'update', or 'delete' (string, required) @@ -702,6 +688,11 @@ The following sets of tools are available (all are on by default): - `owner`: Repository owner (username or organization name) (string, required) - `repo`: Repository name (string, required) +- **list_label** - List labels from a repository or an issue + - `issue_number`: Issue number - if provided, lists labels on the specific issue (number, optional) + - `owner`: Repository owner (username or organization name) - required for all operations (string, required) + - `repo`: Repository name - required for all operations (string, required) +
diff --git a/pkg/github/__toolsnaps__/write_label.snap b/pkg/github/__toolsnaps__/label_write.snap similarity index 98% rename from pkg/github/__toolsnaps__/write_label.snap rename to pkg/github/__toolsnaps__/label_write.snap index cb13f8bbb..12d0bd441 100644 --- a/pkg/github/__toolsnaps__/write_label.snap +++ b/pkg/github/__toolsnaps__/label_write.snap @@ -48,5 +48,5 @@ ], "type": "object" }, - "name": "write_label" + "name": "label_write" } \ No newline at end of file diff --git a/pkg/github/labels.go b/pkg/github/labels.go index 91eae4274..f0cc0e630 100644 --- a/pkg/github/labels.go +++ b/pkg/github/labels.go @@ -239,13 +239,13 @@ func ListLabels(getGQLClient GetGQLClientFn, t translations.TranslationHelperFun } } -// WriteLabel handles create, update, and delete operations for GitHub labels -func WriteLabel(getGQLClient GetGQLClientFn, t translations.TranslationHelperFunc) (mcp.Tool, server.ToolHandlerFunc) { +// LabelWrite handles create, update, and delete operations for GitHub labels +func LabelWrite(getGQLClient GetGQLClientFn, t translations.TranslationHelperFunc) (mcp.Tool, server.ToolHandlerFunc) { return mcp.NewTool( - "write_label", - mcp.WithDescription(t("TOOL_WRITE_LABEL_DESCRIPTION", "Perform write operations on repository labels. To set labels on issues, use the 'update_issue' tool.")), + "label_write", + mcp.WithDescription(t("TOOL_LABEL_WRITE_DESCRIPTION", "Perform write operations on repository labels. To set labels on issues, use the 'update_issue' tool.")), mcp.WithToolAnnotation(mcp.ToolAnnotation{ - Title: t("TOOL_WRITE_LABEL_TITLE", "Write operations on repository labels."), + Title: t("TOOL_LABEL_WRITE_TITLE", "Write operations on repository labels."), ReadOnlyHint: ToBoolPtr(false), }), mcp.WithString("method", diff --git a/pkg/github/labels_test.go b/pkg/github/labels_test.go index 8e1d7688e..96b9f7f85 100644 --- a/pkg/github/labels_test.go +++ b/pkg/github/labels_test.go @@ -291,10 +291,10 @@ func TestWriteLabel(t *testing.T) { // Verify tool definition mockClient := githubv4.NewClient(nil) - tool, _ := WriteLabel(stubGetGQLClientFn(mockClient), translations.NullTranslationHelper) + tool, _ := LabelWrite(stubGetGQLClientFn(mockClient), translations.NullTranslationHelper) require.NoError(t, toolsnaps.Test(tool.Name, tool)) - assert.Equal(t, "write_label", tool.Name) + assert.Equal(t, "label_write", tool.Name) assert.NotEmpty(t, tool.Description) assert.Contains(t, tool.InputSchema.Properties, "method") assert.Contains(t, tool.InputSchema.Properties, "owner") @@ -520,7 +520,7 @@ func TestWriteLabel(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { client := githubv4.NewClient(tc.mockedClient) - _, handler := WriteLabel(stubGetGQLClientFn(client), translations.NullTranslationHelper) + _, handler := LabelWrite(stubGetGQLClientFn(client), translations.NullTranslationHelper) request := createMCPRequest(tc.requestArgs) result, err := handler(context.Background(), request) diff --git a/pkg/github/tools.go b/pkg/github/tools.go index 796ebccf2..495135ae4 100644 --- a/pkg/github/tools.go +++ b/pkg/github/tools.go @@ -188,7 +188,6 @@ func DefaultToolsetGroup(readOnly bool, getClient GetClientFn, getGQLClient GetG toolsets.NewServerTool(AddSubIssue(getClient, t)), toolsets.NewServerTool(RemoveSubIssue(getClient, t)), toolsets.NewServerTool(ReprioritizeSubIssue(getClient, t)), - toolsets.NewServerTool(WriteLabel(getGQLClient, t)), ).AddPrompts( toolsets.NewServerPrompt(AssignCodingAgentPrompt(t)), toolsets.NewServerPrompt(IssueToFixWorkflowPrompt(t)), @@ -335,7 +334,7 @@ func DefaultToolsetGroup(readOnly bool, getClient GetClientFn, getGQLClient GetG ). AddWriteTools( // create or update - toolsets.NewServerTool(WriteLabel(getGQLClient, t)), + toolsets.NewServerTool(LabelWrite(getGQLClient, t)), ) // Add toolsets to the group tsg.AddToolset(contextTools)