GitHub Enterprise
Integra con la API de GitHub Enterprise para acceder a repositorios, incidencias, solicitudes de extracción y flujos de trabajo.
Documentación
Servidor MCP de GitHub Enterprise
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
-
Construir la imagen de Docker:
docker build -t github-enterprise-mcp . -
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 httppor 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
-
Crear un archivo
.enven 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 -
Iniciar el contenedor con Docker Compose:
docker-compose up -d -
Verificar los registros:
docker-compose logs -f -
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:
-
Clonar el repositorio e instalar los paquetes requeridos:
git clone https://github.com/ddukbg/github-enterprise-mcp.git cd github-enterprise-mcp npm install -
Ejecutar el servidor de desarrollo:
export GITHUB_TOKEN="your_github_token" export GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3" npm run devEsto 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
-
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:
-
Clonar el repositorio e instalar los paquetes requeridos:
git clone https://github.com/ddukbg/github-enterprise-mcp.git cd github-enterprise-mcp npm install -
Construir el proyecto:
npm run build chmod +x dist/index.js -
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 -
Conectarse a Cursor usando el modo URL:
- Agregue lo siguiente al archivo
.cursor/mcp.jsonde su Cursor:
{ "mcpServers": { "github-enterprise": { "url": "http://localhost:3000/sse" } } } - Agregue lo siguiente al archivo
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:
-
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 -
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" } } } -
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:
- Abra Cursor y vaya a Configuración
- Navegue a IA > Servidores MCP
- Haga clic en Agregar Servidor MCP
- 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 EnterpriseGITHUB_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 Herramienta | Descripción | Parámetros | Permisos PAT Requeridos |
|---|---|---|---|
list-repositories | Obtener lista de repositorios para un usuario u organización | owner: Nombre de usuario/orgisOrg: Si es una organizacióntype: Tipo de repositoriosort: Criterios de ordenaciónpage: Número de páginaperPage: Elementos por página | repo |
get-repository | Obtener información detallada del repositorio | owner: Propietario del repositoriorepo: Nombre del repositorio | repo |
list-branches | Listar ramas de un repositorio | owner: Propietario del repositoriorepo: Nombre del repositorioprotected_only: Si mostrar solo ramas protegidaspage: Número de páginaperPage: Elementos por página | repo |
get-content | Obtener contenido de archivo o directorio | owner: Propietario del repositoriorepo: Nombre del repositoriopath: Ruta del archivo/directorioref: Rama/commit (opcional) | repo |
list-pull-requests | Listar pull requests en un repositorio | owner: Propietario del repositoriorepo: Nombre del repositoriostate: Filtro de estado del PRsort: Criterios de ordenacióndirection: Dirección de ordenaciónpage: Número de páginaper_page: Elementos por página | repo |
get-pull-request | Obtener detalles del pull request | owner: Propietario del repositoriorepo: Nombre del repositoriopull_number: Número del pull request | repo |
create-pull-request | Crear un nuevo pull request | owner: Propietario del repositoriorepo: Nombre del repositoriotitle: Título del PRhead: Rama de origenbase: Rama basebody: Descripción del PRdraft: Crear como PR borrador | repo |
merge-pull-request | Fusionar un pull request | owner: Propietario del repositoriorepo: Nombre del repositoriopull_number: Número del pull requestmerge_method: Método de fusióncommit_title: Título del commitcommit_message: Mensaje del commit | repo |
list-issues | Listar issues en un repositorio | owner: Propietario del repositoriorepo: Nombre del repositoriostate: Filtro de estado del issuesort: Criterios de ordenacióndirection: Dirección de ordenaciónpage: Número de páginaper_page: Elementos por página | repo |
get-issue | Obtener detalles del issue | owner: Propietario del repositoriorepo: Nombre del repositorioissue_number: Número del issue | repo |
list-issue-comments | Listar comentarios en un issue o pull request | owner: Propietario del repositoriorepo: Nombre del repositorioissue_number: Número del issue/PRpage: Número de páginaper_page: Elementos por página | repo |
create-issue | Crear un nuevo issue | owner: Propietario del repositoriorepo: Nombre del repositoriotitle: Título del issuebody: Contenido del cuerpo del issuelabels: Matriz de nombres de etiquetasassignees: Matriz de inicios de sesión de usuariosmilestone: ID del hito | repo |
create-repository | Crear un nuevo repositorio | name: Nombre del repositoriodescription: Descripción del repositorioprivate: Si es privadoauto_init: Inicializar con READMEgitignore_template: Agregar .gitignorelicense_template: Agregar licenciaorg: Nombre de la organización | repo |
update-repository | Actualizar configuración del repositorio | owner: Propietario del repositoriorepo: Nombre del repositoriodescription: Nueva descripciónprivate: Cambiar privacidaddefault_branch: Cambiar rama predeterminadahas_issues: Habilitar/deshabilitar issueshas_projects: Habilitar/deshabilitar proyectoshas_wiki: Habilitar/deshabilitar wikiarchived: Archivar/desarchivar | repo |
delete-repository | Eliminar un repositorio | owner: Propietario del repositoriorepo: Nombre del repositorioconfirm: Confirmación (debe ser true) | delete_repo |
list-workflows | Listar flujos de trabajo de GitHub Actions | owner: Propietario del repositoriorepo: Nombre del repositoriopage: Número de páginaperPage: Elementos por página | actions:read |
list-workflow-runs | Listar ejecuciones de flujos de trabajo | owner: Propietario del repositoriorepo: Nombre del repositorioworkflow_id: ID/nombre de archivo del flujo de trabajobranch: Filtrar por ramastatus: Filtrar por estadopage: Número de páginaperPage: Elementos por página | actions:read |
trigger-workflow | Activar un flujo de trabajo | owner: Propietario del repositoriorepo: Nombre del repositorioworkflow_id: ID/nombre de archivo del flujo de trabajoref: Referencia de Gitinputs: Entradas del flujo de trabajo | actions:write |
get-license-info | Obtener información de licencia de GitHub Enterprise | - | Requiere cuenta site_admin (Administrador) |
get-enterprise-stats | Obtener estadísticas del sistema de GitHub Enterprise | - | Requiere cuenta site_admin (Administrador) |
Nota: Para herramientas específicas de Enterprise (
get-license-infoyget-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
