GitHub Repos Manager MCP Server

Gestión automatizada de GitHub basada en tokens. Sin Docker, configuración flexible, más de 80 herramientas con integración directa de API.

Documentación

github-svgrepo-logo GitHub Repos Manager MCP Server

Gestión de automatización de GitHub basada en tokens. Sin Docker para un rendimiento óptimo, configuración flexible para control detallado, 89 herramientas con integración directa de API.

Un servidor completo del Protocolo de Contexto de Modelo (MCP) que permite a tu cliente MCP (Claude Desktop, Roo Code, Cline, Cursor, Windsurf, etc.) interactuar con repositorios de GitHub usando tu token de acceso personal de GitHub.

Esta herramienta simplifica la gestión de repositorios de GitHub usando solo un token de GitHub para la configuración. Al omitir Docker, evita complejidad innecesaria, ofreciendo resultados rápidos y efectivos mediante integración directa con la API.

Este servidor está construido con Node.js y proporciona un kit de herramientas completo para la gestión de repositorios, seguimiento de issues, gestión de colaboración y más, todo aprovechando la API de GitHub para un rendimiento óptimo.

Ir directamente a Configuración Rápida y Configuración del Cliente MCP

🚀 Ventajas Clave sobre otros Servidores MCP de Automatización de GitHub

🎯 Simplicidad: El acceso basado en tokens elimina la complejidad. 🌿 Eficiencia: Sin Docker se garantiza un rendimiento ligero y óptimo. 💪 Potencia: 89 herramientas con integración directa de API ofrecen una flexibilidad incomparable. 🔒 Flexibilidad: Control detallado con herramientas configurables.

🎯 Configuración y Operación Simples

Sin necesidad de Docker - Servidor Node.js simple que se ejecuta en cualquier lugar
Configuración con un solo token - Solo necesita un Token de Acceso Personal de GitHub para funcionar
Integración directa con la API - Sin dependencia de la CLI de gh, más rápido y confiable
Cero configuración - Funciona de inmediato solo con el token

🔒 Seguridad y Control Avanzados

Repositorios permitidos - Restringe operaciones a repos o propietarios específicos
Gestión de herramientas - Habilita/deshabilita herramientas específicas para un control detallado
Repositorio predeterminado - Establece un repo predeterminado para flujos de trabajo optimizados
Permisos flexibles - Configura exactamente a qué puede acceder el servidor

💪 Funciones Potentes

Kit de herramientas completo - 89 herramientas potentes para un flujo de trabajo completo de GitHub
Gestión de ramas y commits - Crea ramas, explora el historial, compara cambios
Soporte de carga de imágenes - Sube e incrusta imágenes directamente en issues
Filtrado avanzado - Ordena, filtra y busca con múltiples criterios
Manejo de límites de tasa - Gestión integrada de límites de tasa de la API de GitHub

🎯 Conjunto Completo de Funciones

📁 Gestión de Repositorios

  • Listado inteligente de repositorios con filtrado por visibilidad (público/privado/todos) y opciones de ordenación
  • Información detallada del repositorio incluyendo estadísticas, URLs y metadatos
  • Exploración de archivos y directorios con soporte para ramas/commits específicos
  • Búsqueda de repositorios en todo GitHub con ordenación avanzada
  • Configuración de repositorio predeterminado para flujos de trabajo optimizados

🎫 Gestión Avanzada de Issues

  • Ciclo de vida completo de issues - crear, editar, listar y gestionar estados
  • Soporte de contenido enriquecido - subir e incrustar imágenes directamente en issues
  • Gestión de etiquetas - añadir, eliminar y organizar con etiquetas personalizadas
  • Gestión de asignados - asignar/desasignar miembros del equipo
  • Bloqueo/desbloqueo de issues con razones personalizables
  • Sistema de comentarios - crear, editar, eliminar y listar comentarios de issues
  • Gestión de estados - abrir, cerrar y hacer seguimiento del progreso de issues

🔄 Gestión de Pull Requests

  • Listado de pull requests con filtrado por estado y ordenación
  • Información completa de PR incluyendo detalles de rama y estado

🌿 Gestión de Ramas y Commits

  • Operaciones de ramas - listar todas las ramas con estado de protección y últimos commits
  • Creación de ramas - crear nuevas ramas desde ramas o commits existentes
  • Historial de commits - explorar el historial de commits con filtrado avanzado (fecha, autor, rama)
  • Detalles de commits - obtener información completa de commits incluyendo cambios de archivos
  • Comparación de commits - comparar dos commits, ramas o etiquetas para ver diferencias

👥 Colaboración y Gestión de Usuarios

  • Información de perfil de usuario para cualquier usuario de GitHub o tu propia cuenta
  • Gestión de colaboradores de repositorio con filtrado por permisos
  • Herramientas de colaboración en equipo para gestionar acceso y permisos

🎨 Capacidades Avanzadas

  • Carga e incrustación de imágenes - subir imágenes locales directamente a GitHub
  • Operaciones por lotes - gestionar múltiples asignados, etiquetas y comentarios
  • Autenticación flexible - acceso seguro a la API de GitHub basado en tokens
  • Manejo inteligente de errores - informes de error completos y recuperación

Requisitos Previos

Requisitos Mínimos - ¡Así de Simple!

  1. Node.js (versión 18 o superior) - ¡Eso es todo!
  2. Token de Acceso Personal de GitHub (PAT) - La única configuración necesaria
    • Ve a GitHub → Configuración → Configuración de desarrollador → Tokens de acceso personal → Tokens (clásicos) o Tokens de grano fino.
    • Genera un nuevo token con al menos estos alcances:
      • repo (Control total de repositorios privados) - Recomendado para funcionalidad completa.
      • user:read o user:email (para leer datos de perfil de usuario).
      • read:org (si necesitas acceder a información de organizaciones).
    • Importante: Guarda este token de forma segura. Deberás proporcionarlo directamente en la configuración de tu cliente MCP para este servidor (ver Paso 3 a continuación).

Configuración Rápida

Usando npx (¡Lo más simple - Sin necesidad de instalación!)

Asegúrate de tener Node.js instalado, luego usa npx para ejecutar el servidor directamente. Verifica que hayas exportado tu token de GitHub como variable de entorno llamada GH_TOKEN o inclúyelo en la configuración de tu cliente MCP.

Puedes ejecutar este servidor directamente sin clonar ni instalar:

# Run directly with npx
npx -y github-repos-manager-mcp

Para macOS/Linux:

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "npx",
      "args": [
        "-y",
        "github-repos-manager-mcp"
      ],
      "env": {
        "GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE"
      }
    }
  }
}

Para Windows, en algunos casos puede que necesites usar npx.cmd en lugar de npx:

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "npx.cmd",
      "args": [
        "-y",
        "github-repos-manager-mcp"
      ],
      "env": {
        "GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE"
      }
    }
  }
}

Este comando descargará y ejecutará automáticamente la última versión del servidor sin necesidad de instalar nada localmente.

Clonar, Instalar y Ejecutar Localmente

Si prefieres ejecutar el servidor localmente, clona el repositorio e instala las dependencias:

git clone https://github.com/kurdin/github-repos-manager.git
cd github-repos-manager
npm install

Luego, configura tu cliente MCP para que apunte al servidor local usando la ruta completa a server.cjs:

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "node",
      "args": ["/full/path/to/your/project/github-repos-manager-mcp/server.cjs"],
      "env": {
        "GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE"
      }
    }
  }
}

Importante: Reemplaza "ghp_YOUR_ACTUAL_TOKEN_HERE" con tu Token de Acceso Personal de GitHub real.

3. Probar el Servidor

Una vez que el cliente MCP esté configurado con la ruta correcta a server.cjs y tu GH_TOKEN, el servidor debería iniciarse automáticamente cuando el cliente intente usar una de sus herramientas.

También puedes probar el script del servidor directamente para la autenticación básica, pero esto requiere establecer temporalmente la variable de entorno GH_TOKEN en tu shell para esta prueba específica:

# For direct script testing ONLY (normal operation uses MCP client config)
export GH_TOKEN="ghp_YOUR_TEMPORARY_TEST_TOKEN"
node server.cjs
unset GH_TOKEN # Important: unset after testing

Si tiene éxito, deberías ver "GitHub API authentication successful" y "GitHub Repos Manager MCP Server running on stdio".

Nota: El servidor solo establecerá un repositorio predeterminado si lo configuras explícitamente mediante variables de entorno, argumentos de línea de comandos, o usas la herramienta set_default_repo. Nunca establece un repositorio predeterminado automáticamente.

Ubicaciones de archivos de ejemplo para Claude Desktop claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json (la ruta puede variar)

⚙️ Opciones de Configuración

Configuración del Repositorio Predeterminado

Puedes establecer un repositorio predeterminado para optimizar tu flujo de trabajo y evitar especificar owner y repo en cada comando. Hay tres formas de configurarlo:

1. Variables de Entorno (Recomendado para clientes MCP)

Añade variables de entorno a la configuración de tu cliente MCP:

Usando npx:

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "npx",
      "args": ["-y", "github-repos-manager-mcp"],
      "env": {
        "GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
        "GH_DEFAULT_OWNER": "octocat",
        "GH_DEFAULT_REPO": "Hello-World"
      }
    }
  }
}

Usando instalación local:

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "node",
      "args": ["/full/path/to/your/project/github-repos-manager-mcp/server.cjs"],
      "env": {
        "GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
        "GH_DEFAULT_OWNER": "octocat",
        "GH_DEFAULT_REPO": "Hello-World"
      }
    }
  }
}

2. Argumentos de Línea de Comandos

Al ejecutar el servidor directamente, puedes pasar la configuración del repositorio predeterminado:

node server.cjs --default-owner octocat --default-repo Hello-World

3. Llamada a Herramienta en Tiempo de Ejecución

Usa la herramienta set_default_repo durante tu conversación para establecer o cambiar el repositorio predeterminado:

  • "Establecer repositorio predeterminado a microsoft/vscode"
  • "Cambiar el predeterminado a mi propio repo username/my-project"

Prioridad de Configuración (de mayor a menor):

  1. Argumentos de línea de comandos (--default-owner, --default-repo)
  2. Variables de entorno (GH_DEFAULT_OWNER, GH_DEFAULT_REPO)
  3. Llamadas a herramientas en tiempo de ejecución (set_default_repo)

Beneficios del Repositorio Predeterminado:

  • Elimina la necesidad de especificar owner y repo en cada comando
  • Optimiza los flujos de trabajo cuando trabajas principalmente con un repositorio
  • Se puede cambiar en cualquier momento durante tu sesión usando la herramienta set_default_repo
  • Opcional - todas las herramientas funcionan sin un repositorio predeterminado establecido

Una vez que se establece un repositorio predeterminado, puedes omitir los parámetros owner y repo de los comandos:

  • En lugar de: "Listar issues para microsoft/vscode"
  • Simplemente di: "Listar issues" (después de establecer microsoft/vscode como predeterminado)

Control de Acceso a Repositorios

Puedes restringir a qué repositorios puede acceder el servidor usando la variable de entorno GH_ALLOWED_REPOS o el argumento de línea de comandos --allowed-repos. Esta es una característica de seguridad que garantiza que el servidor solo pueda operar en repositorios aprobados.

Configuración de Repositorios Permitidos

1. Variable de Entorno (para clientes MCP)

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "node",
      "args": ["/path/to/server.cjs"],
      "env": {
        "GH_TOKEN": "ghp_YOUR_TOKEN",
        "GH_ALLOWED_REPOS": "owner1/repo1,owner2/repo2,owner3"
      }
    }
  }
}

2. Argumento de Línea de Comandos

node server.cjs --allowed-repos "microsoft/vscode,facebook/react,google"

Cómo funciona:

  • Rutas completas de repos (owner/repo): Solo se permite ese repositorio específico
  • Solo propietario (owner): Se permiten todos los repositorios de ese propietario
  • Mixto: Puedes combinar ambos formatos

Ejemplos:

  • "microsoft/vscode" - Solo el repositorio vscode de Microsoft
  • "kurdin" - Todos los repositorios propiedad de kurdin
  • "kurdin,microsoft/vscode,facebook/react" - Todos los repos de kurdin más repos específicos

Control de Acceso a Herramientas

Deshabilitar Herramientas Específicas

Deshabilita las herramientas que no quieras que estén disponibles estableciendo la variable de entorno GH_DISABLED_TOOLS o usando el argumento de línea de comandos --disabled-tools.

Permitir Solo Herramientas Específicas

Para máxima seguridad, puedes restringir el servidor para que solo permita herramientas específicas estableciendo la variable de entorno GH_ALLOWED_TOOLS o usando el argumento de línea de comandos --allowed-tools.

Importante: Si tanto GH_ALLOWED_TOOLS como GH_DISABLED_TOOLS están establecidos, GH_ALLOWED_TOOLS tiene prioridad.

Ejemplo de Configuración Completa

Usando npx (macOS/Linux):

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "npx",
      "args": ["-y", "github-repos-manager-mcp"],
      "env": {
        "GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
        "GH_DEFAULT_OWNER": "mycompany",
        "GH_DEFAULT_REPO": "main-project",
        "GH_ALLOWED_REPOS": "mycompany,trusted-org/specific-repo",
        "GH_ALLOWED_TOOLS": "list_issues,create_issue,list_prs,get_repo_info"
      }
    }
  }
}

Usando npx (Windows):

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "npx.cmd",
      "args": ["-y", "github-repos-manager-mcp"],
      "env": {
        "GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
        "GH_DEFAULT_OWNER": "mycompany",
        "GH_DEFAULT_REPO": "main-project",
        "GH_ALLOWED_REPOS": "mycompany,trusted-org/specific-repo",
        "GH_ALLOWED_TOOLS": "list_issues,create_issue,list_prs,get_repo_info"
      }
    }
  }
}

Usando instalación local:

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "node",
      "args": ["/full/path/to/your/project/github-repos-manager-mcp/server.cjs"],
      "env": {
        "GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
        "GH_DEFAULT_OWNER": "mycompany",
        "GH_DEFAULT_REPO": "main-project",
        "GH_ALLOWED_REPOS": "mycompany,trusted-org/specific-repo",
        "GH_ALLOWED_TOOLS": "list_issues,create_issue,list_prs,get_repo_info"
      }
    }
  }
}

Equivalentes de Línea de Comandos:

node server.cjs \
  --default-owner mycompany \
  --default-repo main-project \
  --allowed-repos "mycompany,trusted-org/specific-repo" \
  --allowed-tools "list_issues,create_issue,list_prs,get_repo_info"

🛠️ Referencia Completa de Herramientas

Este servidor proporciona 89 herramientas completas para la gestión integral del flujo de trabajo de GitHub:

Gestión Avanzada de Pull Requests

  • create_pull_request: Crear una nueva pull request con título, cuerpo y especificaciones de rama.
    • Args: owner (string, opcional), repo (string, opcional), title (string, requerido), body (string, opcional), head (string, requerido - rama con cambios), base (string, requerido - rama objetivo), draft (boolean, opcional), maintainer_can_modify (boolean, opcional)
  • edit_pull_request: Actualizar el título, cuerpo, estado o rama base de una pull request existente.
    • Args: owner (string, opcional), repo (string, opcional), pull_number (integer, requerido), title (string, opcional), body (string, opcional), state (string, opcional - "open" o "closed"), base (string, opcional)
  • get_pr_details: Obtener información completa sobre una pull request, incluidos estado y detalles de fusión.
    • Args: owner (string, opcional), repo (string, opcional), pull_number (integer, requerido)
  • list_pr_reviews: Listar todas las revisiones de una pull request con su estado y comentarios.
    • Args: owner (string, opcional), repo (string, opcional), pull_number (integer, requerido), per_page (integer, opcional, predeterminado 30)
  • create_pr_review: Enviar una revisión de una pull request con comentarios y estado de aprobación.
    • Args: owner (string, opcional), repo (string, opcional), pull_number (integer, requerido), body (string, opcional), event (string, opcional - "APPROVE", "REQUEST_CHANGES", "COMMENT"), comments (array, opcional)
  • list_pr_files: Listar todos los archivos modificados en una pull request con estadísticas de adiciones/eliminaciones.
    • Args: owner (string, opcional), repo (string, opcional), pull_number (integer, requerido), per_page (integer, opcional, predeterminado 30)

Gestión de Archivos y Contenido

  • create_file: Crear un nuevo archivo en el repositorio con contenido y mensaje de commit.
    • Args: owner (string, opcional), repo (string, opcional), path (string, requerido), content (string, requerido), message (string, requerido), branch (string, opcional), committer (object, opcional)
  • update_file: Actualizar el contenido de un archivo existente con un nuevo commit.
    • Args: owner (string, opcional), repo (string, opcional), path (string, requerido), content (string, requerido), message (string, requerido), sha (string, requerido - SHA actual del archivo), branch (string, opcional)
  • upload_file: Subir un archivo local al repositorio (se admiten archivos binarios).
    • Args: owner (string, opcional), repo (string, opcional), local_path (string, requerido), repo_path (string, requerido), message (string, requerido), branch (string, opcional)
  • delete_file: Eliminar un archivo del repositorio con un mensaje de commit.
    • Args: owner (string, opcional), repo (string, opcional), path (string, requerido), message (string, requerido), sha (string, requerido - SHA actual del archivo), branch (string, opcional)

Gestión de Seguridad y Acceso

  • list_deploy_keys: Listar todas las claves de implementación de un repositorio con sus permisos.
    • Args: owner (string, opcional), repo (string, opcional), per_page (integer, opcional, predeterminado 30)
  • create_deploy_key: Agregar una nueva clave de implementación al repositorio para acceso seguro.
    • Args: owner (string, opcional), repo (string, opcional), title (string, requerido), key (string, requerido - clave SSH pública), read_only (boolean, opcional, predeterminado true)
  • delete_deploy_key: Eliminar una clave de implementación del repositorio.
    • Args: owner (string, opcional), repo (string, opcional), key_id (integer, requerido)
  • list_webhooks: Listar todos los webhooks configurados para el repositorio.
    • Args: owner (string, opcional), repo (string, opcional), per_page (integer, opcional, predeterminado 30)
  • create_webhook: Crear un nuevo webhook para eventos del repositorio.
    • Args: owner (string, opcional), repo (string, opcional), config (object, requerido - url y content_type), events (array, opcional, predeterminado ["push"]), active (boolean, opcional)
  • edit_webhook: Actualizar la configuración del webhook, eventos o estado activo.
    • Args: owner (string, opcional), repo (string, opcional), hook_id (integer, requerido), config (object, opcional), events (array, opcional), active (boolean, opcional)
  • delete_webhook: Eliminar un webhook del repositorio.
    • Args: owner (string, opcional), repo (string, opcional), hook_id (integer, requerido)
  • list_secrets: Listar secretos del repositorio (solo nombres, los valores están cifrados).
    • Args: owner (string, opcional), repo (string, opcional), per_page (integer, opcional, predeterminado 30)
  • update_secret: Crear o actualizar un secreto del repositorio para Actions.
    • Args: owner (string, opcional), repo (string, opcional), secret_name (string, requerido), encrypted_value (string, requerido), key_id (string, requerido)

GitHub Actions y Flujos de Trabajo

Nota: Estas herramientas son marcadores de posición para la futura integración de GitHub Actions.

  • list_workflows: Listar todos los flujos de trabajo de GitHub Actions en el repositorio.
  • list_workflow_runs: Listar ejecuciones de flujos de trabajo con opciones de filtrado.
  • get_workflow_run_details: Obtener información detallada sobre una ejecución de flujo de trabajo.
  • trigger_workflow: Activar manualmente un evento de despacho de flujo de trabajo.
  • download_workflow_artifacts: Descargar artefactos de una ejecución de flujo de trabajo.
  • cancel_workflow_run: Cancelar una ejecución de flujo de trabajo en curso.

Análisis y Perspectivas del Repositorio

  • get_repo_stats: Obtener estadísticas completas del repositorio, incluida la actividad de los contribuyentes.
    • Args: owner (string, opcional), repo (string, opcional)
  • list_repo_topics: Listar todos los temas (etiquetas) asociados con el repositorio.
    • Args: owner (string, opcional), repo (string, opcional)
  • update_repo_topics: Actualizar los temas para mejorar el descubrimiento del repositorio.
    • Args: owner (string, opcional), repo (string, opcional), names (array de strings, requerido)
  • get_repo_languages: Obtener los lenguajes de programación utilizados en el repositorio con recuentos de bytes.
    • Args: owner (string, opcional), repo (string, opcional)
  • list_stargazers: Listar usuarios que han marcado el repositorio con estrella.
    • Args: owner (string, opcional), repo (string, opcional), per_page (integer, opcional, predeterminado 30)
  • list_watchers: Listar usuarios que observan el repositorio para notificaciones.
    • Args: owner (string, opcional), repo (string, opcional), per_page (integer, opcional, predeterminado 30)
  • list_forks: Listar todas las bifurcaciones del repositorio con opciones de ordenamiento.
    • Args: owner (string, opcional), repo (string, opcional), sort (string, opcional - "newest", "oldest", "stargazers"), per_page (integer, opcional)
  • get_repo_traffic: Obtener datos de tráfico del repositorio, incluidas vistas y clones (requiere acceso de administrador).
    • Args: owner (string, opcional), repo (string, opcional)

Búsqueda y Descubrimiento Avanzado

  • search_issues: Buscar problemas y pull requests en GitHub.
    • Args: query (string, requerido), sort (string, opcional - "comments", "reactions", "interactions", "created", "updated"), order (string, opcional - "asc", "desc"), per_page (integer, opcional)
  • search_commits: Buscar commits en todos los repositorios.
    • Args: query (string, requerido), sort (string, opcional - "author-date", "committer-date"), order (string, opcional), per_page (integer, opcional)
  • search_code: Buscar código en los repositorios de GitHub.
    • Args: query (string, requerido), sort (string, opcional - "indexed"), order (string, opcional), per_page (integer, opcional)
  • search_users: Buscar usuarios y organizaciones.
    • Args: query (string, requerido), sort (string, opcional - "followers", "repositories", "joined"), order (string, opcional), per_page (integer, opcional)
  • search_topics: Buscar temas de repositorios.
    • Args: query (string, requerido), per_page (integer, opcional, predeterminado 30)

Gestión de Organizaciones

  • list_org_repos: Listar todos los repositorios en una organización.
    • Args: org (string, requerido), type (string, opcional - "all", "public", "private", "forks", "sources", "member"), sort (string, opcional), per_page (integer, opcional)
  • list_org_members: Listar miembros de una organización.
    • Args: org (string, requerido), filter (string, opcional - "2fa_disabled", "all"), role (string, opcional - "all", "admin", "member"), per_page (integer, opcional)
  • get_org_info: Obtener información detallada sobre una organización.
    • Args: org (string, requerido)
  • list_org_teams: Listar todos los equipos en una organización.
    • Args: org (string, requerido), per_page (integer, opcional, predeterminado 30)
  • get_team_members: Listar miembros de un equipo específico.
    • Args: org (string, requerido), team_slug (string, requerido), role (string, opcional - "member", "maintainer", "all"), per_page (integer, opcional)
  • manage_team_repos: Agregar o eliminar acceso a un repositorio para un equipo.
    • Args: org (string, requerido), team_slug (string, requerido), owner (string, requerido), repo (string, requerido), permission (string, opcional - "pull", "push", "admin"), action (string, requerido - "add" o "remove")

Proyectos y Funciones Avanzadas

Nota: Algunas de estas herramientas son marcadores de posición para futuras mejoras.

  • list_repo_projects: Listar proyectos del repositorio (proyectos clásicos).
  • code_quality_checks: Marcador de posición para análisis futuro de calidad de código.
  • custom_dashboards: Marcador de posición para creación de paneles personalizados.
  • automated_reporting: Marcador de posición para generación automatizada de informes.
  • notification_management: Marcador de posición para configuración de notificaciones.
  • release_management: Marcador de posición para funciones de gestión de versiones.
  • dependency_analysis: Marcador de posición para escaneo de dependencias.

Herramientas de gestión de repositorios

  • set_default_repo: Establecer un propietario y repositorio predeterminados para comandos posteriores y agilizar tu flujo de trabajo.
    • Argumentos: owner (cadena, obligatorio), repo (cadena, obligatorio)
  • list_repos: Listar repositorios de GitHub para el usuario autenticado con filtrado avanzado.
    • Argumentos: per_page (número, opcional, predeterminado 10, máximo 100), visibility (cadena, opcional, enum: "all", "public", "private", predeterminado "all"), sort (cadena, opcional, enum: "created", "updated", "pushed", "full_name", predeterminado "updated")
  • get_repo_info: Obtener información completa sobre un repositorio específico, incluyendo estadísticas y metadatos.
    • Argumentos: owner (cadena, obligatorio si no hay predeterminado), repo (cadena, obligatorio si no hay predeterminado)
  • search_repos: Buscar repositorios en GitHub con opciones avanzadas de ordenación.
    • Argumentos: query (cadena, obligatorio), per_page (número, opcional, predeterminado 10, máximo 100), sort (cadena, opcional, enum: "stars", "forks", "help-wanted-issues", "updated", predeterminado "stars")
  • get_repo_contents: Explorar archivos y directorios en cualquier repositorio con soporte de rama/commit.
    • Argumentos: owner (cadena, obligatorio si no hay predeterminado), repo (cadena, obligatorio si no hay predeterminado), path (cadena, opcional, predeterminado ""), ref (cadena, opcional, p. ej., nombre de rama o SHA de commit)

Herramientas avanzadas de gestión de incidencias

  • list_issues: Listar incidencias con filtrado por estado y paginación completa.
    • Argumentos: owner (cadena, obligatorio si no hay predeterminado), repo (cadena, obligatorio si no hay predeterminado), state (cadena, opcional, enum: "open", "closed", "all", predeterminado "open"), per_page (número, opcional, predeterminado 10, máximo 100)
  • create_issue: Crear incidencias con funciones avanzadas, incluyendo subida de imágenes, etiquetas y asignados.
    • Argumentos: owner (cadena, obligatorio si no hay predeterminado), repo (cadena, obligatorio si no hay predeterminado), title (cadena, obligatorio), body (cadena, opcional), image_path (cadena, opcional, ruta local completa a la imagen), labels (matriz de cadenas, opcional), assignees (matriz de cadenas, opcional)
  • edit_issue: Modificar incidencias existentes, incluyendo título, cuerpo, estado, etiquetas, asignados y subida de imágenes.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), issue_number (entero, obligatorio), title (cadena, opcional), body (cadena, opcional), state (cadena, opcional, enum: "open", "closed"), image_path (cadena, opcional, ruta local completa a la imagen), labels (matriz de cadenas, opcional), assignees (matriz de cadenas, opcional)
  • get_issue_details: Obtener información completa sobre cualquier incidencia específica.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), issue_number (entero, obligatorio)
  • lock_issue: Bloquear incidencias para evitar más comentarios con motivos personalizables.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), issue_number (entero, obligatorio), lock_reason (cadena, opcional, enum: "off-topic", "too heated", "resolved", "spam")
  • unlock_issue: Desbloquear incidencias previamente bloqueadas para reanudar discusiones.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), issue_number (entero, obligatorio)
  • add_assignees_to_issue: Añadir uno o más miembros del equipo a una incidencia.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), issue_number (entero, obligatorio), assignees (matriz de cadenas, obligatorio)
  • remove_assignees_from_issue: Eliminar asignados de incidencias para una mejor gestión de tareas.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), issue_number (entero, obligatorio), assignees (matriz de cadenas, obligatorio)

Herramientas de gestión de comentarios de incidencias

  • list_issue_comments: Listar todos los comentarios de una incidencia con filtrado por fecha.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), issue_number (entero, obligatorio), per_page (entero, opcional, predeterminado 30, máximo 100), since (cadena, opcional, fecha-hora en formato ISO 8601)
  • create_issue_comment: Añadir nuevos comentarios a discusiones de incidencias en curso.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), issue_number (entero, obligatorio), body (cadena, obligatorio)
  • edit_issue_comment: Modificar comentarios existentes para correcciones o actualizaciones.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), comment_id (entero, obligatorio), body (cadena, obligatorio)
  • delete_issue_comment: Eliminar comentarios cuando sea necesario para la gestión de contenido.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), comment_id (entero, obligatorio)

Herramientas de gestión de solicitudes de extracción

  • list_prs: Listar solicitudes de extracción con filtrado por estado y paginación.
    • Argumentos: owner (cadena, obligatorio si no hay predeterminado), repo (cadena, obligatorio si no hay predeterminado), state (cadena, opcional, enum: "open", "closed", "all", predeterminado "open"), per_page (número, opcional, predeterminado 10, máximo 100)

Herramientas de gestión de ramas y commits

  • list_branches: Listar todas las ramas de un repositorio con estado de protección e información de commits.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), protected_only (booleano, opcional, predeterminado false), per_page (número, opcional, predeterminado 30)
  • create_branch: Crear una nueva rama a partir de una rama o commit existente.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), branch_name (cadena, obligatorio), from_branch (cadena, opcional, predeterminado a la rama predeterminada del repositorio)
  • list_commits: Listar commits en un repositorio con información detallada y opciones de filtrado.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), sha (cadena, opcional, rama/etiqueta/commit desde el que listar), per_page (número, opcional, predeterminado 20), since (cadena, opcional, fecha-hora en formato ISO 8601), until (cadena, opcional, fecha-hora en formato ISO 8601), author (cadena, opcional, nombre de usuario o correo de GitHub)
  • get_commit_details: Obtener información detallada sobre un commit específico, incluyendo archivos modificados.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), commit_sha (cadena, obligatorio)
  • compare_commits: Comparar dos commits o ramas para ver diferencias.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), base (cadena, obligatorio, rama base o SHA de commit), head (cadena, obligatorio, rama head o SHA de commit)

Herramientas de usuario y colaboración

  • get_user_info: Obtener información detallada sobre cualquier usuario de GitHub o tu propio perfil.
    • Argumentos: username (cadena, opcional - predeterminado al usuario autenticado)
  • list_repo_collaborators: Listar colaboradores del repositorio con filtrado basado en permisos.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), affiliation (cadena, opcional, enum: "outside", "direct", "all", predeterminado "all"), permission (cadena, opcional, enum: "pull", "triage", "push", "maintain", "admin"), per_page (entero, opcional, predeterminado 30, máximo 100)

Herramientas de gestión de etiquetas e hitos

  • list_repo_labels: Listar todas las etiquetas de un repositorio con sus colores y descripciones.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), per_page (entero, opcional, predeterminado 30, máximo 100)
  • create_label: Crear etiquetas personalizadas con colores y descripciones para una mejor organización de incidencias.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), name (cadena, obligatorio), color (cadena, opcional, color hexadecimal sin #, predeterminado "f29513"), description (cadena, opcional)
  • edit_label: Modificar propiedades de etiquetas existentes, incluyendo nombre, color y descripción.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), current_name (cadena, obligatorio), name (cadena, opcional), color (cadena, opcional, color hexadecimal sin #), description (cadena, opcional)
  • delete_label: Eliminar etiquetas del repositorio cuando ya no sean necesarias.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), name (cadena, obligatorio)
  • list_milestones: Listar hitos del repositorio con filtrado por estado y opciones de ordenación.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), state (cadena, opcional, enum: "open", "closed", "all", predeterminado "open"), sort (cadena, opcional, enum: "due_on", "completeness", predeterminado "due_on"), direction (cadena, opcional, enum: "asc", "desc", predeterminado "asc"), per_page (entero, opcional, predeterminado 30, máximo 100)
  • create_milestone: Crear nuevos hitos con fechas límite para la planificación de proyectos.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), title (cadena, obligatorio), state (cadena, opcional, enum: "open", "closed", predeterminado "open"), description (cadena, opcional), due_on (cadena, opcional, formato de fecha-hora ISO 8601)
  • edit_milestone: Actualizar detalles de hitos, incluyendo título, descripción, estado y fechas límite.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), milestone_number (entero, obligatorio), title (cadena, opcional), state (cadena, opcional, enum: "open", "closed"), description (cadena, opcional), due_on (cadena, opcional, formato de fecha-hora ISO 8601)
  • delete_milestone: Eliminar hitos del repositorio cuando ya no sean necesarios.
    • Argumentos: owner (cadena, opcional), repo (cadena, opcional), milestone_number (entero, obligatorio)

💡 Ejemplos de uso y flujos de trabajo

Una vez configurado, puedes pedirle a tu cliente MCP (p. ej., Claude) que realice potentes operaciones de GitHub:

Descubrimiento y gestión de repositorios

  • "Lista mis repositorios de GitHub, ordénalos por fecha de creación y muestra solo los repos privados."
  • "Establece el repositorio predeterminado en octocat/Spoon-Knife para un flujo de trabajo más sencillo."
  • "Obtén información detallada sobre el repositorio microsoft/vscode."
  • "Muéstrame el contenido del archivo src/main.js en microsoft/vscode en la rama develop."
  • "Muéstrame el contenido del archivo src/main.js en el repositorio predeterminado en la rama develop." (requiere repositorio predeterminado configurado)
  • "Lista todos los colaboradores de my-org/my-repo que tengan permisos de administrador."
  • "Busca repositorios que coincidan con 'tensorflow examples language:python' y ordénalos por estrellas."

Gestión Avanzada de Issues

  • "Crea un issue en my-org/my-repo con el título 'Urgente: Error de UI' y el cuerpo 'El botón de inicio de sesión está roto en móvil.' Asígnalo a user1 y user2 y añade la etiqueta bug."
  • "Crea un issue con el título 'Solicitud de función' y añade la etiqueta enhancement." (requiere repositorio predeterminado configurado)
  • "Sube una captura de pantalla desde /Users/me/screenshots/bug_report.png al issue #42 en microsoft/vscode."
  • "Sube una captura de pantalla desde /Users/me/screenshots/bug_report.png al issue #42 en el repositorio predeterminado." (requiere repositorio predeterminado configurado)
  • "Edita el issue #15: cambia el título a 'Solicitud de función: Modo oscuro', añade la etiqueta enhancement y ciérralo."
  • "Bloquea el issue #23 con el motivo 'resuelto' para evitar más discusión."
  • "Obtén los detalles completos del issue #7, incluidos todos los metadatos y el estado actual."
  • "Elimina old-assignee del issue #12 y añade new-assignee en su lugar."

Gestión de Discusiones de Issues

  • "Lista todos los comentarios en el issue #7 de la última semana."
  • "Añade un comentario '¡Esto se ve genial! Listo para fusionar.' al issue #15."
  • "Edita el comentario con ID 123456 para que diga 'Actualizado: Esto necesita más pruebas antes de fusionar.'"
  • "Elimina el comentario con ID 789012 del issue #20."

Gestión de Etiquetas e Hitos

  • "Lista todas las etiquetas en my-org/my-repo para ver el sistema de organización actual."
  • "Lista todas las etiquetas en el repositorio predeterminado para ver el sistema de organización actual." (requiere repositorio predeterminado configurado)
  • "Crea una nueva etiqueta llamada 'urgente' con color rojo (#ff0000) y descripción 'Requiere atención inmediata'."
  • "Edita la etiqueta 'bug' para cambiar su color a naranja (#FFA500) y actualiza la descripción."
  • "Elimina la etiqueta obsoleta 'legacy' del repositorio."
  • "Lista todos los hitos abiertos en my-org/project-x ordenados por fecha de vencimiento."
  • "Crea un hito 'Lanzamiento v2.0' con fecha de vencimiento '2025-12-31T23:59:59Z' y descripción 'Lanzamiento de versión principal'."
  • "Edita el hito #3 para cambiar el título a 'Objetivos del segundo trimestre' y extiende la fecha de vencimiento."
  • "Elimina el hito #5 ya que ya no es relevante para el proyecto."

Pull Requests y Colaboración

  • "Lista todos los pull requests abiertos para microsoft/vscode."
  • "Lista todos los pull requests abiertos para el repositorio predeterminado." (requiere repositorio predeterminado configurado)
  • "Muéstrame los pull requests cerrados del último mes para my-org/project-x."
  • "Obtén la información de mi perfil de usuario de GitHub."
  • "Obtén los detalles del perfil de usuario de github_username."

Gestión de Ramas y Commits

  • "Lista todas las ramas en my-org/my-repo y muestra su estado de protección."
  • "Lista todas las ramas en el repositorio predeterminado y muestra su estado de protección." (requiere repositorio predeterminado configurado)
  • "Muestra solo las ramas protegidas en my-org/secure-repo."
  • "Crea una nueva rama de función llamada feature/dark-mode a partir de la rama develop."
  • "Lista los últimos 10 commits en la rama main."
  • "Muéstrame todos los commits de john-doe de la última semana."
  • "Obtén información detallada sobre el commit abc123def, incluidos todos los cambios de archivos."
  • "Compara la rama main con la rama feature/new-ui para ver qué es diferente."
  • "Muéstrame el historial de commits entre las etiquetas v1.0.0 y v2.0.0."

Ejemplos de Automatización de Flujos de Trabajo

  • "Establece my-org/main-project como predeterminado, luego lista todos los issues abiertos asignados a mí."
  • "Crea un issue de informe de error con el título 'Error de inicio de sesión', sube la captura de pantalla del error desde /path/to/error.png, asígnalo a dev-team y añade las etiquetas bug y high-priority."
  • "Para el issue #50: añade al asignado reviewer1, bloquéalo con el motivo 'resuelto' y añade un comentario final 'Issue resuelto en el PR #51'."

🔧 Solución de Problemas

Problemas de Autenticación

  1. Problemas con el Token:

    • Verifica que el valor de GH_TOKEN en la configuración de tu cliente MCP sea correcto y no tenga errores tipográficos
    • Asegúrate de que el token no haya expirado o sido revocado
    • Verifica la validez del token usando curl:
      export TEMP_TOKEN="ghp_YOUR_TOKEN_TO_TEST"
      curl -H "Authorization: token $TEMP_TOKEN" https://api.github.com/user
      unset TEMP_TOKEN
      
      Esto debería devolver la información de tu usuario de GitHub.
  2. Problemas de Configuración:

    • Verifica que GH_TOKEN esté colocado correctamente dentro del objeto env en la configuración del servidor de tu cliente MCP
    • Asegúrate de que la ruta a server.cjs sea absoluta y correcta
    • Comprueba que la versión de Node.js sea 18 o superior: node --version
    • Repositorio Predeterminado: Si configuraste las variables de entorno GH_DEFAULT_OWNER y GH_DEFAULT_REPO, verifica que sean correctas y que el repositorio exista
  3. Problemas de Permisos:

    • Asegúrate de que tu token tenga los alcances requeridos:
      • repo o public_repo (para acceso al repositorio)
      • user (para información del usuario)
      • read:org (para acceso a la organización, si es necesario)
    • Acceso al Repositorio Predeterminado: Si usas un repositorio predeterminado, asegúrate de que tu token tenga acceso a ese repositorio específico

Problemas de Configuración del Repositorio Predeterminado

  • Variables de Entorno que No Funcionan: Verifica la ortografía de GH_DEFAULT_OWNER y GH_DEFAULT_REPO en la configuración de tu cliente MCP
  • Argumentos de Línea de Comandos: Asegúrate de usar la sintaxis correcta al usar las banderas --default-owner y --default-repo
  • Problemas con Llamadas de Herramientas: Usa nombres de repositorio exactos: formato owner/repo en la herramienta set_default_repo
  • Comportamiento de Anulación: Recuerda que las llamadas de herramientas en tiempo de ejecución pueden anular las variables de entorno, y los argumentos de línea de comandos anulan ambos

Rendimiento y Límites de Tasa

  • Límites de Tasa de la API de GitHub: 5,000 solicitudes/hora para usuarios autenticados
  • Si alcanzas los límites, espera a que se restablezca la ventana o usa un token diferente
  • El servidor incluye manejo integrado de errores de límites de tasa

Problemas Comunes de Configuración

  • Problemas de Ruta: Verifica que la ruta absoluta en tu configuración de Claude Desktop sea correcta
  • Versión de Node.js: Asegúrate de usar Node.js 18 o superior
  • Permisos de Archivos: Asegúrate de que server.cjs sea ejecutable: chmod +x server.cjs

Solución de Problemas de Subida de Imágenes

  • Asegúrate de que los archivos de imagen existan en la ruta local especificada
  • Formatos compatibles: PNG, JPG, JPEG, GIF, WebP
  • Verifica los permisos de archivos y la accesibilidad
  • Verifica que el archivo no esté corrupto o sea demasiado grande (GitHub tiene límites de tamaño)

🚦 Límites de Tasa de la API y Rendimiento

  • Límites de Tasa Estándar: La API de GitHub permite 5,000 solicitudes por hora para usuarios autenticados
  • Manejo Integrado: El servidor incluye manejo integral de errores para respuestas de límites de tasa
  • Optimización del Rendimiento: Las solicitudes HTTP directas aseguran tiempos de respuesta más rápidos en comparación con las herramientas CLI
  • Recomendaciones de Caché: Considera implementar estrategias de caché para datos de acceso frecuente

🔒 Mejores Prácticas de Seguridad

  • Seguridad del Token: Nunca comprometas tu GH_TOKEN al control de versiones ni lo compartas públicamente
  • Permisos Mínimos: Usa tokens con solo los alcances mínimos requeridos para tu caso de uso
  • Variables de Entorno: Siempre proporciona tokens a través del bloque env en la configuración de tu cliente MCP
  • Rotación de Tokens: Rota regularmente tus tokens de GitHub para mayor seguridad
  • Almacenamiento Seguro: Almacena tokens de forma segura usando la gestión de credenciales de tu sistema

🔄 Desarrollo y Contribución

Configuración de Desarrollo Local

# Clone and setup
mkdir github-repos-manager-mcp
cd github-repos-manager-mcp
# Add the server files
npm install
chmod +x server.cjs

# For development testing with nodemon
npm run dev

Pruebas con Clientes MCP

El enfoque recomendado es configurar tu cliente MCP (por ejemplo, Claude Desktop) para que apunte a tu versión de desarrollo con la configuración adecuada de GH_TOKEN. Los cambios en server.cjs requieren reiniciar la conexión del servidor.

Pruebas Directas con Scripts

# Temporarily set token for quick verification
export GH_TOKEN="ghp_YOUR_DEVELOPMENT_TOKEN"
node server.cjs
unset GH_TOKEN  # Always clean up after testing

📜 Licencia

Licencia MIT - Siéntete libre de usar, modificar y distribuir este servidor MCP.

MseeP.ai Security Assessment Badge