Skip to main content
Glama

github-mcp-server

A minimal, read-only MCP server exposing your GitHub repos to Claude Code (or any MCP-compatible client) over stdio.

Tools it exposes

  • list_repos(owner?, include_forks?, limit?) - list your repos (or another owner's public repos)

  • get_repo_info(owner, repo) - metadata for one repo

  • list_directory(owner, repo, path?, ref?) - browse a repo's file tree

  • read_file(owner, repo, path, ref?, max_bytes?) - read a text file's contents

  • get_readme(owner, repo, ref?) - fetch a repo's README

  • search_code(query, owner?, repo?, limit?) - search code (optionally scoped to your repos)

  • list_commits(owner, repo, path?, limit?) - recent commit history

Everything is read-only - no write, create, or delete endpoints are exposed.

Related MCP server: github-mcp-tool

Setup

  1. Create a GitHub Personal Access Token (fine-grained, recommended): GitHub -> Settings -> Developer settings -> Personal access tokens -> Fine-grained tokens -> Generate new token.

    • Repository access: select the repos you want Claude to read (or "All repositories")

    • Permissions: Contents: Read-only, Metadata: Read-only (add Code search: Read-only if you want search_code to work)

  2. Install dependencies:

    cd github-mcp-server
    python3 -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
  3. Set the token (don't hardcode it in the script or commit it anywhere):

    export GITHUB_TOKEN=github_pat_xxxxxxxxxxxx

    For persistence, add that line to your ~/.zshrc / ~/.bashrc, or use a .env file with a tool like direnv - just make sure it's gitignored.

  4. Register the server with Claude Code CLI:

    claude mcp add github-repos -- python3 /absolute/path/to/github-mcp-server/server.py

    (If you used a venv, point at the venv's python: /absolute/path/to/github-mcp-server/.venv/bin/python3)

    Since the server reads GITHUB_TOKEN from its environment, either export it in the shell you run claude from, or pass it explicitly:

    claude mcp add github-repos --env GITHUB_TOKEN=github_pat_xxxxxxxxxxxx -- python3 /absolute/path/to/github-mcp-server/server.py
  5. Verify it's connected:

    claude mcp list

    You should see github-repos listed as connected. Then in a Claude Code session you can ask things like "list my repos" or "read the README of my flight-delay-prediction repo" and Claude will call these tools.

Local smoke test (without a client)

python3 -c "
import os
os.environ['GITHUB_TOKEN'] = 'github_pat_xxx'
from server import list_repos
print(list_repos())
"

Notes / next steps

  • Rate limits: authenticated requests get 5,000/hour from GitHub's REST API, fine for interactive use.

  • If you later want write access (opening issues, commenting on PRs), add new @mcp.tool() functions using requests.post/patch - keep them separate and clearly named so it stays obvious which tools mutate GitHub state.

  • If you want this reachable from claude.ai/Cowork (not just Claude Code CLI/VS Code), it needs to move from stdio transport to a hosted HTTP server with OAuth - a materially bigger step, only worth it if you need that reach.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/VishalBasker/github-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server