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
-
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 de 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 onde enviarfiles(array): Arquivos a enviar, cada um compathecontentmessage(string): Mensagem de commit
- Retorna: Referência da branch atualizada
-
search_repositories- Buscar repositórios no 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 é a 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: 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 a 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 a recuperar
- Retorna: Objeto Github Issue e detalhes
get_issue_comments
- Obtém os comentários de uma issue ou pull request
- Entradas:
owner(string): Proprietário do repositóriorepo(string): Nome do repositórioissue_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çãorepo:owner/name: Buscar em repositório específicopath:app/src: Buscar em caminho específicoextension:js: Buscar por extensão de arquivo- Exemplo:
q: "import express" language:typescript path:src/
Busca de Issues
is:issueouis:pr: Filtrar por tipois:openouis:closed: Filtrar por estadolabel:bug: Buscar por labelauthor:username: Buscar por autor- Exemplo:
q: "memory leak" is:issue is:open label:bug
Busca de Usuários
type:useroutype:org: Filtrar por tipo de contafollowers:>1000: Filtrar por seguidoreslocation: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
- 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:
{
"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.