GitHub MCP Server
Integre funcionalidades do GitHub em assistentes de IA usando a CLI do GitHub.
Documentação
GitHub MCP Server
Um servidor Model Context Protocol (MCP) baseado em Spring Boot que fornece ferramentas de integração com GitHub para assistentes de IA como o Claude Desktop.
Visão Geral
Este servidor implementa o Model Context Protocol para expor operações do GitHub como ferramentas que podem ser usadas por clientes MCP. Ele utiliza o GitHub CLI (gh) para realizar diversas operações do GitHub, incluindo gerenciamento de repositórios, rastreamento de issues, gerenciamento de pull requests e muito mais. Isso oferece uma alternativa leve ao servidor MCP oficial do GitHub que não requer Docker.
Início Rápido para Claude Desktop
Para usar este servidor com o Claude Desktop, adicione o seguinte ao seu arquivo de configuração do Claude:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"github": {
"command": "java",
"args": ["-jar", "/path/to/gh_mcp_server/build/libs/gh_mcp_server.jar"],
"env": {}
}
}
}
Substitua /path/to/gh_mcp_server pelo caminho real do diretório do seu projeto.
Recursos
Operações de Repositório
- Listar repositórios do usuário autenticado
- Pesquisar repositórios no GitHub
- Obter informações detalhadas do repositório
- Listar branches em um repositório
- Criar novos branches
- Obter conteúdo de arquivos de repositórios
- Obter histórico de commits
Gerenciamento de Issues
- Listar issues (abertas, fechadas ou todas)
- Obter informações detalhadas de issues
- Criar novas issues
- Fechar issues
- Adicionar comentários a issues
- Editar título e corpo de issues
Gerenciamento de Pull Requests
- Listar pull requests
- Obter informações detalhadas de pull requests
- Criar novos pull requests
- Mesclar pull requests (merge, squash ou rebase)
- Fechar pull requests
- Adicionar comentários a pull requests
Workflows e Actions
- Listar workflows em um repositório
- Listar execuções de workflows com filtros opcionais
- Visualizar informações detalhadas de execuções de workflows
Gerenciamento de Releases
- Listar releases
- Visualizar detalhes de releases
- Criar novos releases (com opções de rascunho/pré-lançamento)
Operações de Usuário
- Obter detalhes do usuário autenticado
Pré-requisitos
- Java 21 ou superior - Utiliza recursos modernos do Java (virtual threads, records, pattern matching)
- GitHub CLI (
gh) - Deve estar instalado e autenticado - Gradle - Wrapper incluído no projeto
Por que Usar Este Servidor MCP?
- 🚀 Leve: Sem necessidade de Docker, implementação pura em Java
- 🔧 Abrangente: 26 operações do GitHub cobrindo fluxos de trabalho completos
- ⚡ Rápido: Integração direta com GitHub CLI com respostas JSON otimizadas
- 🧪 Bem Testado: Mais de 75 casos de teste garantindo confiabilidade
- 🛡️ Seguro: Utiliza a autenticação existente do GitHub CLI
Configuração
-
Instalar GitHub CLI
# macOS brew install gh # or download from https://cli.github.com/ -
Autenticar com GitHub
gh auth login -
Clonar e construir o projeto
git clone <repository-url> cd gh_mcp_server ./gradlew buildNota: A construção cria automaticamente um symlink independente de versão
gh_mcp_server.jar→gh_mcp_server-1.0.0.jar -
Configurar Claude Desktop
Após a construção, configure o Claude para usar este servidor MCP. Você tem duas opções:
Opção A: Usando o arquivo JAR (Recomendado)
{ "mcpServers": { "github": { "command": "java", "args": ["-jar", "/path/to/gh_mcp_server/build/libs/gh_mcp_server.jar"], "env": {} } } }Nota: Um symlink
gh_mcp_server.jaraponta para a versão atual (gh_mcp_server-1.0.0.jar). Isso fornece implantação independente de versão. Para implantação específica de versão, use o nome completo do arquivo versionado.Opção B: Usando Gradle
{ "mcpServers": { "github": { "command": "./gradlew", "args": ["bootRun"], "cwd": "/path/to/gh_mcp_server", "env": {} } } } -
Reiniciar Claude Desktop para carregar a nova configuração do servidor
Exemplos de Uso
Após configurar o Claude Desktop, você pode usar linguagem natural para interagir com o GitHub:
Gerenciamento de Repositórios
- "Liste meus repositórios" → Mostra seus repositórios com detalhes
- "Liste meus repositórios privados" → Filtra por visibilidade (público/privado/interno)
- "Pesquise repositórios Spring Boot com mais de 1000 estrelas"
- "Mostre-me detalhes sobre o repositório microsoft/vscode"
- "Obtenha os últimos 5 commits do meu repositório de projeto"
- "Quais branches existem no meu repositório de projeto?"
Rastreamento de Issues
- "Liste issues abertas no meu projeto" → Lista issues abertas atuais
- "Mostre-me detalhes da issue #123" → Obtém informações específicas da issue
- "Crie uma nova issue intitulada 'Bug: Falha no login' com descrição..."
- "Feche a issue #123 e adicione um comentário 'Corrigido na versão mais recente'"
Gerenciamento de Pull Requests
- "Liste todos os pull requests no repositório kubernetes/kubernetes"
- "Mostre-me detalhes do PR #456"
- "Crie um pull request do meu feature-branch para main"
- "Mescle o PR #789 usando estratégia squash"
CI/CD e Releases
- "Mostre-me todos os workflows neste repositório" → Lista GitHub Actions
- "Qual é o status das execuções recentes de workflows?"
- "Liste releases para o repositório golang/go"
- "Crie um novo release v2.1.0 como rascunho"
Operações de Arquivos
- "Obtenha o conteúdo do package.json do meu projeto"
- "Mostre-me o arquivo README do branch main"
Verificação
Se o servidor falhar ao iniciar, verifique se:
- Java 21+ está instalado e no seu PATH
- GitHub CLI está instalado e autenticado (
gh auth status) - O caminho do arquivo JAR na configuração está correto
- Claude Desktop foi reiniciado
Testando o Servidor
Para testar o servidor independentemente (sem Claude):
./gradlew bootRun
O servidor iniciará no modo STDIO e aguardará mensagens do protocolo MCP. No entanto, para uso normal, o servidor deve ser configurado para executar automaticamente pelo Claude Desktop, conforme mostrado acima.
Comandos de Desenvolvimento
# Build the project and run all tests
./gradlew build
# Run tests (command syntax validation only)
./gradlew test
# Run tests including GitHub CLI integration tests
./gradlew test -Dtest.gh.integration=true
# Format code with Spotless (Google Java Format)
./gradlew spotlessApply
# Check code formatting without applying changes
./gradlew spotlessCheck
# Clean build artifacts
./gradlew clean
# Run the server locally for testing
./gradlew bootRun
Cobertura de Testes
O projeto inclui cobertura abrangente de testes:
- Mais de 75 casos de teste validando todas as 26 operações do GitHub
- Testes de sintaxe de comandos - Verificam a construção exata do comando
gh - Testes de casos extremos - Lidam com caracteres especiais, Unicode, valores nulos
- Testes de integração - Execução opcional do GitHub CLI real
- Testes de tratamento de erros - Validam modos de falha graciosa
Consulte src/test/java/com/kousenit/gh_mcp_server/TEST_README.md para documentação detalhada de testes.
Configuração
O servidor usa a configuração padrão do Spring Boot. Você pode personalizar as configurações em src/main/resources/application.properties.
Principais Opções de Configuração
github.defaultBranch- Nome do branch padrão para operações (padrão:main)spring.threads.virtual.enabled- Ativar virtual threads para melhor desempenho (padrão:true)- O servidor MCP executa no modo STDIO para integração com CLI
Operações Disponíveis (26 no Total)
Operações de Repositório
listRepositories- Lista repositórios do usuário com filtro opcional de visibilidade (público/privado/interno)searchRepositories- Pesquisa repositórios no GitHubgetRepository- Obtém informações detalhadas do repositóriogetCommitHistory- Obtém histórico de commits do repositório com limite configurávellistBranches- Lista branches do repositóriocreateBranch- Cria um novo branch
Gerenciamento de Issues
listIssues- Lista issues no repositóriogetIssue- Obtém detalhes específicos de uma issuecreateIssue- Cria nova issuecloseIssue- Fecha uma issuecommentOnIssue- Adiciona comentário a uma issueeditIssue- Edita título/corpo de uma issue
Gerenciamento de Pull Requests
listPullRequests- Lista pull requestsgetPullRequest- Obtém detalhes do PRcreatePullRequest- Cria novo pull requestmergePullRequest- Mescla PR (merge/squash/rebase)closePullRequest- Fecha pull requestcommentOnPullRequest- Adiciona comentário ao PR
Workflow e CI/CD
listWorkflows- Lista workflows do repositóriolistWorkflowRuns- Lista execuções de workflows com filtrosgetWorkflowRun- Obtém detalhes da execução do workflow
Gerenciamento de Releases
listReleases- Lista releases do repositóriogetRelease- Obtém detalhes do releasecreateRelease- Cria novo release (opções de rascunho/pré-lançamento)
Operações de Arquivos e Usuário
getFileContents- Obtém conteúdo de arquivo do repositóriogetMe- Obtém detalhes do usuário autenticado
Todas as operações retornam respostas JSON otimizadas e suportam tratamento abrangente de erros.
Solução de Problemas
Problemas Comuns
"gh: comando não encontrado"
- Instale o GitHub CLI em https://cli.github.com/
- Certifique-se de que
ghestá no PATH do seu sistema - Teste com
gh --version
Erros de autenticação
- Execute
gh auth loginpara autenticar - Verifique o status com
gh auth status - Certifique-se de ter acesso aos repositórios que está tentando acessar
Falhas na inicialização do servidor
- Verifique se Java 21+ está instalado:
java --version - Verifique o caminho do arquivo JAR na configuração do Claude
- Procure mensagens de erro nos logs do Claude Desktop
- Certifique-se de que o servidor não está em execução em outra instância
Tempos limite de comandos
- Repositórios grandes ou redes lentas podem causar tempos limite
- O tempo limite padrão é de 30 segundos por operação
- Verifique sua conexão com a internet e o status da API do GitHub
Erros de permissão negada
- Certifique-se de que o GitHub CLI tem permissões adequadas para o repositório
- Para repositórios de organizações, verifique se você tem acesso apropriado
- Algumas operações exigem permissões de escrita (criar, editar, mesclar, fechar)
Dicas de Desempenho
- Use nomes específicos de repositório e proprietário para respostas mais rápidas
- Limite os resultados de pesquisa com parâmetros de limite apropriados
- O servidor usa virtual threads para desempenho concorrente ideal
- O GitHub CLI lida com limitação de taxa automaticamente
Obtendo Ajuda
- Consulte a documentação do GitHub CLI:
gh help - Revise o protocolo MCP: https://modelcontextprotocol.io/
- Para problemas do servidor, ative o registro de depuração no application.properties
Considerações de Implantação
Versionamento do JAR
O processo de construção gera arquivos JAR com números de versão no nome (por exemplo, gh_mcp_server-1.0.0.jar). Ao implantar ou atualizar:
-
Implantação Inicial: Use a versão atual na sua configuração do Claude Desktop:
"args": ["-jar", "/path/to/gh_mcp_server/build/libs/gh_mcp_server-1.0.0.jar"] -
Atualizações de Versão: Ao atualizar para uma nova versão, você deve:
- Construir a nova versão:
./gradlew build - Atualizar sua configuração do Claude Desktop com o novo nome do arquivo JAR
- Reiniciar o Claude Desktop para carregar a nova versão
- Construir a nova versão:
-
Implantação Independente de Versão: Para implantação mais fácil, você pode:
- Usar o symlink gerado automaticamente
gh_mcp_server.jar(criado automaticamente durante a construção) - Usar a opção Gradle (usa automaticamente a versão mais recente)
- Usar um script de implantação que lida com atualizações de versão
Gerenciamento Automático de Symlink: O processo de construção cria e mantém automaticamente o symlink:
./gradlew buildcriagh_mcp_server.jar→gh_mcp_server-X.Y.Z.jar./gradlew clean buildrecria o symlink com a versão correta- Nenhum gerenciamento manual de symlink necessário
- Usar o symlink gerado automaticamente
Gerenciamento de Configuração
- Mantenha sua configuração do Claude Desktop em controle de versão
- Documente a versão específica do JAR usada em produção
- Considere usar variáveis de ambiente para caminhos em scripts de implantação
Stack de Tecnologia
- Spring Boot 3.5.0 - Framework de aplicação
- Spring AI 1.0.0 - Integração de IA e capacidades do servidor MCP
- Java 21 - Linguagem de programação com suporte a virtual threads
- GitHub CLI - Integração com a API do GitHub
- Gradle - Ferramenta de construção
- Spotless - Formatação de código com Google Java Format
Principais Recursos de Implementação
- Virtual Threads (Java 21) - Operações de I/O concorrentes eficientes
- ProcessBuilder - Execução segura de comandos com suporte a tempo limite
- Records (Java 17) - Estruturas de dados imutáveis para resultados de comandos
- Pattern Matching - Sintaxe moderna de Java para verificação de tipos
- String Templates - Usando
String.formatted()para construção mais limpa de strings
Licença
Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.