GitHub Enterprise

Integre com a API do GitHub Enterprise para acessar repositórios, issues, pull requests e workflows.

Documentação

MseeP.ai Security Assessment Badge

Trust Score

Servidor MCP do GitHub Enterprise

image

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

  1. Construa a imagem Docker:

    docker build -t github-enterprise-mcp .
    
  2. 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 http por 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

  1. Crie um arquivo .env na 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
    
  2. Inicie o contêiner com Docker Compose:

    docker-compose up -d
    
  3. Verifique os logs:

    docker-compose logs -f
    
  4. 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:

  1. 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
    
  2. Execute o servidor de desenvolvimento:

    export GITHUB_TOKEN="your_github_token"
    export GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3"
    npm run dev
    

    Isso 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
  3. 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:

  1. 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
    
  2. Compile o projeto:

    npm run build
    chmod +x dist/index.js
    
  3. 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
    
  4. Conecte-se ao Cursor usando o modo URL:

    • Adicione o seguinte ao arquivo .cursor/mcp.json do seu Cursor:
    {
      "mcpServers": {
        "github-enterprise": {
          "url": "http://localhost:3000/sse"
        }
      }
    }
    

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:

  1. 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
    
  2. 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"
        }
      }
    }
    
  3. 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:

  1. Abra o Cursor e vá para Configurações
  2. Navegue até IA > Servidores MCP
  3. Clique em Adicionar Servidor MCP
  4. 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 Enterprise
      • GITHUB_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 FerramentaDescriçãoParâmetrosPermissões PAT Necessárias
list-repositoriesRecuperar lista de repositórios de um usuário ou organizaçãoowner: Nome de usuário/org
isOrg: Se é uma organização
type: Tipo de repositório
sort: Critérios de ordenação
page: Número da página
perPage: Itens por página
repo
get-repositoryObter informações detalhadas do repositórioowner: Proprietário do repositório
repo: Nome do repositório
repo
list-branchesListar branches de um repositórioowner: Proprietário do repositório
repo: Nome do repositório
protected_only: Se deve mostrar apenas branches protegidos
page: Número da página
perPage: Itens por página
repo
get-contentRecuperar conteúdo de arquivo ou diretórioowner: Proprietário do repositório
repo: Nome do repositório
path: Caminho do arquivo/diretório
ref: Branch/commit (opcional)
repo
list-pull-requestsListar pull requests em um repositórioowner: Proprietário do repositório
repo: Nome do repositório
state: Filtro de estado do PR
sort: Critérios de ordenação
direction: Direção da ordenação
page: Número da página
per_page: Itens por página
repo
get-pull-requestObter detalhes do pull requestowner: Proprietário do repositório
repo: Nome do repositório
pull_number: Número do pull request
repo
create-pull-requestCriar um novo pull requestowner: Proprietário do repositório
repo: Nome do repositório
title: Título do PR
head: Branch de origem
base: Branch de destino
body: Descrição do PR
draft: Criar como PR de rascunho
repo
merge-pull-requestMesclar um pull requestowner: Proprietário do repositório
repo: Nome do repositório
pull_number: Número do pull request
merge_method: Método de mesclagem
commit_title: Título do commit
commit_message: Mensagem do commit
repo
list-issuesListar issues em um repositórioowner: Proprietário do repositório
repo: Nome do repositório
state: Filtro de estado da issue
sort: Critérios de ordenação
direction: Direção da ordenação
page: Número da página
per_page: Itens por página
repo
get-issueObter detalhes da issueowner: Proprietário do repositório
repo: Nome do repositório
issue_number: Número da issue
repo
list-issue-commentsListar comentários em uma issue ou pull requestowner: Proprietário do repositório
repo: Nome do repositório
issue_number: Número da issue/PR
page: Número da página
per_page: Itens por página
repo
create-issueCriar uma nova issueowner: Proprietário do repositório
repo: Nome do repositório
title: Título da issue
body: Conteúdo do corpo da issue
labels: Matriz de nomes de labels
assignees: Matriz de logins de usuários
milestone: ID do milestone
repo
create-repositoryCriar um novo repositórioname: Nome do repositório
description: Descrição do repositório
private: Se é privado
auto_init: Inicializar com README
gitignore_template: Adicionar .gitignore
license_template: Adicionar licença
org: Nome da organização
repo
update-repositoryAtualizar configurações do repositórioowner: Proprietário do repositório
repo: Nome do repositório
description: Nova descrição
private: Alterar privacidade
default_branch: Alterar branch padrão
has_issues: Ativar/desativar issues
has_projects: Ativar/desativar projetos
has_wiki: Ativar/desativar wiki
archived: Arquivar/desarquivar
repo
delete-repositoryExcluir um repositórioowner: Proprietário do repositório
repo: Nome do repositório
confirm: Confirmação (deve ser true)
delete_repo
list-workflowsListar workflows do GitHub Actionsowner: Proprietário do repositório
repo: Nome do repositório
page: Número da página
perPage: Itens por página
actions:read
list-workflow-runsListar execuções de workflowsowner: Proprietário do repositório
repo: Nome do repositório
workflow_id: ID/nome do arquivo do workflow
branch: Filtrar por branch
status: Filtrar por status
page: Número da página
perPage: Itens por página
actions:read
trigger-workflowAcionar um workflowowner: Proprietário do repositório
repo: Nome do repositório
workflow_id: ID/nome do arquivo do workflow
ref: Referência Git
inputs: Entradas do workflow
actions:write
get-license-infoObter informações de licença do GitHub Enterprise-Requer conta site_admin (Administrador)
get-enterprise-statsObter estatísticas do sistema do GitHub Enterprise-Requer conta site_admin (Administrador)

Nota: Para ferramentas específicas de Enterprise (get-license-info e get-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