GitHub

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

Documentación

Servidor MCP de GitHub

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 forzar el push
  • Operaciones por lotes: Soporte para operaciones de un solo archivo y de 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
      • 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 (opcional string): 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 la rama actualizada
  3. search_repositories

    • Buscar repositorios de GitHub
    • Entradas:
      • query (string): Consulta de búsqueda
      • page (opcional number): Número de página para la paginación
      • perPage (opcional number): 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 (opcional string): Descripción del repositorio
      • private (opcional boolean): Si el repositorio debe ser privado
      • autoInit (opcional boolean): 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 (opcional string): 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 (opcional string): Descripción del issue
      • assignees (opcional string[]): Nombres de usuario a asignar
      • labels (opcional string[]): Etiquetas a agregar
      • milestone (opcional number): 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 (opcional string): Descripción de la PR
      • head (string): Rama que contiene los cambios
      • base (string): Rama en la que fusionar
      • draft (opcional boolean): Crear como PR borrador
      • maintainer_can_modify (opcional boolean): 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 (opcional string): 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 (opcional string): 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 (opcional string): Filtrar por estado ('open', 'closed', 'all')
      • labels (opcional string[]): Filtrar por etiquetas
      • sort (opcional string): Ordenar por ('created', 'updated', 'comments')
      • direction (opcional string): Dirección de ordenamiento ('asc', 'desc')
      • since (opcional string): Filtrar por fecha (marca de tiempo ISO 8601)
      • page (opcional number): Número de página
      • per_page (opcional number): Resultados por página
    • Devuelve: Arreglo de detalles de issues
  11. update_issue

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

    • Agregar un comentario a un issue
    • Entradas:
      • owner (string): Propietario del repositorio
      • repo (string): Nombre del repositorio
      • issue_number (number): Número de issue al 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 (opcional string): Campo de ordenamiento (solo 'indexed')
      • order (opcional string): Orden de ordenamiento ('asc' o 'desc')
      • per_page (opcional number): Resultados por página (máx. 100)
      • page (opcional number): 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 (opcional string): Campo de ordenamiento (comments, reactions, created, etc.)
      • order (opcional string): Orden de ordenamiento ('asc' o 'desc')
      • per_page (opcional number): Resultados por página (máx. 100)
      • page (opcional number): 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 (opcional string): Campo de ordenamiento (followers, repositories, joined)
      • order (opcional string): Orden de ordenamiento ('asc' o 'desc')
      • per_page (opcional number): Resultados por página (máx. 100)
      • page (opcional number): 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 (opcional string): número de página
    • per_page (opcional string): número de registros por página
    • sha (opcional string): 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 (number): Número de issue a recuperar
  • Devuelve: Objeto de Issue de GitHub y detalles
  1. get_pull_request
  • Obtener detalles de una pull request específica
  • Entradas:
    • owner (string): Propietario del repositorio
    • repo (string): Nombre del repositorio
    • pull_number (number): Número de pull request
  • Devuelve: Detalles de la pull request, incluidos el diff y el estado de revisión
  1. list_pull_requests
  • Listar y filtrar pull requests del repositorio
  • Entradas:
    • owner (string): Propietario del repositorio
    • repo (string): Nombre del repositorio
    • state (opcional string): Filtrar por estado ('open', 'closed', 'all')
    • head (opcional string): Filtrar por usuario/org de la cabeza y rama
    • base (opcional string): Filtrar por rama base
    • sort (opcional string): Ordenar por ('created', 'updated', 'popularity', 'long-running')
    • direction (opcional string): Dirección de ordenamiento ('asc', 'desc')
    • per_page (opcional number): Resultados por página (máx. 100)
    • page (opcional number): Número de página
  • Devuelve: Arreglo de detalles de pull requests
  1. create_pull_request_review
  • Crear una revisión en una pull request
  • Entradas:
    • owner (string): Propietario del repositorio
    • repo (string): Nombre del repositorio
    • pull_number (number): Número de pull request
    • body (string): Texto del comentario de revisión
    • event (string): Acción de revisión ('APPROVE', 'REQUEST_CHANGES', 'COMMENT')
    • commit_id (opcional string): SHA del commit a revisar
    • comments (opcional array): Comentarios específicos de línea, cada uno con:
      • path (string): Ruta del archivo
      • position (number): Posición de línea en el diff
      • body (string): Texto del comentario
  • Devuelve: Detalles de la revisión creada
  1. merge_pull_request
  • Fusionar una pull request
  • Entradas:
    • owner (string): Propietario del repositorio
    • repo (string): Nombre del repositorio
    • pull_number (number): Número de pull request
    • commit_title (opcional string): Título para el commit de fusión
    • commit_message (opcional string): Detalle adicional para el commit de fusión
    • merge_method (opcional string): Método de fusión ('merge', 'squash', 'rebase')
  • Devuelve: Detalles del resultado de la fusión
  1. get_pull_request_files
  • Obtener la lista de archivos modificados en una pull request
  • Entradas:
    • owner (string): Propietario del repositorio
    • repo (string): Nombre del repositorio
    • pull_number (number): Número de pull request
  • Devuelve: Arreglo de archivos modificados con detalles de parche y estado
  1. get_pull_request_status
  • Obtener el estado combinado de todas las verificaciones de estado para una pull request
  • Entradas:
    • owner (string): Propietario del repositorio
    • repo (string): Nombre del repositorio
    • pull_number (number): Número de pull request
  • Devuelve: Resultados combinados de verificaciones de estado y detalles de cada verificación
  1. update_pull_request_branch
  • Actualizar la rama de una pull request con los últimos cambios de la rama base (equivalente al botón "Update branch" de GitHub)
  • Entradas:
    • owner (string): Propietario del repositorio
    • repo (string): Nombre del repositorio
    • pull_number (number): Número de pull request
    • expected_head_sha (opcional string): El SHA esperado de la referencia HEAD de la pull request
  • Devuelve: Mensaje de éxito cuando se actualiza la rama
  1. get_pull_request_comments
  • Obtener los comentarios de revisión en una pull request
  • Entradas:
    • owner (string): Propietario del repositorio
    • repo (string): Nombre del repositorio
    • pull_number (number): Número de pull request
  • Devuelve: Arreglo de comentarios de revisión de la pull request con detalles como el texto del comentario, el autor y la ubicación en el diff
  1. get_pull_request_reviews
  • Obtener las revisiones de una pull request
  • Entradas:
    • owner (string): Propietario del repositorio
    • repo (string): Nombre del repositorio
    • pull_number (number): Número de la pull request
  • Devuelve: Matriz de revisiones de la pull request con detalles como el estado de la revisión (APPROVED, CHANGES_REQUESTED, etc.), el revisor y el cuerpo de la revisión

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 conocer 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 quieres que tenga acceso este token (Públicos, Todos o Seleccionar)
  • 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:

Docker

{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "mcp/github"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
      }
    }
  }
}

NPX

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

Compilación

Compilación de Docker:

docker build -t mcp/github -f src/github/Dockerfile .

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.