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

gh CLI ou GitHub MCP no Claude Code para gerenciar issues e pull requests
Resposta rápida

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
Pré-inscrição Formação Claude Code

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

  1. 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 😛

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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.



Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

Blog | Mais populares