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
-
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ó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 vários arquivos em um único commit
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositóriobranch(string): Branch para onde enviarfiles(array): Arquivos para enviar, cada um compathecontentmessage(string): Mensagem do commit
- Retorna: Referência da 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- Fazer fork de um repositório
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositórioorganization(string opcional): Organização para onde fazer o fork
- Retorna: Detalhes do repositório com fork
-
create_branch- Criar uma nova branch
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositóriobranch(string): Nome para a nova branchfrom_branch(string opcional): Branch de origem (padrão: branch padrão do repositório)
- Retorna: Referência da branch criada
-
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: Matriz 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 de 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 (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
-
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 os commits de uma 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 da branch
- Retorna: Lista de commits
get_issue
- Obtém o conteúdo de uma issue em 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 Github Issue 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 head e branchbase(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: Matriz 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 mergecommit_message(string opcional): Detalhe extra para o commit de mergemerge_method(string opcional): Método de merge ('merge', 'squash', 'rebase')
- Retorna: Detalhes do resultado do merge
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: Matriz 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 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óriorepo(string): Nome do repositóriopull_number(número): Número do pull requestexpected_head_sha(string opcional): O SHA esperado da ref HEAD do pull request
- Retorna: Mensagem de sucesso quando a branch é atualizada
get_pull_request_comments
- Obtém os comentários de revisão em 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 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 em 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
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_webhooksget_repository_webhookcreate_repository_webhookupdate_repository_webhookdelete_repository_webhookget_repository_webhook_configupdate_repository_webhook_configping_repository_webhooklist_repository_webhook_deliveriesget_repository_webhook_deliveryredeliver_repository_webhook_delivery
Ferramentas de webhook de organização
list_organization_webhooksget_organization_webhookcreate_organization_webhookupdate_organization_webhookdelete_organization_webhookget_organization_webhook_configupdate_organization_webhook_configping_organization_webhooklist_organization_webhook_deliveriesget_organization_webhook_deliveryredeliver_organization_webhook_delivery
Permissões
Webhooks de repositório:
- PATs clássicos geralmente precisam de
admin:repo_hook(ourepomais amplo) para criar, editar, excluir, enviar ping ou reentregar. - PATs de granularidade fina precisam da permissão
Webhooksdo repositório comreadpara listar/obter ewritepara 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
Webhooksda organização comreadpara listar/obter ewritepara 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,secreteinsecure_ssl. - A configuração de webhook de organização suporta esses campos mais
usernameepasswordopcionais para autenticação básica. - O GitHub recomenda fortemente definir um
secretde 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_*_webhookpara acionar uma entrega de teste após criar ou atualizar. - Use
list_*_webhook_deliveriespara inspecionar tentativas recentes. - Use
get_*_webhook_deliverypara inspecionar o payload da solicitação, cabeçalhos e a resposta capturada do GitHub. - Use
redeliver_*_webhook_deliverypara 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çã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 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
- 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.