GitHub

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

Documentação

Servidor MCP do GitHub

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

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: Operações mantêm o histórico adequado do Git sem forçar 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 (nome de 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 múltiplos arquivos em um único commit
    • Entradas:
      • owner (string): Proprietário do repositório
      • repo (string): Nome do repositório
      • branch (string): Branch para enviar
      • files (array): Arquivos para enviar, cada um com path e content
      • message (string): Mensagem do commit
    • Retorna: Referência do 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

    • Bifurcar um repositório
    • Entradas:
      • owner (string): Proprietário do repositório
      • repo (string): Nome do repositório
      • organization (string opcional): Organização para bifurcar
    • Retorna: Detalhes do repositório bifurcado
  9. create_branch

    • Criar um novo branch
    • Entradas:
      • owner (string): Proprietário do repositório
      • repo (string): Nome do repositório
      • branch (string): Nome do novo branch
      • from_branch (string opcional): Branch de origem (padrão é o padrão do repositório)
    • Retorna: Referência do branch criado
  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: Array 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 do 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 ('indexed' apenas)
      • 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 um 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 do branch
  • Retorna: Lista de commits
  1. get_issue
  • Obtém o conteúdo de uma issue dentro de 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 e branch de origem
    • 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: Array 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 de 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 mesclagem
    • commit_message (string opcional): Detalhe extra para o commit de mesclagem
    • merge_method (string opcional): Método de mesclagem ('merge', 'squash', 'rebase')
  • Retorna: Detalhes do resultado da mesclagem
  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: Array 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 um branch de pull request com as alterações mais recentes do branch base (equivalente ao botão "Atualizar 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 o branch é atualizado
  1. get_pull_request_comments
  • Obter 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 (número): Número do pull request
  • Retorna: Array 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 avaliações (reviews) 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: Uma matriz de avaliações de pull request com detalhes como o estado da avaliação (APPROVED, CHANGES_REQUESTED, etc.), avaliador e corpo da avaliação

Sintaxe de Consulta de Busca

Busca de Código

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

Busca de Issues

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

Busca de Usuários

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

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

Configuração

Token de Acesso Pessoal

Crie um Token de Acesso Pessoal do GitHub com as permissões apropriadas:

  • Vá para Tokens de acesso pessoal (em Configurações do GitHub > Configurações do 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 o 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.