/ Diretório / Playground / GitHub
● Oficial github 🔑 Requer sua chave

GitHub

por github · github/github-mcp-server

Dê ao Claude acesso completo ao GitHub — issues, PRs, busca de código, edições de arquivo — sem sair da janela de chat.

Servidor MCP próprio do GitHub. Tudo que você pode fazer via API REST ou GraphQL do GitHub, seu agente IA também pode: triagar issues, revisar PRs, buscar código na organização, rascunhar commits. Modo somente leitura é suportado e recomendado para primeiras execuções.

Por que usar

Principais recursos

Demo ao vivo

Como fica na prática

github.replay ▶ pronto
0/0

Instalar

Escolha seu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ]
    }
  }
}

Abra Claude Desktop → Settings → Developer → Edit Config. Reinicie após salvar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ]
    }
  }
}

Cursor usa o mesmo esquema mcpServers que o Claude Desktop. Config de projeto vence a global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ]
    }
  }
}

Clique no ícone MCP Servers na barra lateral do Cline, depois "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ]
    }
  }
}

Mesmo formato do Claude Desktop. Reinicie o Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "github",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ]
    }
  ]
}

O Continue usa um array de objetos de servidor em vez de um map.

~/.config/zed/settings.json
{
  "context_servers": {
    "github": {
      "command": {
        "path": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "-e",
          "GITHUB_PERSONAL_ACCESS_TOKEN",
          "ghcr.io/github/github-mcp-server"
        ]
      }
    }
  }
}

Adicione em context_servers. Zed recarrega automaticamente ao salvar.

claude mcp add github -- docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server

Uma linha só. Verifique com claude mcp list. Remova com claude mcp remove.

Casos de uso

Usos do mundo real: GitHub

Como encontrar uma boa first issue e entregar uma correção em uma hora

👤 Contribuidores de código aberto procurando um primeiro PR com baixo atrito ⏱ ~60 min beginner

Quando usar: Você quer contribuir para um projeto mas não sabe por onde começar. O CONTRIBUTING.md do mantenedor é muito genérico para ser útil.

Pré-requisitos
  • GitHub PAT com repo:read e issues:read — github.com/settings/tokens — granularidade fina, escopo para o repo que você quer contribuir
  • MCP filesystem também instalado — permite ao Claude clonar e ler o repo localmente para realmente escrever a correção
Fluxo
  1. Peça ao Claude para encontrar issues marcadas como good first issue sem comentários, ordenadas por simplicidade
    Find open issues in modelcontextprotocol/servers labeled 'good first issue' with no assignee and zero comments. Pick the one that looks easiest to fix and explain why.✓ Copiado
    → Claude retorna 3-5 candidatos com uma avaliação de dificuldade de uma linha para cada
  2. Peça ao Claude para buscar o corpo da issue e qualquer código vinculado
    Pull the full issue body for #<num> and read the file it mentions. Tell me the actual change that needs to happen.✓ Copiado
    → Intenção de diff concreta, não apenas uma reafirmação da issue
  3. Use MCP filesystem para fazer a edição, depois MCP GitHub para rascunhar o PR
    Apply the change, write a PR description that thanks the maintainer and explains the fix in 3 sentences.✓ Copiado
    → PR se abre com link retornado

Resultado: Um PR aberto que respeita o estilo do projeto, referencia a issue, e é pequeno o suficiente para mesclar no mesmo dia.

Armadilhas
  • Claude escolhe uma 'good first issue' que na verdade tem estado podre há 2 anos porque ninguém conseguia concordar na correção — Adicione não tem novos comentários de mantenedores nos últimos 90 dias como um filtro
  • O corpo do PR é linguagem genérica de IA — Diga ao Claude para imitar o tom dos últimos 3 PRs mesclados do projeto primeiro
Combine com: filesystem · git

Gere um resumo semanal de PR para seu time

👤 Gerentes de engenharia, líderes técnicos ⏱ ~10 min intermediate

Quando usar: Toda segunda-feira de manhã quando você preferiria não clicar em 40 notificações de PR.

Pré-requisitos
  • PAT escopo para os repos do seu time com pull_requests:read — Use um token de granularidade fina, nunca um token clássico 'all repos'
Fluxo
  1. Peça pelos PRs mesclados da semana passada com seus tamanhos de diff
    List all PRs merged into our org/repo between last Monday and today. Include author, +/- lines, and one-line summary.✓ Copiado
    → Tabela de 10-30 linhas com deltas concretos
  2. Agrupe por autor e tema
    Group these by area (auth, payments, frontend, infra...) and flag any that look like reverts or hotfixes.✓ Copiado
    → Seções com agrupamento temático
  3. Rascunhe um resumo pronto para Slack
    Now write a Slack post summarizing the week — celebrate the big wins, call out the risky changes, name the people who shipped them.✓ Copiado
    → Markdown com @mentions, emoji, pronto para colar

Resultado: Um resumo de 5 pontos que você realmente quer ler na segunda-feira de manhã.

Armadilhas
  • Atinge o limite de taxa se sua organização tem muitos repos — Filtre um repo de cada vez, ou atualize para um token GitHub App (15k req/h vs 5k)
Combine com: linear · sentry

Encontre todos os lugares onde sua base de código usa uma API depreciada

👤 Engenheiros de backend planejando uma migração ⏱ ~30 min intermediate

Quando usar: Você está prestes a depreciar uma classe/função interna e precisa saber quem a está usando antes de anunciar.

Pré-requisitos
  • PAT com repo:read para todos os repos em sua organização — Use um GitHub App para acesso em toda a organização — mais fácil que malabarismo com PATs por repo
Fluxo
  1. Use busca de código em toda a organização
    Search across our entire acme-corp org for any usage of the LegacyAuth class. Return file paths grouped by repo.✓ Copiado
    → Lista de repos e arquivos, com números de linha
  2. Para cada correspondência, busque contexto
    For each match, fetch 5 lines around the usage and tell me whether it's a real call or just a comment/import.✓ Copiado
    → Lista filtrada distinguindo chamadas reais do ruído
  3. Gere uma issue de rastreamento de migração
    Create a tracking issue in acme-corp/platform titled 'Migrate off LegacyAuth' with a checklist of every real callsite and the team that owns each repo.✓ Copiado
    → Issue criada com lista de verificação abrangente

Resultado: Uma única issue de rastreamento fonte-de-verdade que seu time de plataforma pode usar para impulsionar a migração.

Armadilhas
  • A busca de código tem um limite de 1000 resultados por consulta — Se atingir, restrinja por idioma ou caminho: LegacyAuth language:python ou divida consultas por prefixo de repo
  • GitHub indexa apenas o branch padrão — Não encontrará uso em branches de funcionalidade — complemente com um grep local em repos clonados
Combine com: filesystem

Obtenha uma segunda opinião sobre um PR complicado antes de aprovar

👤 Revisores de código enfrentando um PR fora de sua área de expertise ⏱ ~15 min intermediate

Quando usar: Você é o revisor atribuído a um PR que toca código que você não conhece bem, e não quer apenas carimbar.

Fluxo
  1. Puxe o diff e descrição do PR
    Fetch PR #<num> in org/repo — give me the diff and the description. What's the author claiming this does?✓ Copiado
    → Reafirmação clara da intenção
  2. Peça por uma leitura arquitetônica
    Now look at the existing files this PR touches. Does the change fit the existing patterns, or does it introduce a new one? If new, is the new pattern justified?✓ Copiado
    → Call-outs específicos, não elogios genéricos
  3. Investigue riscos
    Where in this diff is something most likely to break in production 6 months from now? Be specific — point to the line.✓ Copiado
    → Preocupações específicas no nível de linha, não 'adicione mais testes'

Resultado: Três comentários específicos e acionáveis que você pode postar no PR — tornando sua revisão significativamente melhor que uma olhada.

Armadilhas
  • Claude se torna uma máquina de sim e elogia tudo — Pergunte explicitamente 'o que um engenheiro sênior desta empresa recusaria?' — framing adversarial ajuda
Combine com: filesystem

Identifique e desbloqueie PRs apodrecendo em revisão

👤 Líderes de engenharia, mantenedores de repo ⏱ ~20 min beginner

Quando usar: Uma vez por sprint, quando você suspeita que PRs estão envelhecendo silenciosamente sem ninguém notar.

Fluxo
  1. Liste PRs abertos há >5 dias sem atividade recente
    Find open PRs in org/repo last updated more than 5 days ago. For each, tell me the author, the assigned reviewer, and the stated reason for delay (look at the last comment).✓ Copiado
    → Tabela com diagnóstico por PR
  2. Categorize o atraso
    Group these into: 'waiting on reviewer', 'waiting on author', 'waiting on CI', 'waiting on decision'. Be specific about which.✓ Copiado
    → 4 categorias com PRs concretos em cada
  3. Rascunhe empurrões
    For the 'waiting on reviewer' bucket, draft a polite nudge comment for each. Different tone if the reviewer is a peer vs senior to the author.✓ Copiado
    → Texto de comentário por PR pronto para colar

Resultado: Uma lista curta de PRs que você pode desbloquear em 15 minutos, com ações específicas por PR.

Armadilhas
  • Postar comentários automaticamente parece spam — Deixe Claude rascunhar os comentários mas você os poste você mesmo — mantém o humano no loop
Combine com: linear

Combinações

Combine com outros MCPs para 10× de alavancagem

github + sentry

Sentry aparece um novo erro → GitHub MCP encontra o commit que o introduziu via tags de release → você rascunha um PR hotfix, tudo em um chat

There's a new error in Sentry — issue WEB-3a91. Find which commit on main introduced it (cross-reference the release tag), then draft the smallest possible revert PR.✓ Copiado
github + linear

Auto-criar issues Linear a partir de relatórios de bugs GitHub com rótulos e prioridade apropriados

For every issue opened in our octocat/api repo this week with label 'bug', create a matching Linear issue in the BACKEND team with priority Medium.✓ Copiado
github + filesystem + git

Contribuição de ponta a ponta: clone repo localmente, faça mudanças, envie branch, abra PR — sem sair do chat

Clone acme/widgets locally, fix the typo in src/utils/format.ts:42, push to a new branch, open a PR.✓ Copiado

Ferramentas

O que este MCP expõe

FerramentaEntradasQuando chamarCusto
search_issues owner: str, repo: str, labels?: str[], state?: str Você quer encontrar issues por label, estado, responsável, ou atividade 1 chamada GitHub API
get_issue owner: str, repo: str, issue_number: int Após search_issues, quando você precisa da conversa completa 1 chamada API
create_issue owner, repo, title, body, labels?, assignees? Arquive uma nova issue — certifique-se de que o usuário realmente quer isto 1 chamada API (escrita)
list_pull_requests owner, repo, state?, sort?, base?, head? Encontre PRs por estado/branch/autor 1 chamada API
get_pull_request owner, repo, pull_number Leia o diff e metadados de um PR específico 1 chamada API
merge_pull_request owner, repo, pull_number, merge_method? Apenas quando explicitamente dito — use discussão de dry-run primeiro 1 chamada API (escrita, irreversível)
search_code q: str, sort? Encontre uso de símbolo em toda uma organização 1 chamada API (limite de taxa mais baixo: 30/min)
get_file_contents owner, repo, path, ref? Leia um único arquivo de um repo sem clonar 1 chamada API
create_or_update_file owner, repo, path, message, content, sha? Edição única; para mudanças multi-arquivo use uma branch + PR 1 chamada API (escrita)
list_commits owner, repo, sha?, path? Audite histórico de um arquivo ou branch 1 chamada API

Custo e limites

O que custa rodar

Cota de API
PAT Pessoal: 5.000 requisições/hora. GitHub App: 15.000/h. Busca de código: 30/min em pessoal, separado.
Tokens por chamada
200–500 tokens para metadados de issue/PR; pode inchar para 5k+ para buscas de arquivos grandes
Monetário
Gratuito com qualquer conta GitHub. GitHub Enterprise tem limites mais altos.
Dica
Se você está atingindo limites, mude para um GitHub App — mais fácil que malabarismo com múltiplos PATs e oferece 3× a taxa. Cache resultados list_issues ao iterar.

Segurança

Permissões, segredos, alcance

Escopos mínimos: repo:read issues:read
Armazenamento de credenciais: PAT de granularidade fina em variável de ambiente (ex. GITHUB_PERSONAL_ACCESS_TOKEN). Nunca faça commit para dotfiles.
Saída de dados: Todas as chamadas API apenas para api.github.com. Sem telemetria de terceiros.
Nunca conceda: admin:org delete_repo admin:enterprise

Solução de problemas

Erros comuns e correções

401 Unauthorized

Seu PAT expirou ou não tem acesso a esse repo. Recrie em github.com/settings/tokens com os escopos corretos.

Verificar: curl -H "Authorization: Bearer $GITHUB_PERSONAL_ACCESS_TOKEN" https://api.github.com/user
403 rate limit exceeded

Você atingiu 5000 req/h em um PAT pessoal. Aguarde até a janela de reset, ou migre para um token GitHub App (15k/h).

Verificar: curl -H "Authorization: Bearer $TOKEN" https://api.github.com/rate_limit
404 Not Found on a private repo

PAT não inclui esse repo em sua lista allowed-repos. Edite o PAT de granularidade fina e adicione o repo.

Docker: 'unable to find image'

Puxe a imagem primeiro: docker pull ghcr.io/github/github-mcp-server. Verifique se você está autenticado em ghcr.io se for privado.

Verificar: docker images | grep github-mcp-server

Alternativas

GitHub vs. outros

AlternativaQuando usarTroca
MCP GitLabVocê usa GitLab.com ou GitLab auto-hospedado em vez de GitHubSuperfície de funcionalidade menor, mantida pela comunidade
MCP GiteaInstalação Gitea auto-hospedadaFerramentas limitadas vs o MCP GitHub oficial
MCP gitVocê precisa apenas de operações git locais (status, log, diff, blame) sem qualquer remotoSem issues, PRs, ou operações remotas — funciona em qualquer repo local sem autenticação

Mais

Recursos

📖 Leia o README oficial no GitHub

🐙 Ver issues abertas

🔍 Ver todos os 400+ servidores MCP e Skills