gh CLI ou GitHub MCP no Claude Code: qual usar para mexer em issues e pull requests?

Os dois caminhos abrem issue e pull request pelo Claude Code, só que cobram preços diferentes. O gh é a CLI oficial e open source do GitHub, é o caminho recomendado na própria documentação do Claude Code e cobre issue e PR com comandos dedicados, sem setup extra. Já o GitHub MCP no Claude Code entra com claude mcp add --transport http, traz toolsets de CI/CD e segurança e deixa travar escrita com o header X-MCP-Readonly. Comece pelo gh, e só adicione o MCP quando aparecer necessidade real de log de workflow, alerta de segurança ou política de somente leitura
Fala aí, beleza? Na superfície os dois caminhos fazem a mesma coisa: abrir issue, abrir pull request, ler comentário, tudo sem sair do Claude Code
Só que eles cobram preços bem diferentes em contexto, permissão e configuração inicial
E aqui vai o ponto que costuma passar batido: a escolha não é sobre qual é mais moderno, é sobre o tipo de trabalho que tu faz no repositório 😀
Quem vive abrindo branch e PR o dia inteiro tem uma resposta. Quem precisa ler log de workflow quebrado, alerta de segurança ou travar escrita por política da equipe tem outra
Bora comparar os dois com calma?
O que o gh CLI resolve dentro do Claude Code
O gh é a CLI oficial e open source do GitHub, instalável em macOS, Windows e Linux
Se tu já usa qualquer ferramenta de linha de comando, a curva aqui é curtinha: é o GitHub inteiro respondendo no terminal
A documentação de boas práticas do Claude Code é direta nisso: instale o gh, porque o Claude sabe usá-lo para criar issues, abrir pull requests e ler comentários
E tem um detalhe que quase ninguém conta: sem o gh, o Claude ainda consegue falar com a API do GitHub, só que requisição não autenticada costuma bater no limite de taxa
Domine o Claude Code do básico ao avançado
Você vai aprender a criar sistemas completos com Claude Code, sem precisar ser programador. Inscreva-se para ter acesso a um desconto de lançamento e bônus especiais!
Cobertura de issues e pull requests:
Do lado das issues, o gh issue cobre criar, triar, atribuir e fechar
gh issue create
gh issue list
gh issue close
Se liga nisso: o gh issue list aceita a MESMA sintaxe de filtro da busca do GitHub, então o filtro que tu já monta na interface web funciona no terminal
Do lado dos PRs, a lista de subcomandos do gh pr é completona: create, list, status, checkout, checks, close, comment, diff, edit, lock, merge, ready, reopen, revert, review, unlock, update-branch e view
A sessão vinculada ao PR:
Esse é o argumento mais forte do gh e ele é meio escondido
Quando o PR nasce de um gh pr create dentro do Claude Code, a sessão fica automaticamente vinculada ao PR criado
Depois tu reabre aquela conversa do jeito que preferir:
claude --from-pr 1234
Ou colando a URL do PR na busca do seletor /resume
Ou seja: o contexto de por que aquele PR existe não morre quando tu fecha o terminal, muito massa 🙂
O que o GitHub MCP Server entrega de diferente
O servidor MCP do GitHub é oficial, mantido no repositório github/github-mcp-server
E existe uma versão remota hospedada pelo próprio GitHub, numa URL HTTP fixa: https://api.githubcopilot.com/mcp/
Remota significa duas coisas boas: atualização automática e nada de instalação local
O que vem por padrão:
Por padrão o servidor entrega quatro frentes:
- inteligência de repositório: buscar código e ler arquivos
- automação de issues e pull requests: abrir, triar, rotular, revisar, mesclar
- visibilidade de CI/CD: inspecionar execuções de workflow, buscar logs, reexecutar jobs
- insights de segurança: alertas de code scanning e Dependabot
Repara que as duas últimas frentes são justamente o que a conversa de issue e PR no terminal não cobre
E como isso vira ferramenta pro Claude?
Boa pergunta, porque muda o jeito de dar permissão
Toda ferramenta MCP no Claude Code segue o padrão mcp__<nome-do-servidor>__<nome-da-ferramenta>
Então um servidor chamado github com a ferramenta list_issues vira mcp__github__list_issues
E tome cuidado com isso: ferramenta MCP exige permissão explícita antes de o Claude usar
Sem permissão ele VÊ que a ferramenta existe e simplesmente não consegue chamar, o que gera aquela sensação de "instalei e não funcionou"
gh CLI x GitHub MCP: comparação linha a linha
| Critério | gh CLI | GitHub MCP |
|---|---|---|
| Instalação e autenticação | gh auth login (GitHub.com ou Enterprise Server, depois navegador ou token), respeita GITHUB_TOKEN e confere com gh auth status |
claude mcp add --transport http github https://api.githubcopilot.com/mcp/ com header Authorization: Bearer e um PAT, sem instalação local |
| Superfície de ação | Comandos dedicados de issue e PR (create, list, checkout, checks, diff, merge, review, revert e por aí vai) |
Toolsets de repositório, issues e PRs, CI/CD e segurança expostos como ferramentas |
| Controle de permissão | Regras no formato Tool(especificador), tipo Bash(...), com avaliação deny, depois ask, depois allow, e a primeira regra que casar decide |
Mesmas regras aplicadas a mcp__github__..., com a mesma ordem: deny, depois ask, depois allow, e a primeira regra que casar decide |
| Regra deny | Bloqueia em qualquer modo, inclusive bypassPermissions |
Bloqueia em qualquer modo, inclusive bypassPermissions |
| Modo somente leitura | Nada equivalente pronto | X-MCP-Readonly, X-MCP-Lockdown e X-MCP-Toolsets (ex: repos,issues) |
| Custo de contexto | É comando de terminal, não ocupa definição de ferramenta | Definições adiadas por padrão pela busca de ferramentas; com ENABLE_TOOL_SEARCH=auto tudo é carregado enquanto as definições adiáveis somarem menos de 10% da janela |
| CI/CD e segurança | Tem o subcomando gh pr checks no escopo de PR |
Traz execução de workflow, logs, reexecução de jobs e alertas de code scanning e Dependabot por padrão |
| Portabilidade entre hosts | Mesma CLI em macOS, Windows e Linux | Claude Code suporta transporte HTTP (sem Docker); Claude Desktop não suporta HTTP pro GitHub MCP e exige o servidor local via Docker no claude_desktop_config.json |
A linha do custo de contexto merece um parágrafo à parte
A busca de ferramentas vem ligada por padrão no Claude Code: em vez de carregar as definições MCP no contexto de largada, entram só os nomes e as instruções do servidor
O Claude usa uma ferramenta de busca pra descobrir as relevantes quando a tarefa exige, e só as efetivamente usadas entram no contexto
Massa, né? O medo antigo de "MCP come minha janela inteira" mudou de figura por causa disso
Como configurar cada um (e o erro comum de cada passo)
Vou separar em dois caminhos, e a numeração segue direto pra tu não se perder
Caminho A: gh CLI
- Rode o login e escolha o destino (GitHub.com ou Enterprise Server) e depois o método (navegador ou token de autenticação)
gh auth login
O erro comum deste passo: escolher Enterprise Server no automático quando o repositório é GitHub.com, ou o contrário. Leia a pergunta antes de apertar enter 😛
- Confira quem ficou logado antes de sair mandando comando
gh auth status
O erro comum deste passo: pular a conferência e descobrir só depois que a conta autenticada não é a que tem acesso ao repositório. O gh também respeita a variável GITHUB_TOKEN, então vale lembrar dela quando o resultado vier estranho
Caminho B: GitHub MCP remoto
- Adicione o servidor remoto por HTTP com o header de autorização
claude mcp add --transport http github https://api.githubcopilot.com/mcp/ --header "Authorization: Bearer YOUR_GITHUB_PAT"
O erro comum deste passo: tentar resolver isso por OAuth. Pro Claude Code e pro Claude Desktop a orientação é PAT mesmo; o fluxo completo de OAuth remoto está disponível no VS Code 1.101 ou superior
- Confira se o servidor entrou e como ele está
claude mcp list
claude mcp get github
Dentro da sessão, o /mcp mostra o estado da conexão do servidor
- Libere as ferramentas que tu realmente quer usar
O erro comum deste passo é aquele que citei lá em cima: a ferramenta aparece, o Claude não chama, e tu acha que o servidor está quebrado
Dá pra usar allowedTools pra aprovar ferramentas MCP específicas sem prompt, em vez de aprovar tudo na mão a cada vez
- Desfez a ideia? Remover é uma linha
claude mcp remove github
Quando cada escolha é a mais simples
Fluxo de branch e PR no dia a dia:
Aqui o gh ganha fácil
É zero setup extra, é o caminho que a própria documentação do Claude Code recomenda, e ainda tem o bônus da sessão vinculada ao PR criado com gh pr create
Pra quem trabalha em várias frentes, reabrir com claude --from-pr 1234 é o tipo de coisa que economiza aquele tempo todo de "o que eu estava fazendo mesmo aqui?"
Repositório sensível, onde a equipe quer travar escrita:
Agora o MCP brilha
O header X-MCP-Readonly habilita apenas ferramentas de leitura, e ele é o equivalente da variável GITHUB_READ_ONLY do servidor local
O detalhe que faz diferença: o modo somente leitura tem PRECEDÊNCIA sobre qualquer outra configuração, desabilitando ferramentas de escrita mesmo se forem pedidas explicitamente
Esse é exatamente o tipo de guardrail que vale combinar antes de rodar o agente em repositório de cliente, quando o código não é teu e a régua é do outro lado
Investigar workflow quebrado e log de CI:
MCP de novo, porque esse toolset vem por padrão: inspecionar execuções de workflow, buscar logs e reexecutar jobs
É o cenário clássico do "o pipeline caiu e eu não sei por quê"
Permissão fina, ação por ação:
O servidor MCP do GitHub ganhou suporte a configuração específica por ferramenta, e as opções são combináveis: toolsets, ferramentas individuais, ferramentas excluídas, modo somente leitura e modo lockdown
Dá pra desenhar uma política bem cirúrgica, coisa que com comando de terminal tu resolveria só no grito das regras de permissão
Os dois juntos:
E tem esse cenário, que é o mais honesto de todos
Não existe regra dizendo que tu precisa escolher UM
gh pro fluxo de issue e PR do cotidiano, MCP pra leitura de CI/CD e segurança com escrita travada, cada um fazendo o que faz melhor
Veredito: qual eu ligaria primeiro
Começa pelo gh, sem drama
Ele é a recomendação da própria documentação do Claude Code, resolve issue e pull request com comandos dedicados e não pede configuração extra nenhuma além do login
Depois, quando aparecer uma necessidade REAL, tu liga o GitHub MCP: leitura de execução de workflow e logs, alertas de code scanning e Dependabot, ou uma política de somente leitura que precisa valer mesmo quando alguém pede escrita explicitamente
E o que NÃO justifica trocar: a ideia de que MCP deixa o Claude mais capaz por si só
Não deixa
MCP é superfície de ferramenta e controle de permissão, não inteligência extra. Se o teu problema é o agente errando o alvo, trocar o encanamento não resolve
Conclusão
Recapitulando rapidinho: gh é a CLI oficial, cobre issue e PR com comandos dedicados e vincula a sessão ao PR criado
O GitHub MCP é o servidor oficial, entra por HTTP no Claude Code com PAT, e traz CI/CD, segurança e trava de escrita como diferencial
O próximo passo prático é bem chato de tão simples: roda um gh auth status e descobre onde tu já está
Aí sim, olhando pro teu repositório, decide se o MCP resolve alguma coisa que o gh não resolve
até o próximo post! =)
Perguntas frequentes
Dá para usar o gh CLI e o GitHub MCP ao mesmo tempo no Claude Code?
Sim, os dois convivem numa mesma sessão, já que um é comando de terminal e o outro vira ferramenta com o padrão mcp__github__nome-da-ferramenta. Cada caminho tem sua própria regra de permissão no formato Tool(especificador), com a mesma ordem de avaliação: deny, depois ask, depois allow, e a primeira regra que casar decide.
O Claude Desktop consegue usar o servidor remoto do GitHub MCP igual o Claude Code?
Não. O Claude Code suporta o transporte HTTP direto para https://api.githubcopilot.com/mcp/, sem instalação local. O Claude Desktop não suporta HTTP para o GitHub MCP e exige o servidor local baseado em Docker configurado no claude_desktop_config.json.
Como deixar o GitHub MCP em modo somente leitura no Claude Code?
O servidor remoto aceita o header X-MCP-Readonly, que habilita só as ferramentas de leitura e equivale à variável GITHUB_READ_ONLY do servidor local. O modo somente leitura tem precedência sobre qualquer outra configuração e desabilita ferramentas de escrita mesmo se pedidas explicitamente. Também existe o header X-MCP-Lockdown.
Preciso ter o gh CLI instalado para usar o GitHub MCP Server?
Não, são caminhos independentes. A própria documentação do Claude Code recomenda instalar o gh porque o Claude sabe usá-lo para issues, pull requests e comentários, mas sem ele o Claude ainda fala com a API do GitHub, só que requisição não autenticada costuma bater no limite de taxa.
Como reabrir a sessão do Claude Code vinculada a um pull request?
Quando o PR nasce de um gh pr create dentro do Claude Code, a sessão fica automaticamente vinculada a ele. Dá para retomar com claude –from-pr 1234 ou colando a URL do PR na busca do seletor /resume.
O GitHub MCP Server pesa no contexto do Claude Code?
Por padrão não tanto quanto parece, porque a busca de ferramentas adia o carregamento das definições MCP, entrando só os nomes e as instruções do servidor. Com ENABLE_TOOL_SEARCH=auto o Claude Code carrega todos os schemas enquanto as definições adiáveis somarem menos de 10% da janela de contexto, e só passa a adiá-las ao bater esse limite.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
As diferenças de var, let e const
Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação A popularidade da automação de processos com o n8n está em alta, principalmente […]
