Sábado, 12 de septiembre de 2026  ·  LATAM / Español
Intermedio 35 min en total 6 pasos

Cómo conectar Claude con GitHub usando MCP

Integra Claude con tus repos de GitHub vía MCP para leer código, crear issues y revisar PRs sin salir del chat.

Imagen de portada editorial · Cómo conectar Claude con GitHub usando MCP · Educación · Claude Builders
Requisitos
  • Claude Desktop instalado (macOS, Windows o Linux)
  • Node.js 18+ y npm instalados
  • Cuenta de GitHub con un repositorio de prueba
  • Permisos para generar un Personal Access Token (PAT)
Lo que vas a aprender
  • Crear un Personal Access Token de GitHub con los scopes correctos
  • Configurar el servidor MCP oficial de GitHub en Claude Desktop
  • Verificar la conexión y ejecutar acciones sobre tus repos
  • Automatizar tareas comunes: crear issues, listar PRs y leer archivos
  • Conectar Claude con GitHub también desde la API con la librería de Anthropic
PASO 1 · ~6 min

Generar un Personal Access Token en GitHub

El puente entre Claude y GitHub necesita autenticarse con un token. Entra en GitHub > Settings > Developer settings > Personal access tokens > Fine-grained tokens y pulsa 'Generate new token'. Ponle un nombre descriptivo como 'claude-mcp', define una expiración (90 días es razonable) y selecciona el repositorio o repositorios sobre los que quieres que Claude actúe. En 'Repository permissions' concede como mínimo: Contents (Read/Write), Issues (Read/Write), Pull requests (Read/Write) y Metadata (Read). Evita dar acceso a toda la organización si solo pruebas un repo. Genera el token y cópialo inmediatamente: GitHub solo lo muestra una vez. Guárdalo en tu gestor de contraseñas; lo usarás en el paso 3. Si estás en España o LATAM y tu cuenta tiene 2FA activado (deberías), el token sigue funcionando igual sin pedirte el segundo factor en cada llamada.

ConsejoUsa fine-grained tokens en lugar de los clásicos: limitan el acceso a repos concretos y reducen el riesgo si el token se filtra.
Error comúnNo pegues nunca el token en el chat de Claude ni lo subas a un repo. Va solo en el archivo de configuración local.
PASO 2 · ~4 min

Comprobar Node.js y el runner de MCP

El servidor MCP de GitHub se ejecuta con Node mediante npx, así que necesitas Node.js 18 o superior. Abre una terminal y verifica tu versión. Si no tienes Node, instálalo desde nodejs.org o con un gestor como nvm (recomendado para tener varias versiones). npx viene incluido con npm, no requiere instalación aparte. Este comando descargará el paquete del servidor la primera vez que Claude lo invoque, por lo que conviene tener buena conexión. No necesitas instalar nada globalmente: la configuración del paso 3 le dice a Claude que lance el servidor bajo demanda. Si trabajas detrás de un proxy corporativo, asegúrate de que npm puede alcanzar el registro público, porque de lo contrario la descarga fallará silenciosamente y Claude mostrará el servidor como desconectado.

bash
node --version
npx --version
ConsejoSi usas nvm, ejecuta 'nvm use 20' antes de abrir Claude Desktop para fijar la versión que heredará el proceso.
Error comúnVersiones de Node inferiores a la 18 provocan errores de módulos ESM que no siempre son claros en los logs.
PASO 3 · ~7 min

Editar el archivo de configuración de Claude Desktop

Claude Desktop lee los servidores MCP desde un archivo JSON. En macOS está en ~/Library/Application Support/Claude/claude_desktop_config.json y en Windows en %APPDATA%\Claude\claude_desktop_config.json. Ábrelo con tu editor (si no existe, créalo) y añade el bloque mcpServers como en el ejemplo. Sustituye TU_TOKEN_AQUI por el PAT del paso 1. El campo command indica cómo arrancar el servidor y env inyecta el token como variable de entorno, que es la forma segura de pasarlo. Guarda el archivo respetando el JSON válido: una coma de más rompe todo el arranque. Este mismo patrón sirve para añadir otros servidores MCP más adelante (Slack, Postgres, filesystem), simplemente agregando más claves dentro de mcpServers.

json
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "TU_TOKEN_AQUI"
      }
    }
  }
}
ConsejoValida el JSON en jsonlint.com antes de guardar; ahorra minutos de depuración a ciegas.
Error comúnSi ya tenías otros servidores en mcpServers, no dupliques la clave: añade 'github' junto a los existentes dentro del mismo objeto.
PASO 4 · ~5 min

Reiniciar Claude y verificar la conexión

Los cambios en el config solo se aplican al reiniciar. Cierra Claude Desktop por completo (en macOS, Cmd+Q, no basta con cerrar la ventana) y vuelve a abrirlo. Al cargar, verás en la barra inferior del cuadro de texto un icono de herramientas o un indicador de conexiones; pulsa sobre él y confirma que 'github' aparece como conectado. La primera vez tardará unos segundos porque npx descarga el paquete. Si aparece en rojo o no aparece, revisa los logs: en macOS están en ~/Library/Logs/Claude/mcp*.log. Un error típico es 'command not found: npx', que significa que Claude no encuentra Node en su PATH; en ese caso pon la ruta absoluta a npx en el campo command.

bash
# macOS: ver logs de MCP en tiempo real
tail -f ~/Library/Logs/Claude/mcp-server-github.log
ConsejoEn macOS, si Claude no hereda tu PATH, ejecuta 'which npx' y usa esa ruta absoluta como command en el JSON.
Error comúnCerrar solo la ventana no reinicia el proceso. En Windows ciérralo desde la bandeja del sistema.
PASO 5 · ~6 min

Ejecutar tus primeras acciones sobre el repo

Con la conexión activa, pídele a Claude tareas en lenguaje natural y él invocará las herramientas de GitHub. Claude te pedirá permiso la primera vez que use cada herramienta: revisa siempre qué va a hacer antes de aprobar, sobre todo en acciones de escritura. Empieza con lecturas para ganar confianza y luego pasa a escritura. Prueba prompts como los del ejemplo. Claude puede leer el contenido de archivos, listar issues abiertos, crear nuevos issues, comentar en pull requests y proponer cambios. Combínalo con su capacidad de razonamiento: por ejemplo, 'lee src/auth.js y crea un issue describiendo los riesgos de seguridad que encuentres'. Ahí es donde la integración brilla, porque une contexto del repo con análisis en un solo paso.

bash
Lista los últimos 5 issues abiertos del repo mi-usuario/mi-proyecto

Lee el archivo README.md de mi-usuario/mi-proyecto y resume qué hace el proyecto

Crea un issue en mi-usuario/mi-proyecto titulado "Añadir tests al módulo de pagos" con una descripción de 3 puntos
ConsejoEspecifica siempre owner/repo en el prompt: si tienes acceso a muchos repos, evitas que Claude actúe sobre el equivocado.
Error comúnAprueba las acciones de escritura una a una al principio. Autorizar 'siempre' demasiado pronto puede crear issues o commits no deseados.
PASO 6 · ~7 min

Alternativa: conectar GitHub desde la API de Claude

Si construyes tu propia app en lugar de usar Claude Desktop, puedes orquestar GitHub desde la API con tool use. Defines una herramienta, Claude decide cuándo llamarla y tú ejecutas la petición real contra la API de GitHub. Este patrón te da control total sobre permisos y logging. El ejemplo muestra el esqueleto en Python: instala la librería con 'pip install anthropic requests', exporta ANTHROPIC_API_KEY y GITHUB_TOKEN, y adapta la lógica de ejecución. En producción, encapsula esto en un bucle agéntico que reenvíe los resultados de la herramienta a Claude hasta que complete la tarea. Es el mismo principio que usa MCP por debajo, pero explícito en tu código.

python
import os, requests, anthropic

client = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])

tools = [{
    "name": "listar_issues",
    "description": "Lista issues abiertos de un repo de GitHub",
    "input_schema": {
        "type": "object",
        "properties": {"repo": {"type": "string", "description": "owner/repo"}},
        "required": ["repo"]
    }
}]

msg = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    tools=tools,
    messages=[{"role": "user", "content": "Lista los issues de anthropics/anthropic-sdk-python"}]
)

for block in msg.content:
    if block.type == "tool_use" and block.name == "listar_issues":
        repo = block.input["repo"]
        r = requests.get(
            f"https://api.github.com/repos/{repo}/issues",
            headers={"Authorization": f"Bearer {os.environ['GITHUB_TOKEN']}"}
        )
        print([i["title"] for i in r.json()])
ConsejoDevuelve el resultado de la herramienta a Claude con un mensaje role 'user' de tipo tool_result para que redacte la respuesta final.
Error comúnNunca hardcodees el token en el código. Usa variables de entorno o un secret manager, sobre todo si despliegas en la nube.
Resultado

Has conectado Claude con GitHub por dos vías: el servidor MCP oficial dentro de Claude Desktop, listo para leer código, gestionar issues y revisar pull requests conversando, y el enfoque programático con tool use desde la API para tus propias aplicaciones. Con esta base puedes dar el salto hacia agentes e integraciones con MCP más complejos que combinen varios servicios y automaticen flujos completos de desarrollo.

PRÓXIMOS PASOS