GitHub MCP Server

Interaja com a API do GitHub para 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.

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 Git: As operações mantêm o histórico 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 (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 de 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 onde enviar
      • files (array): Arquivos a enviar, cada um com path e content
      • message (string): Mensagem de commit
    • Retorna: Referência da branch atualizada
  3. search_repositories

    • Buscar repositórios no 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 é a 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: 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 a 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 a recuperar
  • Retorna: Objeto Github Issue e detalhes
  1. get_issue_comments
  • Obtém os comentários de uma issue ou pull request
  • Entradas:
    • owner (string): Proprietário do repositório
    • repo (string): Nome do repositório
    • issue_number (número): Número da issue/PR de onde recuperar os comentários
  • Retorna: Array de objetos de comentário do GitHub contendo ID do comentário, texto do corpo, autor e timestamps

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 label
  • 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

Personal Access Token

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

  • Vá para Personal access tokens (em GitHub Settings > Developer settings)
  • Selecione quais repositórios você gostaria que este token tivesse acesso (Public, All ou Select)
  • Crie um token com o escopo repo ("Full control of private repositories")
    • 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:

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

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.