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

Open Beginner friendly
#1,970 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
72/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Quiet
Tech stack
github, go
Domain
api, backend

Research direction

Start in pkg/github/context_tools.go by comparing get_me with the existing client.Users.Get call. Add the required username input while preserving the MinimalUser + UserDetails response and users tool metadata described in the issue. Done means the tool calls GET /users/{username} through the authenticated client and exposes the requested profile across GitHub environments.

Written by the indexing model from the issue text.

Description

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.

Dominant language
Go
Stars
33.1k
Forks
5k
Avg merge
2d 15h
Merged PRs (30d)
27

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from github/github-mcp-server

All issues in github/github-mcp-server

Similar issues

More Go issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.