@@ -299,13 +299,9 @@ func UpdatePullRequest(getClient GetClientFn, t translations.TranslationHelperFu
299299 }
300300
301301 // Handle reviewers separately
302- var reviewers []string
303- if reviewersArr , ok := request .Params .Arguments ["reviewers" ].([]interface {}); ok && len (reviewersArr ) > 0 {
304- for _ , reviewer := range reviewersArr {
305- if reviewerStr , ok := reviewer .(string ); ok {
306- reviewers = append (reviewers , reviewerStr )
307- }
308- }
302+ reviewers , err := OptionalStringArrayParam (request , "reviewers" )
303+ if err != nil {
304+ return mcp .NewToolResultError (err .Error ()), nil
309305 }
310306
311307 // Create the GitHub client
@@ -322,7 +318,11 @@ func UpdatePullRequest(getClient GetClientFn, t translations.TranslationHelperFu
322318 var ghResp * github.Response
323319 pr , ghResp , err = client .PullRequests .Edit (ctx , owner , repo , pullNumber , update )
324320 if err != nil {
325- return nil , fmt .Errorf ("failed to update pull request: %w" , err )
321+ return ghErrors .NewGitHubAPIErrorResponse (ctx ,
322+ "failed to update pull request" ,
323+ ghResp ,
324+ err ,
325+ ), nil
326326 }
327327 resp = ghResp .Response
328328 defer func () {
@@ -343,7 +343,11 @@ func UpdatePullRequest(getClient GetClientFn, t translations.TranslationHelperFu
343343 var ghResp * github.Response
344344 pr , ghResp , err = client .PullRequests .Get (ctx , owner , repo , pullNumber )
345345 if err != nil {
346- return nil , fmt .Errorf ("failed to get pull request: %w" , err )
346+ return ghErrors .NewGitHubAPIErrorResponse (ctx ,
347+ "failed to get pull request" ,
348+ ghResp ,
349+ err ,
350+ ), nil
347351 }
348352 resp = ghResp .Response
349353 defer func () {
@@ -359,14 +363,6 @@ func UpdatePullRequest(getClient GetClientFn, t translations.TranslationHelperFu
359363 }
360364 return mcp .NewToolResultError (fmt .Sprintf ("failed to get pull request: %s" , string (body ))), nil
361365 }
362-
363- pr , resp , err := client .PullRequests .Edit (ctx , owner , repo , pullNumber , update )
364- if err != nil {
365- return ghErrors .NewGitHubAPIErrorResponse (ctx ,
366- "failed to update pull request" ,
367- resp ,
368- err ,
369- ), nil
370366 }
371367
372368 // Add reviewers if specified
@@ -378,7 +374,11 @@ func UpdatePullRequest(getClient GetClientFn, t translations.TranslationHelperFu
378374 // Use the direct result of RequestReviewers which includes the requested reviewers
379375 updatedPR , resp , err := client .PullRequests .RequestReviewers (ctx , owner , repo , pullNumber , reviewersRequest )
380376 if err != nil {
381- return nil , fmt .Errorf ("failed to request reviewers: %w" , err )
377+ return ghErrors .NewGitHubAPIErrorResponse (ctx ,
378+ "failed to request reviewers" ,
379+ resp ,
380+ err ,
381+ ), nil
382382 }
383383 defer func () {
384384 if resp != nil && resp .Body != nil {
0 commit comments