Summary
The tool get_file_contents is not exposed to Claude in Claude Desktop, despite the MCP server correctly returning it in the tools/list response. This appears to be a name collision with Claude Desktop's internal file-reading capability.
Environment
- Claude Desktop: Latest version (Feb 2026)
- github-mcp-server: Built from main branch
- Config:
GITHUB_READ_ONLY=true
Symptoms
- Server returns
get_file_contents in tools/list response (verified via direct stdio test)
- Other tools work fine (
get_me, get_commit, list_branches, pull_request_read, etc.)
get_file_contents specifically is not available to Claude in conversations
- No errors in MCP logs - the tool is simply not exposed
Root Cause
Claude Desktop appears to have a built-in tool with the same or similar name (get_file_contents or read_file), which shadows/filters the MCP server's version.
Solution
Renaming the tool from get_file_contents to fetch_repo_file immediately resolves the issue. After rebuilding with the renamed tool, Claude Desktop correctly exposes it.
Suggested Fix
Rename the tool in pkg/github/repositories.go:625 from:
Name: "get_file_contents",
to something like:
or:
Name: "get_repository_content",
This would be a breaking change for users relying on the current tool name, but it's necessary for Claude Desktop compatibility.
Additional Context
- Issue was debugged extensively, ruling out: completions capability bug, schema issues, read-only filtering, scope filtering
- The rename was the only change that fixed the issue
- Other MCP servers may have similar conflicts with generic tool names like
read_file, get_file, etc.
Summary
The tool
get_file_contentsis not exposed to Claude in Claude Desktop, despite the MCP server correctly returning it in thetools/listresponse. This appears to be a name collision with Claude Desktop's internal file-reading capability.Environment
GITHUB_READ_ONLY=trueSymptoms
get_file_contentsintools/listresponse (verified via direct stdio test)get_me,get_commit,list_branches,pull_request_read, etc.)get_file_contentsspecifically is not available to Claude in conversationsRoot Cause
Claude Desktop appears to have a built-in tool with the same or similar name (
get_file_contentsorread_file), which shadows/filters the MCP server's version.Solution
Renaming the tool from
get_file_contentstofetch_repo_fileimmediately resolves the issue. After rebuilding with the renamed tool, Claude Desktop correctly exposes it.Suggested Fix
Rename the tool in
pkg/github/repositories.go:625from:to something like:
or:
This would be a breaking change for users relying on the current tool name, but it's necessary for Claude Desktop compatibility.
Additional Context
read_file,get_file, etc.