GitHub Enterprise

Integra con la API de GitHub Enterprise para acceder a repositorios, incidencias, solicitudes de extracción y flujos de trabajo.

Documentación

MseeP.ai Security Assessment Badge

Trust Score

Servidor MCP de GitHub Enterprise

image

Un servidor MCP (Model Context Protocol) para la integración con la API de GitHub Enterprise. Este servidor proporciona una interfaz MCP para acceder fácilmente a información de repositorios, issues, PRs y más desde GitHub Enterprise en Cursor.

Compatibilidad

Este proyecto está diseñado principalmente para entornos de GitHub Enterprise Server, pero también funciona con:

  • GitHub.com
  • GitHub Enterprise Cloud

Nota: Algunas características específicas de Enterprise (como información de licencias y estadísticas empresariales) no funcionarán con GitHub.com o GitHub Enterprise Cloud.

Características Principales

  • Obtener lista de repositorios de instancias de GitHub Enterprise
  • Obtener información detallada de repositorios
  • Listar ramas de repositorios
  • Ver contenido de archivos y directorios
  • Gestionar issues y pull requests
  • Gestión de repositorios (crear, actualizar, eliminar)
  • Gestión de flujos de trabajo de GitHub Actions
  • Gestión de usuarios (listar, crear, actualizar, eliminar, suspender/activar usuarios)
  • Acceder a estadísticas empresariales
  • Manejo mejorado de errores y formato de respuestas amigable para el usuario

Comenzando

Requisitos Previos

  • Node.js 18 o superior
  • Acceso a una instancia de GitHub Enterprise
  • Token de Acceso Personal (PAT)

Instalación y Configuración con Docker

Opción 1: Ejecutar con Docker

  1. Construir la imagen de Docker:

    docker build -t github-enterprise-mcp .
    
  2. Ejecutar el contenedor de Docker con variables de entorno:

    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: El Dockerfile está configurado para ejecutarse con --transport http por defecto. Si necesita cambiarlo, puede sobrescribir el 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

Opción 2: Usar Docker Compose

  1. Crear un archivo .env en la raíz del proyecto con las variables de entorno requeridas:

    GITHUB_ENTERPRISE_URL=https://github.your-company.com/api/v3
    GITHUB_TOKEN=your_github_token
    DEBUG=true
    
  2. Iniciar el contenedor con Docker Compose:

    docker-compose up -d
    
  3. Verificar los registros:

    docker-compose logs -f
    
  4. Detener el contenedor:

    docker-compose down
    

Instalación y Configuración

Desarrollo Local (Usando Modo Concurrente)

Este método se recomienda para desarrollo activo con recompilación automática y reinicios del servidor:

  1. Clonar el repositorio e instalar los paquetes requeridos:

    git clone https://github.com/ddukbg/github-enterprise-mcp.git
    cd github-enterprise-mcp
    npm install
    
  2. Ejecutar el servidor de desarrollo:

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

    Esto hará lo siguiente:

    • Compilar el código TypeScript automáticamente cuando los archivos cambien
    • Reiniciar el servidor cuando los archivos compilados se actualicen
    • Ejecutar el servidor en modo HTTP para conexiones basadas en URL
  3. Conectarse a Cursor usando el modo URL como se describe a continuación

Instalación y Configuración para Producción

Opción 1: Usar Modo URL (Recomendado para Desarrollo Local)

Este método es el más estable y se recomienda para desarrollo local o pruebas:

  1. Clonar el repositorio e instalar los paquetes requeridos:

    git clone https://github.com/ddukbg/github-enterprise-mcp.git
    cd github-enterprise-mcp
    npm install
    
  2. Construir el proyecto:

    npm run build
    chmod +x dist/index.js
    
  3. Ejecutar el 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. Conectarse a Cursor usando el modo URL:

    • Agregue lo siguiente al archivo .cursor/mcp.json de su Cursor:
    {
      "mcpServers": {
        "github-enterprise": {
          "url": "http://localhost:3000/sse"
        }
      }
    }
    

Opción 2: Instalar como Comando Global (npm link)

Este método es útil para desarrollo 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

Opción 3: Usar npx (Cuando el Paquete esté Publicado)

Si el paquete está publicado en el registro público de npm:

npx @ddukbg/github-enterprise-mcp --token=your_github_token --github-enterprise-url=https://github.your-company.com/api/v3

Integración con Herramientas de IA

Claude Desktop

Agregue lo siguiente a su 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"]
    }
  }
}

Reemplace YOUR_GITHUB_TOKEN y YOUR_GITHUB_ENTERPRISE_URL con sus valores reales.

Cursor

Recomendado: Modo URL (Más Estable)

Para la operación más confiable en Cursor, se recomienda usar el modo URL:

  1. Inicie el servidor en una ventana 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 los ajustes de MCP de Cursor:

    • Abra Cursor y vaya a Configuración
    • Navegue a IA > Servidores MCP
    • Edite su archivo .cursor/mcp.json:
    {
      "mcpServers": {
        "github-enterprise": {
          "url": "http://localhost:3000/sse"
        }
      }
    }
    
  3. Reinicie Cursor para aplicar los cambios

Alternativa: Modo Comando

Alternativamente, puede configurar Cursor para usar el modo comando, aunque el modo URL es más confiable:

  1. Abra Cursor y vaya a Configuración
  2. Navegue a IA > Servidores MCP
  3. Haga clic en Agregar Servidor MCP
  4. Ingrese los siguientes detalles:
    • Nombre: GitHub Enterprise
    • Comando: npx
    • Argumentos: @ddukbg/github-enterprise-mcp
    • Variables de Entorno:
      • GITHUB_ENTERPRISE_URL: Su URL de API de GitHub Enterprise
      • GITHUB_TOKEN: Su token de acceso personal de GitHub

Alternativamente, puede editar manualmente su archivo .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"
      }
    }
  }
}

Configuración de Idioma

Este servidor MCP admite los idiomas inglés y coreano. Puede configurar el idioma usando:

Variables de Entorno

# Set language to Korean
export LANGUAGE=ko

# Or in .env file
LANGUAGE=ko

Argumentos de Línea de Comandos

# Set language to Korean
node dist/index.js --language ko

El idioma predeterminado es inglés si no se especifica.

Opciones Adicionales en Modo HTTP

  • --debug: Habilitar registro de depuración
  • --github-enterprise-url <URL>: Establecer URL de API de GitHub Enterprise
  • --token <TOKEN>: Establecer Token de Acceso Personal de GitHub
  • --language <LANG>: Establecer idioma (en o ko, predeterminado: en)

Herramientas MCP Disponibles

Este servidor MCP proporciona las siguientes herramientas:

Nombre de la HerramientaDescripciónParámetrosPermisos PAT Requeridos
list-repositoriesObtener lista de repositorios para un usuario u organizaciónowner: Nombre de usuario/org
isOrg: Si es una organización
type: Tipo de repositorio
sort: Criterios de ordenación
page: Número de página
perPage: Elementos por página
repo
get-repositoryObtener información detallada del repositorioowner: Propietario del repositorio
repo: Nombre del repositorio
repo
list-branchesListar ramas de un repositorioowner: Propietario del repositorio
repo: Nombre del repositorio
protected_only: Si mostrar solo ramas protegidas
page: Número de página
perPage: Elementos por página
repo
get-contentObtener contenido de archivo o directorioowner: Propietario del repositorio
repo: Nombre del repositorio
path: Ruta del archivo/directorio
ref: Rama/commit (opcional)
repo
list-pull-requestsListar pull requests en un repositorioowner: Propietario del repositorio
repo: Nombre del repositorio
state: Filtro de estado del PR
sort: Criterios de ordenación
direction: Dirección de ordenación
page: Número de página
per_page: Elementos por página
repo
get-pull-requestObtener detalles del pull requestowner: Propietario del repositorio
repo: Nombre del repositorio
pull_number: Número del pull request
repo
create-pull-requestCrear un nuevo pull requestowner: Propietario del repositorio
repo: Nombre del repositorio
title: Título del PR
head: Rama de origen
base: Rama base
body: Descripción del PR
draft: Crear como PR borrador
repo
merge-pull-requestFusionar un pull requestowner: Propietario del repositorio
repo: Nombre del repositorio
pull_number: Número del pull request
merge_method: Método de fusión
commit_title: Título del commit
commit_message: Mensaje del commit
repo
list-issuesListar issues en un repositorioowner: Propietario del repositorio
repo: Nombre del repositorio
state: Filtro de estado del issue
sort: Criterios de ordenación
direction: Dirección de ordenación
page: Número de página
per_page: Elementos por página
repo
get-issueObtener detalles del issueowner: Propietario del repositorio
repo: Nombre del repositorio
issue_number: Número del issue
repo
list-issue-commentsListar comentarios en un issue o pull requestowner: Propietario del repositorio
repo: Nombre del repositorio
issue_number: Número del issue/PR
page: Número de página
per_page: Elementos por página
repo
create-issueCrear un nuevo issueowner: Propietario del repositorio
repo: Nombre del repositorio
title: Título del issue
body: Contenido del cuerpo del issue
labels: Matriz de nombres de etiquetas
assignees: Matriz de inicios de sesión de usuarios
milestone: ID del hito
repo
create-repositoryCrear un nuevo repositorioname: Nombre del repositorio
description: Descripción del repositorio
private: Si es privado
auto_init: Inicializar con README
gitignore_template: Agregar .gitignore
license_template: Agregar licencia
org: Nombre de la organización
repo
update-repositoryActualizar configuración del repositorioowner: Propietario del repositorio
repo: Nombre del repositorio
description: Nueva descripción
private: Cambiar privacidad
default_branch: Cambiar rama predeterminada
has_issues: Habilitar/deshabilitar issues
has_projects: Habilitar/deshabilitar proyectos
has_wiki: Habilitar/deshabilitar wiki
archived: Archivar/desarchivar
repo
delete-repositoryEliminar un repositorioowner: Propietario del repositorio
repo: Nombre del repositorio
confirm: Confirmación (debe ser true)
delete_repo
list-workflowsListar flujos de trabajo de GitHub Actionsowner: Propietario del repositorio
repo: Nombre del repositorio
page: Número de página
perPage: Elementos por página
actions:read
list-workflow-runsListar ejecuciones de flujos de trabajoowner: Propietario del repositorio
repo: Nombre del repositorio
workflow_id: ID/nombre de archivo del flujo de trabajo
branch: Filtrar por rama
status: Filtrar por estado
page: Número de página
perPage: Elementos por página
actions:read
trigger-workflowActivar un flujo de trabajoowner: Propietario del repositorio
repo: Nombre del repositorio
workflow_id: ID/nombre de archivo del flujo de trabajo
ref: Referencia de Git
inputs: Entradas del flujo de trabajo
actions:write
get-license-infoObtener información de licencia de GitHub Enterprise-Requiere cuenta site_admin (Administrador)
get-enterprise-statsObtener estadísticas del sistema de GitHub Enterprise-Requiere cuenta site_admin (Administrador)

Nota: Para herramientas específicas de Enterprise (get-license-info y get-enterprise-stats), se requiere un usuario con privilegios de administrador del sitio. Se recomienda un Token de Acceso Personal Clásico, ya que los tokens de grano fino pueden no admitir estos permisos a nivel de Enterprise.

Usando las Herramientas en Cursor

Una vez que haya configurado el servidor MCP y haya configurado Cursor para conectarse a él, puede usar las herramientas de GitHub Enterprise directamente en el chat de IA de Cursor. Aquí hay algunos ejemplos:

Listando Repositorios

mcp_github_enterprise_list_repositories(owner="octocat")

Obteniendo Información del Repositorio

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")

Gestionando 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"]
)

Trabajando con Contenido del Repositorio

mcp_github_enterprise_get_content(owner="octocat", repo="hello-world", path="README.md")

Gestión de Repositorios

# 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
)

Gestión de Usuarios (Solo Enterprise)

Estas funciones están diseñadas específicamente para entornos de GitHub Enterprise Server y requieren permisos administrativos:

# 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")

Mejoras en la API

  • Configuración flexible de la URL de la API (admite varias variables de entorno y argumentos de línea de comandos)
  • Manejo mejorado de errores y gestión de tiempos de espera
  • Formato de respuestas y mensajes fácil de usar

Contribuciones

¡Las contribuciones son bienvenidas! No dudes en enviar un Pull Request.

Licencia

ISC