GitHub Enterprise
Integre com a API do GitHub Enterprise para acessar repositórios, issues, pull requests e workflows.
Documentação
Servidor MCP do GitHub Enterprise
Um servidor MCP (Model Context Protocol) para integração com a API do GitHub Enterprise. Este servidor fornece uma interface MCP para acessar facilmente informações de repositórios, issues, PRs e muito mais do GitHub Enterprise no Cursor.
Compatibilidade
Este projeto foi projetado principalmente para ambientes GitHub Enterprise Server, mas também funciona com:
- GitHub.com
- GitHub Enterprise Cloud
Nota: Alguns recursos específicos de Enterprise (como informações de licença e estatísticas empresariais) não funcionarão com GitHub.com ou GitHub Enterprise Cloud.
Principais Recursos
- Recuperar lista de repositórios de instâncias do GitHub Enterprise
- Obter informações detalhadas de repositórios
- Listar branches de repositórios
- Visualizar conteúdo de arquivos e diretórios
- Gerenciar issues e pull requests
- Gerenciamento de repositórios (criar, atualizar, excluir)
- Gerenciamento de workflows do GitHub Actions
- Gerenciamento de usuários (listar, criar, atualizar, excluir, suspender/reativar usuários)
- Acessar estatísticas empresariais
- Tratamento aprimorado de erros e formatação de respostas amigável ao usuário
Começando
Pré-requisitos
- Node.js 18 ou superior
- Acesso a uma instância do GitHub Enterprise
- Personal Access Token (PAT)
Instalação e Configuração com Docker
Opção 1: Executando com Docker
-
Construa a imagem Docker:
docker build -t github-enterprise-mcp . -
Execute o contêiner Docker com variáveis de ambiente:
docker run -p 3000:3000 \ -e GITHUB_TOKEN="your_github_token" \ -e GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3" \ -e DEBUG=true \ github-enterprise-mcp
Nota: O Dockerfile está configurado para executar com
--transport httppor padrão. Se você precisar alterar isso, pode substituir o comando:
docker run -p 3000:3000 \
-e GITHUB_TOKEN="your_github_token" \
-e GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3" \
-e DEBUG=true \
github-enterprise-mcp node dist/index.js --transport http --debug
Opção 2: Usando Docker Compose
-
Crie um arquivo
.envna raiz do projeto com as variáveis de ambiente necessárias:GITHUB_ENTERPRISE_URL=https://github.your-company.com/api/v3 GITHUB_TOKEN=your_github_token DEBUG=true -
Inicie o contêiner com Docker Compose:
docker-compose up -d -
Verifique os logs:
docker-compose logs -f -
Pare o contêiner:
docker-compose down
Instalação e Configuração
Desenvolvimento Local (Usando Modo Concorrente)
Este método é recomendado para desenvolvimento ativo com recompilação automática e reinicialização do servidor:
-
Clone o repositório e instale os pacotes necessários:
git clone https://github.com/ddukbg/github-enterprise-mcp.git cd github-enterprise-mcp npm install -
Execute o servidor de desenvolvimento:
export GITHUB_TOKEN="your_github_token" export GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3" npm run devIsso irá:
- Compilar o código TypeScript automaticamente quando os arquivos mudarem
- Reiniciar o servidor quando os arquivos compilados forem atualizados
- Executar o servidor em modo HTTP para conexões baseadas em URL
-
Conecte-se ao Cursor usando o modo URL conforme descrito abaixo
Instalação e Configuração para Produção
Opção 1: Usando Modo URL (Recomendado para Desenvolvimento Local)
Este método é o mais estável e recomendado para desenvolvimento local ou testes:
-
Clone o repositório e instale os pacotes necessários:
git clone https://github.com/ddukbg/github-enterprise-mcp.git cd github-enterprise-mcp npm install -
Compile o projeto:
npm run build chmod +x dist/index.js -
Execute o servidor:
export GITHUB_TOKEN="your_github_token" export GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3" node dist/index.js --transport http --debug -
Conecte-se ao Cursor usando o modo URL:
- Adicione o seguinte ao arquivo
.cursor/mcp.jsondo seu Cursor:
{ "mcpServers": { "github-enterprise": { "url": "http://localhost:3000/sse" } } } - Adicione o seguinte ao arquivo
Opção 2: Instalar como Comando Global (npm link)
Este método é útil para desenvolvimento local:
# After cloning the repository
git clone https://github.com/ddukbg/github-enterprise-mcp.git
cd github-enterprise-mcp
# Install required packages
npm install
# Build
npm run build
chmod +x dist/index.js
# Link globally
npm link
# Run as a global command
export GITHUB_TOKEN="your_github_token"
export GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3"
github-enterprise-mcp --transport=http --debug
Opção 3: Usando npx (Quando o Pacote for Publicado)
Se o pacote for publicado no registro público do npm:
npx @ddukbg/github-enterprise-mcp --token=your_github_token --github-enterprise-url=https://github.your-company.com/api/v3
Integração com Ferramentas de IA
Claude Desktop
Adicione o seguinte ao seu claude_desktop_config.json:
{
"mcpServers": {
"github-enterprise": {
"command": "npx",
"args": ["-y", "@ddukbg/github-enterprise-mcp", "--token=YOUR_GITHUB_TOKEN", "--github-enterprise-url=YOUR_GITHUB_ENTERPRISE_URL"]
}
}
}
Substitua YOUR_GITHUB_TOKEN e YOUR_GITHUB_ENTERPRISE_URL pelos seus valores reais.
Cursor
Recomendado: Modo URL (Mais Estável)
Para a operação mais confiável no Cursor, recomenda-se usar o modo URL:
-
Inicie o servidor em uma janela de terminal separada:
cd /path/to/github-enterprise-mcp GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3" GITHUB_TOKEN="your_github_token" node dist/index.js --transport http -
Configure as configurações MCP do Cursor:
- Abra o Cursor e vá para Configurações
- Navegue até IA > Servidores MCP
- Edite seu arquivo
.cursor/mcp.json:
{ "mcpServers": { "github-enterprise": { "url": "http://localhost:3000/sse" } } } -
Reinicie o Cursor para aplicar as alterações
Alternativa: Modo Comando
Alternativamente, você pode configurar o Cursor para usar o modo comando, embora o modo URL seja mais confiável:
- Abra o Cursor e vá para Configurações
- Navegue até IA > Servidores MCP
- Clique em Adicionar Servidor MCP
- Insira os seguintes detalhes:
- Nome: GitHub Enterprise
- Comando:
npx - Argumentos:
@ddukbg/github-enterprise-mcp - Variáveis de Ambiente:
GITHUB_ENTERPRISE_URL: Sua URL da API do GitHub EnterpriseGITHUB_TOKEN: Seu token de acesso pessoal do GitHub
Alternativamente, você pode editar manualmente seu arquivo .cursor/mcp.json para incluir:
{
"mcpServers": {
"github-enterprise": {
"command": "npx",
"args": [
"@ddukbg/github-enterprise-mcp"
],
"env": {
"GITHUB_ENTERPRISE_URL": "https://github.your-company.com/api/v3",
"GITHUB_TOKEN": "your_github_token"
}
}
}
}
Configuração de Idioma
Este servidor MCP suporta os idiomas inglês e coreano. Você pode configurar o idioma usando:
Variáveis de Ambiente
# Set language to Korean
export LANGUAGE=ko
# Or in .env file
LANGUAGE=ko
Argumentos de Linha de Comando
# Set language to Korean
node dist/index.js --language ko
O idioma padrão é inglês se não for especificado.
Opções Adicionais no Modo HTTP
--debug: Ativar registro de depuração--github-enterprise-url <URL>: Definir URL da API do GitHub Enterprise--token <TOKEN>: Definir token de acesso pessoal do GitHub--language <LANG>: Definir idioma (en ou ko, padrão: en)
Ferramentas MCP Disponíveis
Este servidor MCP fornece as seguintes ferramentas:
| Nome da Ferramenta | Descrição | Parâmetros | Permissões PAT Necessárias |
|---|---|---|---|
list-repositories | Recuperar lista de repositórios de um usuário ou organização | owner: Nome de usuário/orgisOrg: Se é uma organizaçãotype: Tipo de repositóriosort: Critérios de ordenaçãopage: Número da páginaperPage: Itens por página | repo |
get-repository | Obter informações detalhadas do repositório | owner: Proprietário do repositóriorepo: Nome do repositório | repo |
list-branches | Listar branches de um repositório | owner: Proprietário do repositóriorepo: Nome do repositórioprotected_only: Se deve mostrar apenas branches protegidospage: Número da páginaperPage: Itens por página | repo |
get-content | Recuperar conteúdo de arquivo ou diretório | owner: Proprietário do repositóriorepo: Nome do repositóriopath: Caminho do arquivo/diretórioref: Branch/commit (opcional) | repo |
list-pull-requests | Listar pull requests em um repositório | owner: Proprietário do repositóriorepo: Nome do repositóriostate: Filtro de estado do PRsort: Critérios de ordenaçãodirection: Direção da ordenaçãopage: Número da páginaper_page: Itens por página | repo |
get-pull-request | Obter detalhes do pull request | owner: Proprietário do repositóriorepo: Nome do repositóriopull_number: Número do pull request | repo |
create-pull-request | Criar um novo pull request | owner: Proprietário do repositóriorepo: Nome do repositóriotitle: Título do PRhead: Branch de origembase: Branch de destinobody: Descrição do PRdraft: Criar como PR de rascunho | repo |
merge-pull-request | Mesclar um pull request | owner: Proprietário do repositóriorepo: Nome do repositóriopull_number: Número do pull requestmerge_method: Método de mesclagemcommit_title: Título do commitcommit_message: Mensagem do commit | repo |
list-issues | Listar issues em um repositório | owner: Proprietário do repositóriorepo: Nome do repositóriostate: Filtro de estado da issuesort: Critérios de ordenaçãodirection: Direção da ordenaçãopage: Número da páginaper_page: Itens por página | repo |
get-issue | Obter detalhes da issue | owner: Proprietário do repositóriorepo: Nome do repositórioissue_number: Número da issue | repo |
list-issue-comments | Listar comentários em uma issue ou pull request | owner: Proprietário do repositóriorepo: Nome do repositórioissue_number: Número da issue/PRpage: Número da páginaper_page: Itens por página | repo |
create-issue | Criar uma nova issue | owner: Proprietário do repositóriorepo: Nome do repositóriotitle: Título da issuebody: Conteúdo do corpo da issuelabels: Matriz de nomes de labelsassignees: Matriz de logins de usuáriosmilestone: ID do milestone | repo |
create-repository | Criar um novo repositório | name: Nome do repositóriodescription: Descrição do repositórioprivate: Se é privadoauto_init: Inicializar com READMEgitignore_template: Adicionar .gitignorelicense_template: Adicionar licençaorg: Nome da organização | repo |
update-repository | Atualizar configurações do repositório | owner: Proprietário do repositóriorepo: Nome do repositóriodescription: Nova descriçãoprivate: Alterar privacidadedefault_branch: Alterar branch padrãohas_issues: Ativar/desativar issueshas_projects: Ativar/desativar projetoshas_wiki: Ativar/desativar wikiarchived: Arquivar/desarquivar | repo |
delete-repository | Excluir um repositório | owner: Proprietário do repositóriorepo: Nome do repositórioconfirm: Confirmação (deve ser true) | delete_repo |
list-workflows | Listar workflows do GitHub Actions | owner: Proprietário do repositóriorepo: Nome do repositóriopage: Número da páginaperPage: Itens por página | actions:read |
list-workflow-runs | Listar execuções de workflows | owner: Proprietário do repositóriorepo: Nome do repositórioworkflow_id: ID/nome do arquivo do workflowbranch: Filtrar por branchstatus: Filtrar por statuspage: Número da páginaperPage: Itens por página | actions:read |
trigger-workflow | Acionar um workflow | owner: Proprietário do repositóriorepo: Nome do repositórioworkflow_id: ID/nome do arquivo do workflowref: Referência Gitinputs: Entradas do workflow | actions:write |
get-license-info | Obter informações de licença do GitHub Enterprise | - | Requer conta site_admin (Administrador) |
get-enterprise-stats | Obter estatísticas do sistema do GitHub Enterprise | - | Requer conta site_admin (Administrador) |
Nota: Para ferramentas específicas de Enterprise (
get-license-infoeget-enterprise-stats), é necessário um usuário com privilégios de administrador do site. Recomenda-se um Classic Personal Access Token, pois tokens de granularidade fina podem não suportar essas permissões de nível Enterprise.
Usando as Ferramentas no Cursor
Depois de configurar o servidor MCP e conectar o Cursor a ele, você pode usar as ferramentas do GitHub Enterprise diretamente no chat de IA do Cursor. Aqui estão alguns exemplos:
Listando Repositórios
mcp_github_enterprise_list_repositories(owner="octocat")
Obtendo Informações do Repositório
mcp_github_enterprise_get_repository(owner="octocat", repo="hello-world")
Listando Pull Requests
mcp_github_enterprise_list_pull_requests(owner="octocat", repo="hello-world", state="open")
Gerenciando Issues
# List issues
mcp_github_enterprise_list_issues(owner="octocat", repo="hello-world", state="all")
# Get issue details
mcp_github_enterprise_get_issue(owner="octocat", repo="hello-world", issue_number=1)
# Get issue/PR comments
mcp_github_enterprise_list_issue_comments(owner="octocat", repo="hello-world", issue_number=1)
# Create a new issue
mcp_github_enterprise_create_issue(
owner="octocat",
repo="hello-world",
title="Found a bug",
body="Here is a description of the bug",
labels=["bug", "important"]
)
Trabalhando com Conteúdo do Repositório
mcp_github_enterprise_get_content(owner="octocat", repo="hello-world", path="README.md")
Gerenciamento de Repositórios
# Create a new repository
mcp_github_enterprise_create_repository(
name="new-project",
description="This is a new project",
private=true,
auto_init=true
)
# Update repository settings
mcp_github_enterprise_update_repository(
owner="octocat",
repo="hello-world",
description="Updated description",
has_issues=true
)
Gerenciamento de Usuários (Somente Enterprise)
Estes recursos são projetados especificamente para ambientes GitHub Enterprise Server e exigem permissões administrativas:
# List all users in the GitHub Enterprise instance
mcp_github_enterprise_list_users(filter="active", per_page=100)
# Get a specific user's details
mcp_github_enterprise_get_user(username="octocat")
# Create a new user (Enterprise only)
mcp_github_enterprise_create_user(
login="newuser",
email="newuser@example.com",
name="New User",
company="ACME Inc."
)
# Update a user's information (Enterprise only)
mcp_github_enterprise_update_user(
username="octocat",
email="updated-email@example.com",
location="San Francisco"
)
# Suspend a user (Enterprise only)
mcp_github_enterprise_suspend_user(
username="octocat",
reason="Violation of terms of service"
)
# Unsuspend a user (Enterprise only)
mcp_github_enterprise_unsuspend_user(username="octocat")
# List organizations a user belongs to
mcp_github_enterprise_list_user_orgs(username="octocat")
Melhorias na API
- Configuração flexível de URL da API (suporta várias variáveis de ambiente e argumentos de linha de comando)
- Tratamento aprimorado de erros e gerenciamento de tempo limite
- Formatação de respostas e mensagens amigável ao usuário
Contribuindo
Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.
Licença
ISC
