GitHub MCP Server

Interactúa con la API de GitHub para operaciones de archivos, gestión de repositorios y búsqueda.

Documentación

GitHub MCP Server

Servidor MCP para la API de GitHub, que permite operaciones de archivos, gestión de repositorios, funcionalidad de búsqueda y más.

Características

  • Creación automática de ramas: Al crear/actualizar archivos o enviar cambios, las ramas se crean automáticamente si no existen
  • Manejo integral de errores: Mensajes de error claros para problemas comunes
  • Preservación del historial de Git: Las operaciones mantienen un historial de Git adecuado sin push forzado
  • Operaciones por lotes: Soporte para operaciones de archivo único y múltiples archivos
  • Búsqueda avanzada: Soporte para buscar código, issues/PRs y usuarios

Herramientas

  1. create_or_update_file

    • Crear o actualizar un solo archivo en un repositorio
    • Entradas:
      • owner (string): Propietario del repositorio (usuario u organización)
      • repo (string): Nombre del repositorio
      • path (string): Ruta donde crear/actualizar el archivo
      • content (string): Contenido del archivo
      • message (string): Mensaje de commit
      • branch (string): Rama en la que crear/actualizar el archivo
      • sha (string opcional): SHA del archivo que se reemplaza (para actualizaciones)
    • Devuelve: contenido del archivo y detalles del commit
  2. push_files

    • Enviar múltiples archivos en un solo commit
    • Entradas:
      • owner (string): Propietario del repositorio
      • repo (string): Nombre del repositorio
      • branch (string): Rama a la que enviar
      • files (array): Archivos a enviar, cada uno con path y content
      • message (string): Mensaje de commit
    • Devuelve: referencia de rama actualizada
  3. search_repositories

    • Buscar repositorios de GitHub
    • Entradas:
      • query (string): Consulta de búsqueda
      • page (número opcional): Número de página para paginación
      • perPage (número opcional): Resultados por página (máx. 100)
    • Devuelve: resultados de búsqueda de repositorios
  4. create_repository

    • Crear un nuevo repositorio de GitHub
    • Entradas:
      • name (string): Nombre del repositorio
      • description (string opcional): Descripción del repositorio
      • private (boolean opcional): Si el repositorio debe ser privado
      • autoInit (boolean opcional): Inicializar con README
    • Devuelve: detalles del repositorio creado
  5. get_file_contents

    • Obtener el contenido de un archivo o directorio
    • Entradas:
      • owner (string): Propietario del repositorio
      • repo (string): Nombre del repositorio
      • path (string): Ruta al archivo/directorio
      • branch (string opcional): Rama de la que obtener el contenido
    • Devuelve: contenido del archivo/directorio
  6. create_issue

    • Crear un nuevo issue
    • Entradas:
      • owner (string): Propietario del repositorio
      • repo (string): Nombre del repositorio
      • title (string): Título del issue
      • body (string opcional): Descripción del issue
      • assignees (string[] opcional): Nombres de usuario a asignar
      • labels (string[] opcional): Etiquetas a añadir
      • milestone (número opcional): Número de hito
    • Devuelve: detalles del issue creado
  7. create_pull_request

    • Crear una nueva pull request
    • Entradas:
      • owner (string): Propietario del repositorio
      • repo (string): Nombre del repositorio
      • title (string): Título de la PR
      • body (string opcional): Descripción de la PR
      • head (string): Rama que contiene los cambios
      • base (string): Rama en la que fusionar
      • draft (boolean opcional): Crear como PR borrador
      • maintainer_can_modify (boolean opcional): Permitir ediciones del mantenedor
    • Devuelve: detalles de la pull request creada
  8. fork_repository

    • Hacer fork de un repositorio
    • Entradas:
      • owner (string): Propietario del repositorio
      • repo (string): Nombre del repositorio
      • organization (string opcional): Organización a la que hacer fork
    • Devuelve: detalles del repositorio bifurcado
  9. create_branch

    • Crear una nueva rama
    • Entradas:
      • owner (string): Propietario del repositorio
      • repo (string): Nombre del repositorio
      • branch (string): Nombre para la nueva rama
      • from_branch (string opcional): Rama de origen (por defecto, la rama predeterminada del repositorio)
    • Devuelve: referencia de la rama creada
  10. list_issues

    • Listar y filtrar issues del repositorio
    • Entradas:
      • owner (string): Propietario del repositorio
      • repo (string): Nombre del repositorio
      • state (string opcional): Filtrar por estado ('open', 'closed', 'all')
      • labels (string[] opcional): Filtrar por etiquetas
      • sort (string opcional): Ordenar por ('created', 'updated', 'comments')
      • direction (string opcional): Dirección de ordenación ('asc', 'desc')
      • since (string opcional): Filtrar por fecha (marca de tiempo ISO 8601)
      • page (número opcional): Número de página
      • per_page (número opcional): Resultados por página
    • Devuelve: matriz de detalles de issues
  11. update_issue

    • Actualizar un issue existente
    • Entradas:
      • owner (string): Propietario del repositorio
      • repo (string): Nombre del repositorio
      • issue_number (número): Número de issue a actualizar
      • title (string opcional): Nuevo título
      • body (string opcional): Nueva descripción
      • state (string opcional): Nuevo estado ('open' o 'closed')
      • labels (string[] opcional): Nuevas etiquetas
      • assignees (string[] opcional): Nuevos asignados
      • milestone (número opcional): Nuevo número de hito
    • Devuelve: detalles del issue actualizado
  12. add_issue_comment

    • Añadir un comentario a un issue
    • Entradas:
      • owner (string): Propietario del repositorio
      • repo (string): Nombre del repositorio
      • issue_number (número): Número de issue en el que comentar
      • body (string): Texto del comentario
    • Devuelve: detalles del comentario creado
  13. search_code

    • Buscar código en repositorios de GitHub
    • Entradas:
      • q (string): Consulta de búsqueda usando la sintaxis de búsqueda de código de GitHub
      • sort (string opcional): Campo de ordenación (solo 'indexed')
      • order (string opcional): Orden de ordenación ('asc' o 'desc')
      • per_page (número opcional): Resultados por página (máx. 100)
      • page (número opcional): Número de página
    • Devuelve: resultados de búsqueda de código con contexto del repositorio
  14. search_issues

    • Buscar issues y pull requests
    • Entradas:
      • q (string): Consulta de búsqueda usando la sintaxis de búsqueda de issues de GitHub
      • sort (string opcional): Campo de ordenación (comments, reactions, created, etc.)
      • order (string opcional): Orden de ordenación ('asc' o 'desc')
      • per_page (número opcional): Resultados por página (máx. 100)
      • page (número opcional): Número de página
    • Devuelve: resultados de búsqueda de issues y pull requests
  15. search_users

    • Buscar usuarios de GitHub
    • Entradas:
      • q (string): Consulta de búsqueda usando la sintaxis de búsqueda de usuarios de GitHub
      • sort (string opcional): Campo de ordenación (followers, repositories, joined)
      • order (string opcional): Orden de ordenación ('asc' o 'desc')
      • per_page (número opcional): Resultados por página (máx. 100)
      • page (número opcional): Número de página
    • Devuelve: resultados de búsqueda de usuarios
  16. list_commits

  • Obtiene los commits de una rama en un repositorio
  • Entradas:
    • owner (string): Propietario del repositorio
    • repo (string): Nombre del repositorio
    • page (string opcional): número de página
    • per_page (string opcional): número de registros por página
    • sha (string opcional): nombre de la rama
  • Devuelve: lista de commits
  1. get_issue
  • Obtiene el contenido de un issue dentro de un repositorio
  • Entradas:
    • owner (string): Propietario del repositorio
    • repo (string): Nombre del repositorio
    • issue_number (número): Número de issue a recuperar
  • Devuelve: objeto Github Issue y detalles
  1. get_issue_comments
  • Obtiene los comentarios de un issue o pull request
  • Entradas:
    • owner (string): Propietario del repositorio
    • repo (string): Nombre del repositorio
    • issue_number (número): Número de issue/PR del que recuperar comentarios
  • Devuelve: matriz de objetos de comentario de GitHub que contienen ID del comentario, texto del cuerpo, autor y marcas de tiempo

Sintaxis de consulta de búsqueda

Búsqueda de código

  • language:javascript: Buscar por lenguaje de programación
  • repo:owner/name: Buscar en un repositorio específico
  • path:app/src: Buscar en una ruta específica
  • extension:js: Buscar por extensión de archivo
  • Ejemplo: q: "import express" language:typescript path:src/

Búsqueda de issues

  • is:issue o is:pr: Filtrar por tipo
  • is:open o is:closed: Filtrar por estado
  • label:bug: Buscar por etiqueta
  • author:username: Buscar por autor
  • Ejemplo: q: "memory leak" is:issue is:open label:bug

Búsqueda de usuarios

  • type:user o type:org: Filtrar por tipo de cuenta
  • followers:>1000: Filtrar por seguidores
  • location:London: Buscar por ubicación
  • Ejemplo: q: "fullstack developer" location:London followers:>100

Para obtener la sintaxis de búsqueda detallada, consulta la documentación de búsqueda de GitHub.

Configuración

Token de acceso personal

Crea un token de acceso personal de GitHub con los permisos adecuados:

  • Ve a Tokens de acceso personal (en Configuración de GitHub > Configuración de desarrollador)
  • Selecciona a qué repositorios deseas que este token tenga acceso (Públicos, Todos o Seleccionados)
  • Crea un token con el alcance repo ("Control total de repositorios privados")
    • Alternativamente, si trabajas solo con repositorios públicos, selecciona únicamente el alcance public_repo
  • Copia el token generado

Uso con Claude Desktop

Para usar esto con Claude Desktop, añade lo siguiente a tu claude_desktop_config.json:

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-github"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
      }
    }
  }
}

Licencia

Este servidor MCP está licenciado bajo la Licencia MIT. Esto significa que eres libre de usar, modificar y distribuir el software, sujeto a los términos y condiciones de la Licencia MIT. Para más detalles, consulta el archivo LICENSE en el repositorio del proyecto.