diff --git a/pkg/github/issues.go b/pkg/github/issues.go index e27215ce1..0e3376373 100644 --- a/pkg/github/issues.go +++ b/pkg/github/issues.go @@ -261,6 +261,9 @@ func createIssue(client *github.Client, t translations.TranslationHelperFunc) (t }, ), ), + mcp.WithNumber("milestone", + mcp.Description("Milestone number"), + ), ), func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) { owner, err := requiredParam[string](request, "owner") @@ -294,12 +297,24 @@ func createIssue(client *github.Client, t translations.TranslationHelperFunc) (t return mcp.NewToolResultError(err.Error()), nil } + // Get optional milestone + milestone, err := optionalIntParam(request, "milestone") + if err != nil { + return mcp.NewToolResultError(err.Error()), nil + } + + var milestoneNum *int + if milestone != 0 { + milestoneNum = &milestone + } + // Create the issue request issueRequest := &github.IssueRequest{ Title: github.Ptr(title), Body: github.Ptr(body), Assignees: &assignees, Labels: &labels, + Milestone: milestoneNum, } issue, resp, err := client.Issues.Create(ctx, owner, repo, issueRequest) diff --git a/pkg/github/issues_test.go b/pkg/github/issues_test.go index d9fdeb548..f29e2b04d 100644 --- a/pkg/github/issues_test.go +++ b/pkg/github/issues_test.go @@ -392,6 +392,7 @@ func Test_CreateIssue(t *testing.T) { assert.Contains(t, tool.InputSchema.Properties, "body") assert.Contains(t, tool.InputSchema.Properties, "assignees") assert.Contains(t, tool.InputSchema.Properties, "labels") + assert.Contains(t, tool.InputSchema.Properties, "milestone") assert.ElementsMatch(t, tool.InputSchema.Required, []string{"owner", "repo", "title"}) // Setup mock issue for success case @@ -403,6 +404,7 @@ func Test_CreateIssue(t *testing.T) { HTMLURL: github.Ptr("https://github.com/owner/repo/issues/123"), Assignees: []*github.User{{Login: github.Ptr("user1")}, {Login: github.Ptr("user2")}}, Labels: []*github.Label{{Name: github.Ptr("bug")}, {Name: github.Ptr("help wanted")}}, + Milestone: &github.Milestone{Number: github.Ptr(5)}, } tests := []struct { @@ -423,6 +425,7 @@ func Test_CreateIssue(t *testing.T) { "body": "This is a test issue", "labels": []any{"bug", "help wanted"}, "assignees": []any{"user1", "user2"}, + "milestone": float64(5), }).andThen( mockResponse(t, http.StatusCreated, mockIssue), ), @@ -435,6 +438,7 @@ func Test_CreateIssue(t *testing.T) { "body": "This is a test issue", "assignees": []string{"user1", "user2"}, "labels": []string{"bug", "help wanted"}, + "milestone": float64(5), }, expectError: false, expectedIssue: mockIssue, pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy