MCPcopy Index your code
hub / github.com/github/github-mcp-server / uiGetAssignees

Function uiGetAssignees

pkg/github/ui_tools.go:181–233  ·  view source on GitHub ↗
(ctx context.Context, deps ToolDependencies, args map[string]any, owner string)

Source from the content-addressed store, hash-verified

179}
180
181func uiGetAssignees(ctx context.Context, deps ToolDependencies, args map[string]any, owner string) (*mcp.CallToolResult, any, error) {
182 repo, err := RequiredParam[string](args, "repo")
183 if err != nil {
184 return utils.NewToolResultError(err.Error()), nil, nil
185 }
186
187 client, err := deps.GetClient(ctx)
188 if err != nil {
189 return utils.NewToolResultErrorFromErr("failed to get GitHub client", err), nil, nil
190 }
191
192 opts := &github.ListOptions{PerPage: 100}
193 var allAssignees []*github.User
194 hasMore := false
195
196 for page := 1; ; page++ {
197 assignees, resp, err := client.Issues.ListAssignees(ctx, owner, repo, opts)
198 if err != nil {
199 return ghErrors.NewGitHubAPIErrorResponse(ctx, "failed to list assignees", resp, err), nil, nil
200 }
201 allAssignees = append(allAssignees, assignees...)
202 if resp != nil && resp.Body != nil {
203 _ = resp.Body.Close()
204 }
205 if resp.NextPage == 0 {
206 break
207 }
208 if page >= uiGetMaxPages {
209 hasMore = true
210 break
211 }
212 opts.Page = resp.NextPage
213 }
214
215 result := make([]map[string]string, len(allAssignees))
216 for i, u := range allAssignees {
217 result[i] = map[string]string{
218 "login": u.GetLogin(),
219 "avatar_url": u.GetAvatarURL(),
220 }
221 }
222
223 out, err := json.Marshal(map[string]any{
224 "assignees": result,
225 "totalCount": len(result),
226 "has_more": hasMore,
227 })
228 if err != nil {
229 return utils.NewToolResultErrorFromErr("failed to marshal assignees", err), nil, nil
230 }
231
232 return utils.NewToolResultText(string(out)), nil, nil
233}
234
235func uiGetMilestones(ctx context.Context, deps ToolDependencies, args map[string]any, owner string) (*mcp.CallToolResult, any, error) {
236 repo, err := RequiredParam[string](args, "repo")

Callers 1

UIGetFunction · 0.85

Calls 6

NewToolResultErrorFunction · 0.92
NewToolResultTextFunction · 0.92
CloseMethod · 0.80
GetClientMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected