/ Directorio / Playground / GitHub
● Oficial github 🔑 Requiere tu clave

GitHub

por github · github/github-mcp-server

Dale a Claude acceso completo a GitHub — issues, PRs, búsqueda de código, edición de archivos — sin salir nunca de tu ventana de chat.

Servidor MCP oficial de GitHub. Todo lo que puedes hacer a través de la API REST o GraphQL de GitHub, tu agente IA también puede hacerlo: clasificar issues, revisar PRs, buscar código en una organización, redactar commits. El modo de solo lectura está soportado y es recomendado para primeras ejecuciones.

Por qué usarlo

Características clave

Demo en vivo

Cómo se ve en la práctica

github.replay ▶ listo
0/0

Instalar

Elige tu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ]
    }
  }
}

Abre Claude Desktop → Settings → Developer → Edit Config. Reinicia después de guardar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ]
    }
  }
}

Cursor usa el mismo esquema mcpServers que Claude Desktop. La configuración del proyecto prevalece sobre la global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ]
    }
  }
}

Haz clic en el icono MCP Servers de la barra lateral de Cline y luego en "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ]
    }
  }
}

Mismo formato que Claude Desktop. Reinicia Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "github",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ]
    }
  ]
}

Continue usa un array de objetos de servidor en lugar de un mapa.

~/.config/zed/settings.json
{
  "context_servers": {
    "github": {
      "command": {
        "path": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "-e",
          "GITHUB_PERSONAL_ACCESS_TOKEN",
          "ghcr.io/github/github-mcp-server"
        ]
      }
    }
  }
}

Añádelo a context_servers. Zed recarga en caliente al guardar.

claude mcp add github -- docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server

Un solo comando. Verifica con claude mcp list. Quita con claude mcp remove.

Casos de uso

Usos del mundo real: GitHub

Cómo encontrar un buen primer issue y entregar una corrección en una hora

👤 Contribuidores de código abierto buscando una primera PR sin fricciones ⏱ ~60 min beginner

Cuándo usarlo: Quieres contribuir a un proyecto pero no tienes idea por dónde empezar. El CONTRIBUTING.md del mantenedor es demasiado genérico para ser útil.

Requisitos previos
  • GitHub PAT con repo:read e issues:read — github.com/settings/tokens — de grano fino, limitado al repositorio al que quieres contribuir
  • MCP del sistema de archivos instalado también — permite que Claude clone y lea el repositorio localmente para escribir realmente la corrección
Flujo
  1. Pide a Claude que encuentre issues marcados como good first issue sin comentarios, ordenados por simplicidad
    Encuentra issues abiertos en modelcontextprotocol/servers etiquetados como 'good first issue' sin asignado y cero comentarios. Elige el que parezca más fácil de arreglar y explica por qué.✓ Copiado
    → Claude devuelve 3-5 candidatos con una evaluación de dificultad de una línea para cada uno
  2. Pide a Claude que obtenga el cuerpo del issue y cualquier código vinculado
    Obtén el cuerpo completo del issue para #<num> y lee el archivo que menciona. Dime el cambio real que debe ocurrir.✓ Copiado
    → Intención de diff concreto, no solo una reformulación del issue
  3. Usa MCP del sistema de archivos para hacer la edición, luego MCP de GitHub para redactar la PR
    Aplica el cambio, escribe una descripción de PR que agradezca al mantenedor y explique la corrección en 3 oraciones.✓ Copiado
    → PR se abre con enlace devuelto

Resultado: Una PR abierta que respete el estilo del proyecto, haga referencia al issue y sea lo suficientemente pequeña para fusionar el mismo día.

Errores comunes
  • Claude elige un 'good first issue' que en realidad ha estado pudriéndose durante 2 años porque nadie podría estar de acuerdo en la corrección — Agrega sin comentarios nuevos de mantenedores en los últimos 90 días como filtro
  • El cuerpo de la PR es lenguaje genérico de IA — Dile a Claude que imite el tono de las últimas 3 PRs fusionadas del proyecto primero
Combinar con: filesystem · git

Genera un resumen semanal de PRs para tu equipo

👤 Gestores de ingeniería, líderes técnicos ⏱ ~10 min intermediate

Cuándo usarlo: Cada lunes por la mañana cuando prefieres no hacer clic en 40 notificaciones de PR.

Requisitos previos
  • PAT limitado a los repositorios de tu equipo con pull_requests:read — Usa un token de grano fino, nunca un token clásico de 'todos los repositorios'
Flujo
  1. Pide las PRs fusionadas de la semana pasada con sus tamaños de diff
    Lista todas las PRs fusionadas en nuestro org/repo entre el lunes pasado y hoy. Incluye autor, líneas +/-, y resumen de una línea.✓ Copiado
    → Tabla de 10-30 filas con deltas concretos
  2. Agrupa por autor y tema
    Agrupa estos por área (auth, payments, frontend, infra...) e identifica cualquiera que parezca un revert o hotfix.✓ Copiado
    → Secciones con agrupamiento temático
  3. Redacta un resumen listo para Slack
    Ahora escribe un post de Slack resumiendo la semana — celebra los grandes logros, destaca los cambios riesgosos, nombra a las personas que los entregaron.✓ Copiado
    → Markdown con @mentions, emoji, listo para pegar

Resultado: Un resumen de 5 puntos que realmente quieras leer el lunes por la mañana.

Errores comunes
  • Alcanza el límite de velocidad si tu organización tiene muchos repositorios — Filtra un repositorio a la vez, o actualiza a un token de aplicación de GitHub (15k req/h vs 5k)
Combinar con: linear · sentry

Encuentra todos los lugares donde tu base de código usa una API deprecada

👤 Ingenieros backend planificando una migración ⏱ ~30 min intermediate

Cuándo usarlo: Estás a punto de deprecar una clase/función interna y necesitas saber quién la está usando antes de anunciarlo.

Requisitos previos
  • PAT con repo:read para todos los repositorios en tu organización — Usa una aplicación de GitHub para acceso en toda la organización — más fácil que hacer malabarismos con PATs por repositorio
Flujo
  1. Usa búsqueda de código en toda la organización
    Busca en toda nuestra organización acme-corp cualquier uso de la clase LegacyAuth. Devuelve rutas de archivos agrupadas por repositorio.✓ Copiado
    → Lista de repositorios y archivos, con números de línea
  2. Para cada coincidencia, obtén contexto
    Para cada coincidencia, obtén 5 líneas alrededor del uso y dime si es una llamada real o solo un comentario/importación.✓ Copiado
    → Lista filtrada distinguiendo llamadas reales del ruido
  3. Genera un issue de seguimiento de migración
    Crea un issue de seguimiento en acme-corp/platform titulado 'Migra de LegacyAuth' con una lista de verificación de cada sitio de llamada real y el equipo que posee cada repositorio.✓ Copiado
    → Issue creado con lista de verificación completa

Resultado: Un único issue de seguimiento fuente de verdad que tu equipo de plataforma puede usar para impulsar la migración.

Errores comunes
  • La búsqueda de código tiene un límite de 1000 resultados por consulta — Si lo alcanzas, estrecha por lenguaje o ruta: LegacyAuth language:python o divide consultas por prefijo de repositorio
  • GitHub indexa solo la rama por defecto — No encontrará uso en ramas de características — complementa con un grep local en repositorios clonados
Combinar con: filesystem

Obtén una segunda opinión sobre una PR complicada antes de aprobar

👤 Revisores de código enfrentando una PR fuera de su área de experiencia ⏱ ~15 min intermediate

Cuándo usarlo: Eres el revisor asignado en una PR que toca código que no conoces bien, y no quieres simplemente aprobarlo sin pensar.

Flujo
  1. Obtén el diff y la descripción de la PR
    Obtén PR #<num> en org/repo — dame el diff y la descripción. ¿Qué está afirmando el autor que hace?✓ Copiado
    → Reformulación clara de la intención
  2. Pide una lectura arquitectónica
    Ahora mira los archivos existentes que esta PR toca. ¿El cambio se ajusta a los patrones existentes, o introduce uno nuevo? Si es nuevo, ¿está justificado el nuevo patrón?✓ Copiado
    → Llamadas específicas, no alabanzas genéricas
  3. Investiga riesgos
    ¿Dónde en este diff es algo más probable que se rompa en producción dentro de 6 meses? Sé específico — señala la línea.✓ Copiado
    → Preocupaciones concretas a nivel de línea, no 'agrega más pruebas'

Resultado: Tres comentarios específicos y accionables que puedas publicar en la PR — haciendo tu revisión significativamente mejor que una mirada rápida.

Errores comunes
  • Claude se convierte en una máquina de sí y elogia todo — Pregunta explícitamente '¿en qué se resistiría un ingeniero senior en esta empresa?' — el encuadre adversarial ayuda
Combinar con: filesystem

Identifica y desbloquea PRs pudriendo en revisión

👤 Líderes de ingeniería, mantenedores de repositorios ⏱ ~20 min beginner

Cuándo usarlo: Una vez por sprint, cuando sospechas que las PRs se están envejeciendo silenciosamente sin que nadie lo note.

Flujo
  1. Lista PRs abiertas durante más de 5 días sin actividad reciente
    Encuentra PRs abiertas en org/repo actualizadas hace más de 5 días. Para cada una, dime el autor, el revisor asignado, y la razón indicada del retraso (mira el último comentario).✓ Copiado
    → Tabla con diagnóstico por PR
  2. Categoriza el retraso
    Agrupa estos en: 'esperando revisor', 'esperando autor', 'esperando CI', 'esperando decisión'. Sé específico sobre cuál.✓ Copiado
    → 4 categorías con PRs concretas en cada una
  3. Redacta recordatorios
    Para el cubo 'esperando revisor', redacta un comentario de recordatorio amable para cada uno. Tono diferente si el revisor es igual vs superior al autor.✓ Copiado
    → Texto de comentario por PR listo para pegar

Resultado: Una lista corta de PRs que puedas desbloquear en 15 minutos, con acciones específicas por PR.

Errores comunes
  • Publicar comentarios automáticamente se siente como spam — Haz que Claude redacte los comentarios pero publícalos tú mismo — mantiene al humano en el ciclo
Combinar con: linear

Combinaciones

Combínalo con otros MCPs para multiplicar por 10

github + sentry

Sentry expone un nuevo error → GitHub MCP encuentra el commit que lo introdujo a través de tags de versión → redactas una PR de hotfix, todo en un chat

Hay un nuevo error en Sentry — issue WEB-3a91. Encuentra qué commit en main lo introdujo (haz referencia cruzada con el tag de versión), luego redacta la PR de revert más pequeña posible.✓ Copiado
github + linear

Auto-crear issues de Linear a partir de reportes de bugs de GitHub con etiquetas y prioridad adecuadas

Para cada issue abierto en nuestro repositorio octocat/api esta semana con etiqueta 'bug', crea un issue de Linear coincidente en el equipo BACKEND con prioridad Media.✓ Copiado
github + filesystem + git

Contribución de extremo a extremo: clona el repositorio localmente, realiza cambios, empuja la rama, abre PR — sin salir del chat

Clona acme/widgets localmente, arregla el error tipográfico en src/utils/format.ts:42, empuja a una nueva rama, abre una PR.✓ Copiado

Herramientas

Lo que expone este MCP

HerramientaEntradasCuándo llamarCoste
search_issues owner: str, repo: str, labels?: str[], state?: str Quieres encontrar issues por etiqueta, estado, asignado o actividad 1 llamada API de GitHub
get_issue owner: str, repo: str, issue_number: int Después de search_issues, cuando necesites la conversación completa 1 llamada API
create_issue owner, repo, title, body, labels?, assignees? Presenta un nuevo issue — asegúrate de que el usuario realmente quiera esto 1 llamada API (escritura)
list_pull_requests owner, repo, state?, sort?, base?, head? Encuentra PRs por estado/rama/autor 1 llamada API
get_pull_request owner, repo, pull_number Lee el diff y metadatos de una PR específica 1 llamada API
merge_pull_request owner, repo, pull_number, merge_method? Solo cuando se indica explícitamente — usa una discusión de ejecución en seco primero 1 llamada API (escritura, irreversible)
search_code q: str, sort? Encuentra uso de símbolos en una organización 1 llamada API (límite de velocidad más bajo: 30/min)
get_file_contents owner, repo, path, ref? Lee un solo archivo de un repositorio sin clonar 1 llamada API
create_or_update_file owner, repo, path, message, content, sha? Edición única de archivo; para cambios de múltiples archivos usa una rama + PR 1 llamada API (escritura)
list_commits owner, repo, sha?, path? Audita el historial de un archivo o rama 1 llamada API

Coste y límites

Lo que cuesta ejecutarlo

Cuota de API
PAT personal: 5000 solicitudes/hora. Aplicación de GitHub: 15000/h. Búsqueda de código: 30/min en personal, separado.
Tokens por llamada
200–500 tokens para metadatos de issue/PR; puede crecer hasta 5k+ para búsquedas de archivos grandes
Monetario
Gratis con cualquier cuenta de GitHub. GitHub Enterprise tiene límites más altos.
Consejo
Si estás alcanzando límites, cambia a una aplicación de GitHub — más fácil que hacer malabarismos con múltiples PATs y proporciona 3× la velocidad. Almacena en caché los resultados de list_issues al iterar.

Seguridad

Permisos, secretos, alcance

Ámbitos mínimos: repo:read issues:read
Almacenamiento de credenciales: PAT de grano fino en variable de entorno (ej. GITHUB_PERSONAL_ACCESS_TOKEN). Nunca hagas commit a dotfiles.
Salida de datos: Todas las llamadas API solo a api.github.com. Sin telemetría de terceros.
No conceder nunca: admin:org delete_repo admin:enterprise

Resolución de problemas

Errores comunes y soluciones

401 Unauthorized

Tu PAT expiró o no tiene acceso a ese repositorio. Vuelve a crear en github.com/settings/tokens con los ámbitos correctos.

Verificar: curl -H "Authorization: Bearer $GITHUB_PERSONAL_ACCESS_TOKEN" https://api.github.com/user
403 rate limit exceeded

Has alcanzado 5000 req/h en un PAT personal. Espera hasta la ventana de reinicio, o migra a un token de aplicación de GitHub (15k/h).

Verificar: curl -H "Authorization: Bearer $TOKEN" https://api.github.com/rate_limit
404 Not Found on a private repo

El PAT no incluye ese repositorio en su lista de repositorios permitidos. Edita el PAT de grano fino y agrega el repositorio.

Docker: 'unable to find image'

Obtén la imagen primero: docker pull ghcr.io/github/github-mcp-server. Verifica que estés autenticado en ghcr.io si es privado.

Verificar: docker images | grep github-mcp-server

Alternativas

GitHub vs otros

AlternativaCuándo usarlaContrapartida
GitLab MCPUsas GitLab.com o GitLab auto-hospedado en lugar de GitHubSuperficie de características más pequeña, mantenido por la comunidad
Gitea MCPInstalación de Gitea auto-hospedadaHerramientas limitadas vs el MCP oficial de GitHub
git MCPSolo necesitas operaciones locales de git (status, log, diff, blame) sin ningún remoteSin issues, PRs, u operaciones remotas — funciona en cualquier repositorio local sin autenticación

Más

Recursos

📖 Lee el README oficial en GitHub

🐙 Ver issues abiertas

🔍 Ver todos los 400+ servidores MCP y Skills