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 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!
- Node.js (versión 18 o superior) - ¡Eso es todo!
- 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:readouser: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):
- Argumentos de línea de comandos (
--default-owner,--default-repo) - Variables de entorno (
GH_DEFAULT_OWNER,GH_DEFAULT_REPO) - Llamadas a herramientas en tiempo de ejecución (
set_default_repo)
Beneficios del Repositorio Predeterminado:
- Elimina la necesidad de especificar
owneryrepoen 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)
- Args:
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)
- Args:
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)
- Args:
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)
- Args:
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)
- Args:
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)
- Args:
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)
- Args:
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)
- Args:
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)
- Args:
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)
- Args:
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)
- Args:
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)
- Args:
delete_deploy_key: Eliminar una clave de implementación del repositorio.- Args:
owner(string, opcional),repo(string, opcional),key_id(integer, requerido)
- Args:
list_webhooks: Listar todos los webhooks configurados para el repositorio.- Args:
owner(string, opcional),repo(string, opcional),per_page(integer, opcional, predeterminado 30)
- Args:
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)
- Args:
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)
- Args:
delete_webhook: Eliminar un webhook del repositorio.- Args:
owner(string, opcional),repo(string, opcional),hook_id(integer, requerido)
- Args:
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)
- Args:
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)
- Args:
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)
- Args:
list_repo_topics: Listar todos los temas (etiquetas) asociados con el repositorio.- Args:
owner(string, opcional),repo(string, opcional)
- Args:
update_repo_topics: Actualizar los temas para mejorar el descubrimiento del repositorio.- Args:
owner(string, opcional),repo(string, opcional),names(array de strings, requerido)
- Args:
get_repo_languages: Obtener los lenguajes de programación utilizados en el repositorio con recuentos de bytes.- Args:
owner(string, opcional),repo(string, opcional)
- Args:
list_stargazers: Listar usuarios que han marcado el repositorio con estrella.- Args:
owner(string, opcional),repo(string, opcional),per_page(integer, opcional, predeterminado 30)
- Args:
list_watchers: Listar usuarios que observan el repositorio para notificaciones.- Args:
owner(string, opcional),repo(string, opcional),per_page(integer, opcional, predeterminado 30)
- Args:
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)
- Args:
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)
- Args:
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)
- Args:
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)
- Args:
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)
- Args:
search_users: Buscar usuarios y organizaciones.- Args:
query(string, requerido),sort(string, opcional - "followers", "repositories", "joined"),order(string, opcional),per_page(integer, opcional)
- Args:
search_topics: Buscar temas de repositorios.- Args:
query(string, requerido),per_page(integer, opcional, predeterminado 30)
- Args:
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)
- Args:
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)
- Args:
get_org_info: Obtener información detallada sobre una organización.- Args:
org(string, requerido)
- Args:
list_org_teams: Listar todos los equipos en una organización.- Args:
org(string, requerido),per_page(integer, opcional, predeterminado 30)
- Args:
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)
- Args:
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")
- Args:
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)
- Argumentos:
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")
- Argumentos:
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)
- Argumentos:
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")
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
get_issue_details: Obtener información completa sobre cualquier incidencia específica.- Argumentos:
owner(cadena, opcional),repo(cadena, opcional),issue_number(entero, obligatorio)
- Argumentos:
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")
- Argumentos:
unlock_issue: Desbloquear incidencias previamente bloqueadas para reanudar discusiones.- Argumentos:
owner(cadena, opcional),repo(cadena, opcional),issue_number(entero, obligatorio)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
edit_issue_comment: Modificar comentarios existentes para correcciones o actualizaciones.- Argumentos:
owner(cadena, opcional),repo(cadena, opcional),comment_id(entero, obligatorio),body(cadena, obligatorio)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
delete_label: Eliminar etiquetas del repositorio cuando ya no sean necesarias.- Argumentos:
owner(cadena, opcional),repo(cadena, opcional),name(cadena, obligatorio)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
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)
- Argumentos:
delete_milestone: Eliminar hitos del repositorio cuando ya no sean necesarios.- Argumentos:
owner(cadena, opcional),repo(cadena, opcional),milestone_number(entero, obligatorio)
- Argumentos:
💡 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-Knifepara 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.jsen microsoft/vscode en la ramadevelop." - "Muéstrame el contenido del archivo
src/main.jsen el repositorio predeterminado en la ramadevelop." (requiere repositorio predeterminado configurado) - "Lista todos los colaboradores de
my-org/my-repoque 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-repocon 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 auser1yuser2y añade la etiquetabug." - "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.pngal issue #42 en microsoft/vscode." - "Sube una captura de pantalla desde
/Users/me/screenshots/bug_report.pngal 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
enhancementy 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-assigneedel issue #12 y añadenew-assigneeen 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-repopara 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-xordenados 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-repoy 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-modea partir de la ramadevelop." - "Lista los últimos 10 commits en la rama
main." - "Muéstrame todos los commits de
john-doede la última semana." - "Obtén información detallada sobre el commit
abc123def, incluidos todos los cambios de archivos." - "Compara la rama
maincon la ramafeature/new-uipara ver qué es diferente." - "Muéstrame el historial de commits entre las etiquetas
v1.0.0yv2.0.0."
Ejemplos de Automatización de Flujos de Trabajo
- "Establece
my-org/main-projectcomo 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 adev-teamy añade las etiquetasbugyhigh-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
-
Problemas con el Token:
- Verifica que el valor de
GH_TOKENen 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:
Esto debería devolver la información de tu usuario de GitHub.export TEMP_TOKEN="ghp_YOUR_TOKEN_TO_TEST" curl -H "Authorization: token $TEMP_TOKEN" https://api.github.com/user unset TEMP_TOKEN
- Verifica que el valor de
-
Problemas de Configuración:
- Verifica que
GH_TOKENesté colocado correctamente dentro del objetoenven la configuración del servidor de tu cliente MCP - Asegúrate de que la ruta a
server.cjssea 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_OWNERyGH_DEFAULT_REPO, verifica que sean correctas y que el repositorio exista
- Verifica que
-
Problemas de Permisos:
- Asegúrate de que tu token tenga los alcances requeridos:
repoopublic_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
- Asegúrate de que tu token tenga los alcances requeridos:
Problemas de Configuración del Repositorio Predeterminado
- Variables de Entorno que No Funcionan: Verifica la ortografía de
GH_DEFAULT_OWNERyGH_DEFAULT_REPOen 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-ownery--default-repo - Problemas con Llamadas de Herramientas: Usa nombres de repositorio exactos: formato
owner/repoen la herramientaset_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.cjssea 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_TOKENal 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
enven 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.
