GitHub
Interaja com a API do GitHub para gerenciamento de repositórios, operações de arquivos 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
-
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óriopath(string): Caminho onde criar/atualizar o arquivocontent(string): Conteúdo do arquivomessage(string): Mensagem do commitbranch(string): Branch onde criar/atualizar o arquivosha(string opcional): SHA do arquivo sendo substituído (para atualizações)
- Retorna: Conteúdo do arquivo e detalhes do commit
-
push_files- Enviar múltiplos arquivos em um único commit
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositóriobranch(string): Branch para enviarfiles(array): Arquivos para enviar, cada um compathecontentmessage(string): Mensagem do commit
- Retorna: Referência do branch atualizada
-
search_repositories- Buscar repositórios do GitHub
- Entradas:
query(string): Consulta de buscapage(número opcional): Número da página para paginaçãoperPage(número opcional): Resultados por página (máx. 100)
- Retorna: Resultados da busca de repositórios
-
create_repository- Criar um novo repositório no GitHub
- Entradas:
name(string): Nome do repositóriodescription(string opcional): Descrição do repositórioprivate(booleano opcional): Se o repositório deve ser privadoautoInit(booleano opcional): Inicializar com README
- Retorna: Detalhes do repositório criado
-
get_file_contents- Obter o conteúdo de um arquivo ou diretório
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositóriopath(string): Caminho para arquivo/diretóriobranch(string opcional): Branch de onde obter o conteúdo
- Retorna: Conteúdo do arquivo/diretório
-
create_issue- Criar uma nova issue
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositóriotitle(string): Título da issuebody(string opcional): Descrição da issueassignees(string[] opcional): Nomes de usuário para atribuirlabels(string[] opcional): Labels para adicionarmilestone(número opcional): Número do milestone
- Retorna: Detalhes da issue criada
-
create_pull_request- Criar um novo pull request
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositóriotitle(string): Título do PRbody(string opcional): Descrição do PRhead(string): Branch contendo as alteraçõesbase(string): Branch para mesclardraft(booleano opcional): Criar como PR de rascunhomaintainer_can_modify(booleano opcional): Permitir edições do mantenedor
- Retorna: Detalhes do pull request criado
-
fork_repository- Bifurcar um repositório
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositórioorganization(string opcional): Organização para bifurcar
- Retorna: Detalhes do repositório bifurcado
-
create_branch- Criar um novo branch
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositóriobranch(string): Nome do novo branchfrom_branch(string opcional): Branch de origem (padrão é o branch padrão do repositório)
- Retorna: Referência do branch criado
-
list_issues- Listar e filtrar issues do repositório
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositóriostate(string opcional): Filtrar por estado ('open', 'closed', 'all')labels(string[] opcional): Filtrar por labelssort(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áginaper_page(número opcional): Resultados por página
- Retorna: Array de detalhes das issues
-
update_issue- Atualizar uma issue existente
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositórioissue_number(número): Número da issue para atualizartitle(string opcional): Novo títulobody(string opcional): Nova descriçãostate(string opcional): Novo estado ('open' ou 'closed')labels(string[] opcional): Novos labelsassignees(string[] opcional): Novos responsáveismilestone(número opcional): Novo número do milestone
- Retorna: Detalhes da issue atualizada
-
add_issue_comment- Adicionar um comentário a uma issue
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositórioissue_number(número): Número da issue para comentarbody(string): Texto do comentário
- Retorna: Detalhes do comentário criado
-
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 GitHubsort(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
-
search_issues- Buscar issues e pull requests
- Entradas:
q(string): Consulta de busca usando a sintaxe de busca de issues do GitHubsort(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
-
search_users- Buscar usuários do GitHub
- Entradas:
q(string): Consulta de busca usando a sintaxe de busca de usuários do GitHubsort(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
-
list_commits
- Obtém commits de um branch em um repositório
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositóriopage(string opcional): número da páginaper_page(string opcional): número de registros por páginasha(string opcional): nome do branch
- Retorna: Lista de commits
get_issue
- Obtém o conteúdo de uma issue dentro de um repositório
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositórioissue_number(número): Número da issue para recuperar
- Retorna: Objeto da Issue do GitHub e detalhes
get_pull_request
- Obter detalhes de um pull request específico
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositóriopull_number(número): Número do pull request
- Retorna: Detalhes do pull request incluindo diff e status da revisão
list_pull_requests
- Listar e filtrar pull requests do repositório
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositóriostate(string opcional): Filtrar por estado ('open', 'closed', 'all')head(string opcional): Filtrar por usuário/org e branch de origembase(string opcional): Filtrar por branch basesort(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
create_pull_request_review
- Criar uma revisão em um pull request
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositóriopull_number(número): Número do pull requestbody(string): Texto do comentário da revisãoevent(string): Ação da revisão ('APPROVE', 'REQUEST_CHANGES', 'COMMENT')commit_id(string opcional): SHA do commit para revisarcomments(array opcional): Comentários específicos por linha, cada um com:path(string): Caminho do arquivoposition(número): Posição da linha no diffbody(string): Texto do comentário
- Retorna: Detalhes da revisão criada
merge_pull_request
- Mesclar um pull request
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositóriopull_number(número): Número do pull requestcommit_title(string opcional): Título para o commit de mesclagemcommit_message(string opcional): Detalhe extra para o commit de mesclagemmerge_method(string opcional): Método de mesclagem ('merge', 'squash', 'rebase')
- Retorna: Detalhes do resultado da mesclagem
get_pull_request_files
- Obter a lista de arquivos alterados em um pull request
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositóriopull_number(número): Número do pull request
- Retorna: Array de arquivos alterados com detalhes de patch e status
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óriorepo(string): Nome do repositóriopull_number(número): Número do pull request
- Retorna: Resultados combinados das verificações de status e detalhes de cada verificação
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óriorepo(string): Nome do repositóriopull_number(número): Número do pull requestexpected_head_sha(string opcional): O SHA esperado da referência HEAD do pull request
- Retorna: Mensagem de sucesso quando o branch é atualizado
get_pull_request_comments
- Obter os comentários de revisão em um pull request
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositóriopull_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
get_pull_request_reviews
- Obtém as revisões de um pull request
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositóriopull_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
Sintaxe de Consulta de Pesquisa
Pesquisa de Código
language:javascript: Pesquisar por linguagem de programaçãorepo:owner/name: Pesquisar em repositório específicopath:app/src: Pesquisar em caminho específicoextension:js: Pesquisar por extensão de arquivo- Exemplo:
q: "import express" language:typescript path:src/
Pesquisa de Issues
is:issueouis:pr: Filtrar por tipois:openouis:closed: Filtrar por estadolabel:bug: Pesquisar por rótuloauthor:username: Pesquisar por autor- Exemplo:
q: "memory leak" is:issue is:open label:bug
Pesquisa de Usuários
type:useroutype:org: Filtrar por tipo de contafollowers:>1000: Filtrar por seguidoreslocation:London: Pesquisar por localização- Exemplo:
q: "fullstack developer" location:London followers:>100
Para sintaxe de pesquisa detalhada, consulte a documentação de pesquisa 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
- Alternativamente, se estiver trabalhando apenas com repositórios públicos, selecione apenas o escopo
- 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.