Skip to content

Feature Request: Add get_user tool to fetch a user profile by username #1970

@olaservo

Description

@olaservo

Problem

There is no tool to look up a specific GitHub user's profile by username. get_me only returns the authenticated user. search_users uses the Search API which returns a minimal user object (login, id, avatar) without profile details like name, email, bio, company, etc.

Use case

I'm building a skill that adds Co-authored-by trailers to git commits. To properly attribute a collaborator, I need their display name and numeric ID from their GitHub profile to construct the trailer:

Co-authored-by: Jane Smith <12345+janesmith@users.noreply.github.com>

Currently this requires falling back to gh api users/{username}, but I want the skill to work in Claude Desktop too where the gh CLI may not be available — only MCP tools. A get_user tool would close this gap.

Workarounds and their limits

  • gh api users/{username} — works but requires the gh CLI, which isn't available in Claude Desktop
  • WebFetch to api.github.com/users/{username} — works for public GitHub.com users without auth, but doesn't cover enterprise managed users (EMU) or GHES, which require authentication

A proper get_user tool using the server's authenticated client would work across all environments including enterprise.

Proposed solution

A get_user tool that accepts a required username parameter and calls GET /users/{username}. Returns MinimalUser with Details — the same response shape as get_me.

The Go client already supports this: client.Users.Get(ctx, username) is the same call get_me uses, just with a non-empty username string.

Implementation notes

Nearly identical to get_me in pkg/github/context_tools.go:

  • Add a username input parameter (required string)
  • Pass it to client.Users.Get(ctx, username) instead of ""
  • Return the same MinimalUser + UserDetails response
  • Toolset: users
  • Scope: read:user
  • ReadOnly: true

Edited to add - this issue was co-authored by Claude and reviewed by me.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions