GitHub Enterprise MCP Server

by containerelic
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Provides access to GitHub Enterprise and GitHub.com repositories, enabling repository management, branch listing, file content retrieval, and issue/PR handling through the GitHub API.

  • Offers tools for listing, viewing, and triggering GitHub Actions workflows, with capabilities for managing workflow runs and filtering by branch or status.

Servidor MCP de GitHub Enterprise

Un servidor MCP (Protocolo de Contexto de Modelo) para la integración con la API de GitHub Enterprise. Este servidor proporciona una interfaz MCP para acceder fácilmente a la información del repositorio, incidencias, solicitudes de registro 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
  • Nube empresarial de GitHub

Nota : Algunas funciones específicas de la empresa (como la información de licencia y las estadísticas empresariales) no funcionarán con GitHub.com o GitHub Enterprise Cloud.

Características principales

  • Recuperar la lista de repositorios de las instancias de GitHub Enterprise
  • Obtenga información detallada del repositorio
  • Lista de ramas del repositorio
  • Ver el contenido de archivos y directorios
  • Gestionar problemas y solicitudes de extracción
  • Gestión de repositorios (crear, actualizar, eliminar)
  • Gestión de flujos de trabajo de GitHub Actions
  • Gestión de usuarios (enumerar, crear, actualizar, eliminar, suspender/reactivar usuarios)
  • Acceda a las estadísticas empresariales
  • Manejo de errores mejorado y formato de respuesta fácil de usar

Empezando

Prerrequisitos

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

Instalación y configuración de Docker

Opción 1: Ejecutar con Docker

  1. Construya la imagen de Docker:
    docker build -t github-enterprise-mcp .
  2. Ejecute el contenedor 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 de forma predeterminada. Si necesita cambiar esto, puede anular 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. Cree 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. Inicie el contenedor con Docker Compose:
    docker-compose up -d
  3. Revisar los registros:
    docker-compose logs -f
  4. Detener el contenedor:
    docker-compose down

Instalación y configuración

Desarrollo local (utilizando el modo concurrente)

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

  1. Clonar el repositorio e instalar los paquetes necesarios:
    git clone https://github.com/ddukbg/github-enterprise-mcp.git cd github-enterprise-mcp npm install
  2. Ejecute 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 código TypeScript automáticamente cuando cambian los archivos
    • Reiniciar el servidor cuando se actualicen los archivos compilados
    • Ejecute el servidor en modo HTTP para conexiones basadas en URL
  3. Conéctese a Cursor usando el modo URL como se describe a continuación

Instalación y configuración para producción

Opción 1: Usar el modo URL (recomendado para desarrollo local)

Este método es el más estable y recomendado para desarrollo o pruebas locales:

  1. Clonar el repositorio e instalar los paquetes necesarios:
    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 al 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 (enlace npm)

Este método es útil para el 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 se publica el paquete)

Si el paquete se publica en el registro público 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

Escritorio de Claude

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 obtener el funcionamiento más confiable en Cursor, se recomienda utilizar el modo URL:

  1. Inicie el servidor en una ventana de terminal independiente:
    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. Configurar los ajustes MCP del cursor:
    • Abra Cursor y vaya a Configuración
    • Vaya a AI > Servidores MCP
    • Edite su archivo .cursor/mcp.json :
    { "mcpServers": { "github-enterprise": { "url": "http://localhost:3000/sse" } } }
  3. Reinicie el cursor para aplicar los cambios

Alternativa: Modo Comando

Como alternativa, puede configurar Cursor para utilizar el modo de comando, aunque el modo URL es más confiable:

  1. Abra Cursor y vaya a Configuración
  2. Vaya a AI > Servidores MCP
  3. Haga clic en Agregar servidor MCP
  4. Introduzca los siguientes datos:
    • Nombre : GitHub Enterprise
    • Comando : npx
    • Argumentos : @ddukbg/github-enterprise-mcp
    • Variables de entorno :
      • GITHUB_ENTERPRISE_URL : La URL de tu 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 del idioma

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

Variables de entorno

# Set language to Korean export LANGUAGE=ko # Or in .env file LANGUAGE=ko

Argumentos de la 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 el modo HTTP

  • --debug : Habilitar el registro de depuración
  • --github-enterprise-url <URL> : Establecer la URL de la API de GitHub Enterprise
  • --token <TOKEN> : Establecer el token de acceso personal de GitHub
  • --language <LANG> : Establece el 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-repositoriesRecuperar la lista de repositorios de un usuario u organizaciónowner : nombre de usuario/nombre de la organización 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áginarepo
get-repositoryObtenga información detallada del repositorioowner : Propietario del repositorio repo : Nombre del repositoriorepo
list-branchesListar ramas de un repositorioowner : Propietario del repositorio repo : Nombre del repositorio protected_only : Si se deben mostrar solo las ramas protegidas page : Número de página perPage : Elementos por páginarepo
get-contentRecuperar el contenido de un archivo o directorioowner : Propietario del repositorio repo : Nombre del repositorio path : Ruta del archivo/directorio ref : Rama/confirmación (opcional)repo
list-pull-requestsListar solicitudes de extracción en un repositorioowner : Propietario del repositorio repo : Nombre del repositorio state : Estado de PR filter sort : Criterios de ordenación direction : Dirección de ordenación page : Número de página per_page : Elementos por páginarepo
get-pull-requestObtener detalles de la solicitud de extracciónowner : Propietario del repositorio repo : Nombre del repositorio pull_number : Número de solicitud de extracciónrepo
create-pull-requestCrear una nueva solicitud de extracciónowner : Propietario del repositorio repo : Nombre del repositorio title : Título del PR head : Rama principal base : Rama base body : Descripción del PR draft : Crear como borrador del PRrepo
merge-pull-requestFusionar una solicitud de extracciónowner : propietario del repositorio repo : nombre del repositorio pull_number : número de solicitud de extracción merge_method : método de fusión commit_title : título de la confirmación commit_message : mensaje de confirmaciónrepo
list-issuesEnumerar problemas en un repositorioowner : Propietario del repositorio repo : Nombre del repositorio state : Estado del problema filter sort : Criterios de ordenación direction : Dirección de ordenación page : Número de página per_page : Elementos por páginarepo
get-issueObtener detalles del problemaowner : Propietario del repositorio repo : Nombre del repositorio issue_number : Número de emisiónrepo
list-issue-commentsListar comentarios sobre un problema o solicitud de extracciónowner : Propietario del repositorio repo : Nombre del repositorio issue_number : Número de emisión/PR page : Número de página per_page : Elementos por páginarepo
create-issueCrear un nuevo problemaowner : propietario del repositorio repo : nombre del repositorio title : título del problema body : contenido del cuerpo del problema labels : matriz de nombres de etiquetas assignees : matriz de inicios de sesión de usuarios milestone : ID del hitorepo
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ónrepo
update-repositoryActualizar la 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 problemas has_projects : Habilitar/deshabilitar proyectos has_wiki : Habilitar/deshabilitar wiki archived : Archivar/desarchivarrepo
delete-repositoryEliminar un repositorioowner : Propietario del repositorio repo : Nombre del repositorio confirm : Confirmación (debe ser verdadera)delete_repo
list-workflowsLista de flujos de trabajo de GitHub Actionsowner : Propietario del repositorio repo : Nombre del repositorio page : Número de página perPage : Elementos por páginaactions:read
list-workflow-runsLista de ejecuciones del flujo de trabajoowner : Propietario del repositorio repo : Nombre del repositorio workflow_id : ID de flujo de trabajo/nombre de archivo branch : Filtrar por rama status : Filtrar por estado page : Número de página perPage : Elementos por páginaactions:read
trigger-workflowActivar un flujo de trabajoowner : propietario del repositorio repo : nombre del repositorio workflow_id : ID de flujo de trabajo/nombre de archivo ref : referencia de Git inputs : entradas de flujo de trabajoactions:write
get-license-infoObtener información sobre la licencia de GitHub Enterprise-Requiere una cuenta site_admin (Administrador)
get-enterprise-statsObtener estadísticas del sistema de GitHub Enterprise-Requiere una cuenta site_admin (Administrador)

Nota : Para las 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 específicos podrían no ser compatibles con estos permisos de nivel empresarial.

Uso de las herramientas en el cursor

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

Listado de repositorios

mcp_github_enterprise_list_repositories(owner="octocat")

Obtención de información del repositorio

mcp_github_enterprise_get_repository(owner="octocat", repo="hello-world")

Listado de solicitudes de extracción

mcp_github_enterprise_list_pull_requests(owner="octocat", repo="hello-world", state="open")

Gestión de problemas

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

Trabajar con el 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 )

Administració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 de la API

  • Configuración flexible de URL de API (admite diversas variables de entorno y argumentos de línea de comandos)
  • Manejo mejorado de errores y gestión del tiempo de espera
  • Formato de respuesta y mensajes fáciles de usar

Contribuyendo

¡Agradecemos sus contribuciones! No dude en enviar una solicitud de incorporación de cambios.

Licencia

ISC

ID: 27uwbz7hqw