GitHub

Interaja com repositórios do GitHub, incluindo operações de arquivos, gerenciamento de repositórios e pesquisa.

Documentação

GitHub MCP Server

Servidor MCP para a API do GitHub, permitindo operações de arquivos, gerenciamento de repositórios, funcionalidade de busca e muito mais.

Modificações da Mission Squad

  • o PAT do GitHub agora é dinâmico por requisição e não precisa ser incluído via variáveis de ambiente, mas ainda usa variáveis de ambiente como fallback.
  • name: mcp-github

Recursos

  • Criação Automática de Branch: Ao criar/atualizar arquivos ou enviar alterações, branches são criados automaticamente se não existirem
  • Tratamento Abrangente de Erros: Mensagens de erro claras para problemas comuns
  • Preservação do Histórico do Git: As operações mantêm o histórico do Git adequado sem force push
  • Operações em Lote: Suporte para operações de arquivo único e múltiplos arquivos
  • Busca Avançada: Suporte para busca de código, issues/PRs e usuários

Ferramentas

  1. create_or_update_file

    • Criar ou atualizar um único arquivo em um repositório
    • Entradas:
      • owner (string): Proprietário do repositório (usuário ou organização)
      • repo (string): Nome do repositório
      • path (string): Caminho onde criar/atualizar o arquivo
      • content (string): Conteúdo do arquivo
      • message (string): Mensagem do commit
      • branch (string): Branch onde criar/atualizar o arquivo
      • sha (string opcional): SHA do arquivo sendo substituído (para atualizações)
    • Retorna: Conteúdo do arquivo e detalhes do commit
  2. push_files

    • Enviar vários arquivos em um único commit
    • Entradas:
      • owner (string): Proprietário do repositório
      • repo (string): Nome do repositório
      • branch (string): Branch para onde enviar
      • files (array): Arquivos para enviar, cada um com path e content
      • message (string): Mensagem do commit
    • Retorna: Referência da branch atualizada
  3. search_repositories

    • Buscar repositórios do GitHub
    • Entradas:
      • query (string): Consulta de busca
      • page (número opcional): Número da página para paginação
      • perPage (número opcional): Resultados por página (máx. 100)
    • Retorna: Resultados da busca de repositórios
  4. create_repository

    • Criar um novo repositório no GitHub
    • Entradas:
      • name (string): Nome do repositório
      • description (string opcional): Descrição do repositório
      • private (booleano opcional): Se o repositório deve ser privado
      • autoInit (booleano opcional): Inicializar com README
    • Retorna: Detalhes do repositório criado
  5. get_file_contents

    • Obter o conteúdo de um arquivo ou diretório
    • Entradas:
      • owner (string): Proprietário do repositório
      • repo (string): Nome do repositório
      • path (string): Caminho para arquivo/diretório
      • branch (string opcional): Branch de onde obter o conteúdo
    • Retorna: Conteúdo do arquivo/diretório
  6. create_issue

    • Criar uma nova issue
    • Entradas:
      • owner (string): Proprietário do repositório
      • repo (string): Nome do repositório
      • title (string): Título da issue
      • body (string opcional): Descrição da issue
      • assignees (string[] opcional): Nomes de usuário para atribuir
      • labels (string[] opcional): Labels para adicionar
      • milestone (número opcional): Número do milestone
    • Retorna: Detalhes da issue criada
  7. create_pull_request

    • Criar um novo pull request
    • Entradas:
      • owner (string): Proprietário do repositório
      • repo (string): Nome do repositório
      • title (string): Título do PR
      • body (string opcional): Descrição do PR
      • head (string): Branch contendo as alterações
      • base (string): Branch para mesclar
      • draft (booleano opcional): Criar como PR de rascunho
      • maintainer_can_modify (booleano opcional): Permitir edições do mantenedor
    • Retorna: Detalhes do pull request criado
  8. fork_repository

    • Fazer fork de um repositório
    • Entradas:
      • owner (string): Proprietário do repositório
      • repo (string): Nome do repositório
      • organization (string opcional): Organização para onde fazer o fork
    • Retorna: Detalhes do repositório com fork
  9. create_branch

    • Criar uma nova branch
    • Entradas:
      • owner (string): Proprietário do repositório
      • repo (string): Nome do repositório
      • branch (string): Nome para a nova branch
      • from_branch (string opcional): Branch de origem (padrão: branch padrão do repositório)
    • Retorna: Referência da branch criada
  10. list_issues

    • Listar e filtrar issues do repositório
    • Entradas:
      • owner (string): Proprietário do repositório
      • repo (string): Nome do repositório
      • state (string opcional): Filtrar por estado ('open', 'closed', 'all')
      • labels (string[] opcional): Filtrar por labels
      • sort (string opcional): Ordenar por ('created', 'updated', 'comments')
      • direction (string opcional): Direção da ordenação ('asc', 'desc')
      • since (string opcional): Filtrar por data (timestamp ISO 8601)
      • page (número opcional): Número da página
      • per_page (número opcional): Resultados por página
    • Retorna: Matriz de detalhes das issues
  11. update_issue

    • Atualizar uma issue existente
    • Entradas:
      • owner (string): Proprietário do repositório
      • repo (string): Nome do repositório
      • issue_number (número): Número da issue para atualizar
      • title (string opcional): Novo título
      • body (string opcional): Nova descrição
      • state (string opcional): Novo estado ('open' ou 'closed')
      • labels (string[] opcional): Novos labels
      • assignees (string[] opcional): Novos responsáveis
      • milestone (número opcional): Novo número de milestone
    • Retorna: Detalhes da issue atualizada
  12. add_issue_comment

    • Adicionar um comentário a uma issue
    • Entradas:
      • owner (string): Proprietário do repositório
      • repo (string): Nome do repositório
      • issue_number (número): Número da issue para comentar
      • body (string): Texto do comentário
    • Retorna: Detalhes do comentário criado
  13. search_code

    • Buscar código em repositórios do GitHub
    • Entradas:
      • q (string): Consulta de busca usando a sintaxe de busca de código do GitHub
      • sort (string opcional): Campo de ordenação (apenas 'indexed')
      • order (string opcional): Ordem de ordenação ('asc' ou 'desc')
      • per_page (número opcional): Resultados por página (máx. 100)
      • page (número opcional): Número da página
    • Retorna: Resultados da busca de código com contexto do repositório
  14. search_issues

    • Buscar issues e pull requests
    • Entradas:
      • q (string): Consulta de busca usando a sintaxe de busca de issues do GitHub
      • sort (string opcional): Campo de ordenação (comments, reactions, created, etc.)
      • order (string opcional): Ordem de ordenação ('asc' ou 'desc')
      • per_page (número opcional): Resultados por página (máx. 100)
      • page (número opcional): Número da página
    • Retorna: Resultados da busca de issues e pull requests
  15. search_users

    • Buscar usuários do GitHub
    • Entradas:
      • q (string): Consulta de busca usando a sintaxe de busca de usuários do GitHub
      • sort (string opcional): Campo de ordenação (followers, repositories, joined)
      • order (string opcional): Ordem de ordenação ('asc' ou 'desc')
      • per_page (número opcional): Resultados por página (máx. 100)
      • page (número opcional): Número da página
    • Retorna: Resultados da busca de usuários
  16. list_commits

  • Obtém os commits de uma branch em um repositório
  • Entradas:
    • owner (string): Proprietário do repositório
    • repo (string): Nome do repositório
    • page (string opcional): número da página
    • per_page (string opcional): número de registros por página
    • sha (string opcional): nome da branch
  • Retorna: Lista de commits
  1. get_issue
  • Obtém o conteúdo de uma issue em um repositório
  • Entradas:
    • owner (string): Proprietário do repositório
    • repo (string): Nome do repositório
    • issue_number (número): Número da issue para recuperar
  • Retorna: Objeto Github Issue e detalhes
  1. get_pull_request
  • Obter detalhes de um pull request específico
  • Entradas:
    • owner (string): Proprietário do repositório
    • repo (string): Nome do repositório
    • pull_number (número): Número do pull request
  • Retorna: Detalhes do pull request incluindo diff e status da revisão
  1. list_pull_requests
  • Listar e filtrar pull requests do repositório
  • Entradas:
    • owner (string): Proprietário do repositório
    • repo (string): Nome do repositório
    • state (string opcional): Filtrar por estado ('open', 'closed', 'all')
    • head (string opcional): Filtrar por usuário/org head e branch
    • base (string opcional): Filtrar por branch base
    • sort (string opcional): Ordenar por ('created', 'updated', 'popularity', 'long-running')
    • direction (string opcional): Direção da ordenação ('asc', 'desc')
    • per_page (número opcional): Resultados por página (máx. 100)
    • page (número opcional): Número da página
  • Retorna: Matriz de detalhes dos pull requests
  1. create_pull_request_review
  • Criar uma revisão em um pull request
  • Entradas:
    • owner (string): Proprietário do repositório
    • repo (string): Nome do repositório
    • pull_number (número): Número do pull request
    • body (string): Texto do comentário da revisão
    • event (string): Ação da revisão ('APPROVE', 'REQUEST_CHANGES', 'COMMENT')
    • commit_id (string opcional): SHA do commit para revisar
    • comments (array opcional): Comentários específicos por linha, cada um com:
      • path (string): Caminho do arquivo
      • position (número): Posição da linha no diff
      • body (string): Texto do comentário
  • Retorna: Detalhes da revisão criada
  1. merge_pull_request
  • Mesclar um pull request
  • Entradas:
    • owner (string): Proprietário do repositório
    • repo (string): Nome do repositório
    • pull_number (número): Número do pull request
    • commit_title (string opcional): Título para o commit de merge
    • commit_message (string opcional): Detalhe extra para o commit de merge
    • merge_method (string opcional): Método de merge ('merge', 'squash', 'rebase')
  • Retorna: Detalhes do resultado do merge
  1. get_pull_request_files
  • Obter a lista de arquivos alterados em um pull request
  • Entradas:
    • owner (string): Proprietário do repositório
    • repo (string): Nome do repositório
    • pull_number (número): Número do pull request
  • Retorna: Matriz de arquivos alterados com detalhes de patch e status
  1. get_pull_request_status
  • Obter o status combinado de todas as verificações de status de um pull request
  • Entradas:
    • owner (string): Proprietário do repositório
    • repo (string): Nome do repositório
    • pull_number (número): Número do pull request
  • Retorna: Resultados combinados das verificações de status e detalhes de cada verificação
  1. update_pull_request_branch
  • Atualizar a branch de um pull request com as alterações mais recentes da branch base (equivalente ao botão "Update branch" do GitHub)
  • Entradas:
    • owner (string): Proprietário do repositório
    • repo (string): Nome do repositório
    • pull_number (número): Número do pull request
    • expected_head_sha (string opcional): O SHA esperado da ref HEAD do pull request
  • Retorna: Mensagem de sucesso quando a branch é atualizada
  1. get_pull_request_comments
  • Obtém os comentários de revisão em um pull request
  • Entradas:
    • owner (string): Proprietário do repositório
    • repo (string): Nome do repositório
    • pull_number (number): Número do pull request
  • Retorna: Matriz de comentários de revisão do pull request com detalhes como o texto do comentário, autor e localização no diff
  1. get_pull_request_reviews
  • Obtém as revisões em um pull request
  • Entradas:
    • owner (string): Proprietário do repositório
    • repo (string): Nome do repositório
    • pull_number (number): Número do pull request
  • Retorna: Matriz de revisões do pull request com detalhes como o estado da revisão (APPROVED, CHANGES_REQUESTED, etc.), revisor e corpo da revisão

Ferramentas de Webhook

Este servidor agora suporta toda a superfície REST de webhooks de repositório e organização disponível com o modelo de autenticação github_pat existente.

Ferramentas de webhook de repositório

  • list_repository_webhooks
  • get_repository_webhook
  • create_repository_webhook
  • update_repository_webhook
  • delete_repository_webhook
  • get_repository_webhook_config
  • update_repository_webhook_config
  • ping_repository_webhook
  • list_repository_webhook_deliveries
  • get_repository_webhook_delivery
  • redeliver_repository_webhook_delivery

Ferramentas de webhook de organização

  • list_organization_webhooks
  • get_organization_webhook
  • create_organization_webhook
  • update_organization_webhook
  • delete_organization_webhook
  • get_organization_webhook_config
  • update_organization_webhook_config
  • ping_organization_webhook
  • list_organization_webhook_deliveries
  • get_organization_webhook_delivery
  • redeliver_organization_webhook_delivery

Permissões

Webhooks de repositório:

  • PATs clássicos geralmente precisam de admin:repo_hook (ou repo mais amplo) para criar, editar, excluir, enviar ping ou reentregar.
  • PATs de granularidade fina precisam da permissão Webhooks do repositório com read para listar/obter e write para criar/atualizar/excluir/ping/reentrega.

Webhooks de organização:

  • PATs clássicos precisam de admin:org_hook.
  • PATs de granularidade fina precisam da permissão Webhooks da organização com read para listar/obter e write para criar/atualizar/excluir/ping/reentrega.

Notas de uso

  • As ferramentas de criar e atualizar webhook codificam name: "web" internamente, que é o que o GitHub exige.
  • A configuração de webhook de repositório suporta url, content_type, secret e insecure_ssl.
  • A configuração de webhook de organização suporta esses campos mais username e password opcionais para autenticação básica.
  • O GitHub recomenda fortemente definir um secret de webhook e validar as assinaturas de entrega no serviço receptor.
  • insecure_ssl: "1" desativa a verificação de certificado e é desencorajado.

Fluxo de depuração

  • Use ping_*_webhook para acionar uma entrega de teste após criar ou atualizar.
  • Use list_*_webhook_deliveries para inspecionar tentativas recentes.
  • Use get_*_webhook_delivery para inspecionar o payload da solicitação, cabeçalhos e a resposta capturada do GitHub.
  • Use redeliver_*_webhook_delivery para reproduzir uma entrega falha ou desatualizada.

Fora do escopo

  • Este servidor não implementa um receptor HTTP de entrada para entregas de webhook.
  • Este servidor não realiza validação de assinatura de entrega para seu endpoint de webhook.
  • Os endpoints de webhook do GitHub App não estão incluídos nesta fase porque essas APIs exigem autenticação de aplicativo baseada em JWT em vez de um PAT.

Sintaxe de Consulta de Pesquisa

Pesquisa de Código

  • language:javascript: Pesquisar por linguagem de programação
  • repo:owner/name: Pesquisar em repositório específico
  • path:app/src: Pesquisar em caminho específico
  • extension:js: Pesquisar por extensão de arquivo
  • Exemplo: q: "import express" language:typescript path:src/

Pesquisa de Issues

  • is:issue ou is:pr: Filtrar por tipo
  • is:open ou is:closed: Filtrar por estado
  • label:bug: Pesquisar por rótulo
  • author:username: Pesquisar por autor
  • Exemplo: q: "memory leak" is:issue is:open label:bug

Pesquisa de Usuários

  • type:user ou type:org: Filtrar por tipo de conta
  • followers:>1000: Filtrar por seguidores
  • location:London: Pesquisar por localização
  • Exemplo: q: "fullstack developer" location:London followers:>100

Para sintaxe detalhada de pesquisa, consulte a documentação de pesquisa do GitHub.

Configuração

Personal Access Token

Crie um Personal Access Token do GitHub com as permissões apropriadas:

  • Vá para Personal access tokens (em Configurações do GitHub > Configurações de desenvolvedor)
  • Selecione quais repositórios você gostaria que este token tivesse acesso (Público, Todos ou Selecionar)
  • Crie um token com o escopo repo ("Controle total de repositórios privados")
    • Alternativamente, se estiver trabalhando apenas com repositórios públicos, selecione apenas o escopo public_repo
  • Copie o token gerado

Uso com Claude Desktop

Para usar isso com Claude Desktop, adicione o seguinte ao seu claude_desktop_config.json:

Docker

{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "mcp/github"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
      }
    }
  }
}

NPX

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-github"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
      }
    }
  }
}

Build

Build do Docker:

docker build -t mcp/github -f src/github/Dockerfile .

Licença

Este servidor MCP é licenciado sob a Licença MIT. Isso significa que você é livre para usar, modificar e distribuir o software, sujeito aos termos e condições da Licença MIT. Para mais detalhes, consulte o arquivo LICENSE no repositório do projeto.