From a7061f9b64473b9e88d6068add3bb5ecc84c08e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hubert=20Wawrzy=C5=84czyk?= Date: Tue, 27 May 2025 12:20:47 +0000 Subject: [PATCH] fix: make API bool parameters in search_repos and list_releases optional (#40) (#44) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix #40 Left the `mcp.DefaultBool(false)` for `is_draft` and `is_pre_release` in `list_releases`, because I guess they are default, but it's up to the client whether to set them or not. https://gitea.com/fitithw/gitea-mcp/src/commit/11e04b5b8de5dc8a60c1d0a10dd9979e0d31998f/operation/repo/release.go#L67-L68 Reviewed-on: https://gitea.com/gitea/gitea-mcp/pulls/44 Reviewed-by: Bo-Yi Wu (吳柏毅) Co-authored-by: Hubert Wawrzyńczyk Co-committed-by: Hubert Wawrzyńczyk --- operation/repo/release.go | 16 ++++++++++++---- operation/search/search.go | 16 ++++++++++++---- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/operation/repo/release.go b/operation/repo/release.go index d0e1094..f4d62c3 100644 --- a/operation/repo/release.go +++ b/operation/repo/release.go @@ -221,8 +221,16 @@ func ListReleasesFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallTool if !ok { return nil, fmt.Errorf("repo is required") } - isDraft, _ := req.GetArguments()["is_draft"].(bool) - isPreRelease, _ := req.GetArguments()["is_pre_release"].(bool) + var pIsDraft *bool + isDraft, ok := req.GetArguments()["is_draft"].(bool) + if ok { + pIsDraft = ptr.To(isDraft) + } + var pIsPreRelease *bool + isPreRelease, ok := req.GetArguments()["is_pre_release"].(bool) + if ok { + pIsPreRelease = ptr.To(isPreRelease) + } page, _ := req.GetArguments()["page"].(float64) pageSize, _ := req.GetArguments()["pageSize"].(float64) @@ -231,8 +239,8 @@ func ListReleasesFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallTool Page: int(page), PageSize: int(pageSize), }, - IsDraft: ptr.To(isDraft), - IsPreRelease: ptr.To(isPreRelease), + IsDraft: pIsDraft, + IsPreRelease: pIsPreRelease, }) if err != nil { return nil, fmt.Errorf("list releases error: %v", err) diff --git a/operation/search/search.go b/operation/search/search.go index 9fce5e1..71e0563 100644 --- a/operation/search/search.go +++ b/operation/search/search.go @@ -144,8 +144,16 @@ func SearchReposFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolR keywordIsTopic, _ := req.GetArguments()["keywordIsTopic"].(bool) keywordInDescription, _ := req.GetArguments()["keywordInDescription"].(bool) ownerID, _ := req.GetArguments()["ownerID"].(float64) - isPrivate, _ := req.GetArguments()["isPrivate"].(bool) - isArchived, _ := req.GetArguments()["isArchived"].(bool) + var pIsPrivate *bool + isPrivate, ok := req.GetArguments()["isPrivate"].(bool) + if ok { + pIsPrivate = ptr.To(isPrivate) + } + var pIsArchived *bool + isArchived, ok := req.GetArguments()["isArchived"].(bool) + if ok { + pIsArchived = ptr.To(isArchived) + } sort, _ := req.GetArguments()["sort"].(string) order, _ := req.GetArguments()["order"].(string) page, ok := req.GetArguments()["page"].(float64) @@ -161,8 +169,8 @@ func SearchReposFn(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolR KeywordIsTopic: keywordIsTopic, KeywordInDescription: keywordInDescription, OwnerID: int64(ownerID), - IsPrivate: ptr.To(isPrivate), - IsArchived: ptr.To(isArchived), + IsPrivate: pIsPrivate, + IsArchived: pIsArchived, Sort: sort, Order: order, ListOptions: gitea_sdk.ListOptions{