1- //go:build ignore
2-
31package github
42
53import (
@@ -10,8 +8,8 @@ import (
108 "net/http"
119 "regexp"
1210
11+ "github.com/github/github-mcp-server/pkg/utils"
1312 "github.com/google/go-github/v79/github"
14- "github.com/mark3labs/mcp-go/mcp"
1513)
1614
1715func hasFilter (query , filterType string ) bool {
@@ -40,44 +38,44 @@ func hasTypeFilter(query string) bool {
4038func searchHandler (
4139 ctx context.Context ,
4240 getClient GetClientFn ,
43- request mcp. CallToolRequest ,
41+ args map [ string ] any ,
4442 searchType string ,
4543 errorPrefix string ,
4644) (* mcp.CallToolResult , error ) {
47- query , err := RequiredParam [string ](request , "query" )
45+ query , err := RequiredParam [string ](args , "query" )
4846 if err != nil {
49- return mcp .NewToolResultError (err .Error ()), nil
47+ return utils .NewToolResultError (err .Error ()), nil
5048 }
5149
5250 if ! hasSpecificFilter (query , "is" , searchType ) {
5351 query = fmt .Sprintf ("is:%s %s" , searchType , query )
5452 }
5553
56- owner , err := OptionalParam [string ](request , "owner" )
54+ owner , err := OptionalParam [string ](args , "owner" )
5755 if err != nil {
58- return mcp .NewToolResultError (err .Error ()), nil
56+ return utils .NewToolResultError (err .Error ()), nil
5957 }
6058
61- repo , err := OptionalParam [string ](request , "repo" )
59+ repo , err := OptionalParam [string ](args , "repo" )
6260 if err != nil {
63- return mcp .NewToolResultError (err .Error ()), nil
61+ return utils .NewToolResultError (err .Error ()), nil
6462 }
6563
6664 if owner != "" && repo != "" && ! hasRepoFilter (query ) {
6765 query = fmt .Sprintf ("repo:%s/%s %s" , owner , repo , query )
6866 }
6967
70- sort , err := OptionalParam [string ](request , "sort" )
68+ sort , err := OptionalParam [string ](args , "sort" )
7169 if err != nil {
72- return mcp .NewToolResultError (err .Error ()), nil
70+ return utils .NewToolResultError (err .Error ()), nil
7371 }
74- order , err := OptionalParam [string ](request , "order" )
72+ order , err := OptionalParam [string ](args , "order" )
7573 if err != nil {
76- return mcp .NewToolResultError (err .Error ()), nil
74+ return utils .NewToolResultError (err .Error ()), nil
7775 }
78- pagination , err := OptionalPaginationParams (request )
76+ pagination , err := OptionalPaginationParams (args )
7977 if err != nil {
80- return mcp .NewToolResultError (err .Error ()), nil
78+ return utils .NewToolResultError (err .Error ()), nil
8179 }
8280
8381 opts := & github.SearchOptions {
@@ -92,26 +90,26 @@ func searchHandler(
9290
9391 client , err := getClient (ctx )
9492 if err != nil {
95- return nil , fmt . Errorf ( "%s : failed to get GitHub client: %w " , errorPrefix , err )
93+ return utils . NewToolResultErrorFromErr ( errorPrefix + " : failed to get GitHub client" , err ), nil
9694 }
9795 result , resp , err := client .Search .Issues (ctx , query , opts )
9896 if err != nil {
99- return nil , fmt . Errorf ( "%s: %w" , errorPrefix , err )
97+ return utils . NewToolResultErrorFromErr ( errorPrefix , err ), nil
10098 }
10199 defer func () { _ = resp .Body .Close () }()
102100
103101 if resp .StatusCode != http .StatusOK {
104102 body , err := io .ReadAll (resp .Body )
105103 if err != nil {
106- return nil , fmt . Errorf ( "%s : failed to read response body: %w " , errorPrefix , err )
104+ return utils . NewToolResultErrorFromErr ( errorPrefix + " : failed to read response body" , err ), nil
107105 }
108- return mcp .NewToolResultError (fmt .Sprintf ("%s: %s" , errorPrefix , string (body ))), nil
106+ return utils .NewToolResultError (fmt .Sprintf ("%s: %s" , errorPrefix , string (body ))), nil
109107 }
110108
111109 r , err := json .Marshal (result )
112110 if err != nil {
113- return nil , fmt . Errorf ( "%s : failed to marshal response: %w " , errorPrefix , err )
111+ return utils . NewToolResultErrorFromErr ( errorPrefix + " : failed to marshal response" , err ), nil
114112 }
115113
116- return mcp .NewToolResultText (string (r )), nil
114+ return utils .NewToolResultText (string (r )), nil
117115}
0 commit comments