GitHub MCP Server

by tuanle96
Verified

Integrations

  • Preserves Git history for repository operations, with support for branch creation, commit management, and maintaining proper version control without force pushing.

  • Provides comprehensive access to GitHub's API, enabling file operations (creating, updating, retrieving), repository management (creating, forking, branching), search functionality across code/issues/users, and issue/PR workflows (creating, commenting, reviewing, merging).

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 o 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 el historial de Git adecuado sin forzar el envío.
  • Operaciones por lotes : compatibilidad con operaciones de un solo archivo y de varios archivos
  • Búsqueda avanzada : Soporte para búsqueda de código, problemas/PR y usuarios
  • Gestión de proyectos : conjunto de herramientas completo para la gestión de proyectos de GitHub (clásico), que incluye la creación de proyectos, la gestión de columnas y el trabajo con tarjetas

Herramientas

  1. create_or_update_file
    • Crear o actualizar un solo archivo en un repositorio
    • Entradas:
      • owner (cadena): propietario del repositorio (nombre de usuario u organización)
      • repo (cadena): nombre del repositorio
      • path (cadena): Ruta donde crear/actualizar el archivo
      • content (cadena): Contenido del archivo
      • message (cadena): Mensaje de confirmación
      • branch (cadena): Rama para crear/actualizar el archivo en
      • sha (cadena opcional): SHA del archivo que se va a reemplazar (para actualizaciones)
    • Devuelve: Contenido del archivo y detalles de confirmación
  2. push_files
    • Insertar varios archivos en una sola confirmación
    • Entradas:
      • owner (cadena): Propietario del repositorio
      • repo (cadena): nombre del repositorio
      • branch (cadena): Rama a la que enviar
      • files (matriz): archivos para enviar, cada uno con path y content
      • message (cadena): Mensaje de confirmación
    • Devoluciones: Referencia de rama actualizada
  3. search_repositories
    • Buscar repositorios de GitHub
    • Entradas:
      • query (cadena): 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áximo 100)
    • Devuelve: Resultados de la búsqueda del repositorio
  4. create_repository
    • Crear un nuevo repositorio de GitHub
    • Entradas:
      • name (cadena): nombre del repositorio
      • description (cadena opcional): Descripción del repositorio
      • private (booleano opcional): si el repositorio debe ser privado
      • autoInit (booleano opcional): inicializar con README
    • Devoluciones: Detalles del repositorio creado
  5. get_file_contents
    • Obtener el contenido de un archivo o directorio
    • Entradas:
      • owner (cadena): Propietario del repositorio
      • repo (cadena): nombre del repositorio
      • path (cadena): Ruta al archivo/directorio
      • branch (cadena opcional): rama de la que obtener el contenido
    • Devuelve: Contenido del archivo/directorio
  6. create_issue
    • Crear un nuevo problema
    • Entradas:
      • owner (cadena): Propietario del repositorio
      • repo (cadena): nombre del repositorio
      • title (cadena): Título del problema
      • body (cadena opcional): Descripción del problema
      • assignees (cadena opcional[]): nombres de usuario para asignar
      • labels (cadena opcional[]): etiquetas para agregar
      • milestone (número opcional): Número de hito
    • Devoluciones: Detalles del problema creado
  7. create_pull_request
    • Crear una nueva solicitud de extracción
    • Entradas:
      • owner (cadena): Propietario del repositorio
      • repo (cadena): nombre del repositorio
      • title (cadena): título de PR
      • body (cadena opcional): descripción de PR
      • head (cadena): rama que contiene los cambios
      • base (cadena): rama en la que fusionarse
      • draft (booleano opcional): Crear como borrador de PR
      • maintainer_can_modify (booleano opcional): Permitir ediciones del mantenedor
    • Devoluciones: Detalles de la solicitud de extracción creada
  8. fork_repository
    • Bifurcar un repositorio
    • Entradas:
      • owner (cadena): Propietario del repositorio
      • repo (cadena): nombre del repositorio
      • organization (cadena opcional): Organización a la que se bifurcará
    • Devoluciones: Detalles del repositorio bifurcado
  9. create_branch
    • Crear una nueva rama
    • Entradas:
      • owner (cadena): Propietario del repositorio
      • repo (cadena): nombre del repositorio
      • branch (cadena): Nombre de la nueva rama
      • from_branch (cadena opcional): rama de origen (predeterminada al valor predeterminado del repositorio)
    • Devuelve: Referencia de rama creada
  10. list_issues
  • Enumerar y filtrar problemas del repositorio
  • Entradas:
    • owner (cadena): Propietario del repositorio
    • repo (cadena): nombre del repositorio
    • state (cadena opcional): filtrar por estado ('abierto', 'cerrado', 'todos')
    • labels (cadena opcional[]): Filtrar por etiquetas
    • sort (cadena opcional): Ordenar por ('creado', 'actualizado', 'comentarios')
    • direction (cadena opcional): Ordenar dirección ('asc', 'desc')
    • since (cadena 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
  • Devoluciones: Matriz de detalles del problema
  1. update_issue
  • Actualizar un problema existente
  • Entradas:
    • owner (cadena): Propietario del repositorio
    • repo (cadena): nombre del repositorio
    • issue_number (número): Número de problema a actualizar
    • title (cadena opcional): Nuevo título
    • body (cadena opcional): Nueva descripción
    • state (cadena opcional): Nuevo estado ('abierto' o 'cerrado')
    • labels (cadena opcional[]): Nuevas etiquetas
    • assignees (cadena opcional[]): nuevos cesionarios
    • milestone (número opcional): Nuevo número de hito
  • Devoluciones: Detalles del problema actualizados
  1. add_issue_comment
  • Agregar un comentario a un problema
  • Entradas:
    • owner (cadena): Propietario del repositorio
    • repo (cadena): nombre del repositorio
    • issue_number (número): Número de problema sobre el que se realizará el comentario
    • body (cadena): Texto del comentario
  • Devoluciones: Detalles del comentario creado
  1. search_code
  • Buscar código en los repositorios de GitHub
  • Entradas:
    • q (cadena): consulta de búsqueda utilizando la sintaxis de búsqueda de código de GitHub
    • sort (cadena opcional): campo de ordenación (solo 'indexado')
    • order (cadena opcional): orden de clasificación ('asc' o 'desc')
    • per_page (número opcional): Resultados por página (máximo 100)
    • page (número opcional): Número de página
  • Devuelve: Resultados de búsqueda de código con contexto de repositorio
  1. search_issues
  • Buscar problemas y solicitudes de extracción
  • Entradas:
    • q (cadena): consulta de búsqueda que utiliza la sintaxis de búsqueda de problemas de GitHub
    • sort (cadena opcional): campo de ordenación (comentarios, reacciones, creados, etc.)
    • order (cadena opcional): orden de clasificación ('asc' o 'desc')
    • per_page (número opcional): Resultados por página (máximo 100)
    • page (número opcional): Número de página
  • Devoluciones: Resultados de búsqueda de problemas y solicitudes de extracción
  1. search_users
  • Buscar usuarios de GitHub
  • Entradas:
    • q (cadena): consulta de búsqueda que utiliza la sintaxis de búsqueda de usuarios de GitHub
    • sort (cadena opcional): campo de ordenación (seguidores, repositorios, unidos)
    • order (cadena opcional): orden de clasificación ('asc' o 'desc')
    • per_page (número opcional): Resultados por página (máximo 100)
    • page (número opcional): Número de página
  • Devuelve: Resultados de búsqueda del usuario
  1. list_commits
  • Obtiene confirmaciones de una rama en un repositorio
  • Entradas:
    • owner (cadena): Propietario del repositorio
    • repo (cadena): nombre del repositorio
    • page (cadena opcional): número de página
    • per_page (cadena opcional): número de registros por página
    • sha (cadena opcional): nombre de la rama
  • Devuelve: Lista de confirmaciones
  1. get_issue
  • Obtiene el contenido de un problema dentro de un repositorio
  • Entradas:
    • owner (cadena): Propietario del repositorio
    • repo (cadena): nombre del repositorio
    • issue_number (número): Número de problema a recuperar
  • Devoluciones: objeto de problema de Github y detalles
  1. delete_issue
  • Elimina un problema de un repositorio de GitHub mediante la API GraphQL
  • Entradas:
    • owner (cadena): Propietario del repositorio
    • repo (cadena): nombre del repositorio
    • issue_number (número): Número de problema a eliminar
  • Devoluciones: Confirmación de eliminación con información del repositorio
  1. get_pull_request
  • Obtener detalles de una solicitud de extracción específica
  • Entradas:
    • owner (cadena): Propietario del repositorio
    • repo (cadena): nombre del repositorio
    • pull_number (número): número de solicitud de extracción
  • Devoluciones: Detalles de la solicitud de extracción, incluyendo la diferencia y el estado de la revisión
  1. list_pull_requests
  • Listar y filtrar solicitudes de extracción del repositorio
  • Entradas:
    • owner (cadena): Propietario del repositorio
    • repo (cadena): nombre del repositorio
    • state (cadena opcional): filtrar por estado ('abierto', 'cerrado', 'todos')
    • head (cadena opcional): filtrar por usuario/organización principal y rama
    • base (cadena opcional): Filtrar por rama base
    • sort (cadena opcional): Ordenar por ('creado', 'actualizado', 'popularidad', 'de larga duración')
    • direction (cadena opcional): Ordenar dirección ('asc', 'desc')
    • per_page (número opcional): Resultados por página (máximo 100)
    • page (número opcional): Número de página
  • Devoluciones: Matriz de detalles de la solicitud de extracción
  1. create_pull_request_review
  • Crear una revisión en una solicitud de extracción
  • Entradas:
    • owner (cadena): Propietario del repositorio
    • repo (cadena): nombre del repositorio
    • pull_number (número): número de solicitud de extracción
    • body (cadena): Texto del comentario de la revisión
    • event (cadena): Acción de revisión ('APROBAR', 'SOLICITAR_CAMBIOS', 'COMENTARIO')
    • commit_id (cadena opcional): SHA de la confirmación a revisar
    • comments (matriz opcional): comentarios específicos de cada línea, cada uno con:
      • path (cadena): Ruta del archivo
      • position (número): Posición de línea en diff
      • body (cadena): Texto del comentario
  • Devoluciones: Detalles de la revisión creada
  1. merge_pull_request
  • Fusionar una solicitud de extracción
  • Entradas:
    • owner (cadena): Propietario del repositorio
    • repo (cadena): nombre del repositorio
    • pull_number (número): número de solicitud de extracción
    • commit_title (cadena opcional): Título para la confirmación de fusión
    • commit_message (cadena opcional): detalle adicional para la confirmación de fusión
    • merge_method (cadena opcional): método de fusión ('merge', 'squash', 'rebase')
  • Devoluciones: Combinar detalles de resultados
  1. get_pull_request_files
  • Obtener la lista de archivos modificados en una solicitud de extracción
  • Entradas:
    • owner (cadena): Propietario del repositorio
    • repo (cadena): nombre del repositorio
    • pull_number (número): número de solicitud de extracción
  • Devoluciones: Matriz de archivos modificados con detalles del parche y el estado
  1. get_pull_request_status
  • Obtener el estado combinado de todas las comprobaciones de estado para una solicitud de extracción
  • Entradas:
    • owner (cadena): Propietario del repositorio
    • repo (cadena): nombre del repositorio
    • pull_number (número): número de solicitud de extracción
  • Devoluciones: Resultados de verificación de estado combinados y detalles de verificación individuales
  1. update_pull_request_branch
  • Actualizar una rama de solicitud de extracción con los últimos cambios de la rama base (equivalente al botón "Actualizar rama" de GitHub)
  • Entradas:
    • owner (cadena): Propietario del repositorio
    • repo (cadena): nombre del repositorio
    • pull_number (número): número de solicitud de extracción
    • expected_head_sha (cadena opcional): El SHA esperado de la referencia HEAD de la solicitud de extracción
  • Devuelve: Mensaje de éxito cuando se actualiza la rama
  1. get_pull_request_comments
  • Obtener los comentarios de revisión en una solicitud de extracción
  • Entradas:
    • owner (cadena): Propietario del repositorio
    • repo (cadena): nombre del repositorio
    • pull_number (número): número de solicitud de extracción
  • Devoluciones: Matriz de comentarios de revisión de solicitudes de extracción con detalles como el texto del comentario, el autor y la ubicación en la diferencia.
  1. get_pull_request_reviews
  • Obtenga las revisiones en una solicitud de extracción
  • Entradas:
    • owner (cadena): Propietario del repositorio
    • repo (cadena): nombre del repositorio
    • pull_number (número): número de solicitud de extracción
  • Devoluciones: Matriz de revisiones de solicitudes de extracción con detalles como el estado de la revisión (APROBADO, CAMBIOS SOLICITADOS, etc.), el revisor y el cuerpo de la revisión
  1. create_project
  • Crear un nuevo proyecto en un repositorio de GitHub
  • Entradas:
    • owner (cadena): propietario del repositorio (nombre de usuario u organización)
    • repo (cadena): nombre del repositorio
    • name (cadena): Nombre del proyecto
    • body (cadena opcional): Descripción del proyecto
  • Devoluciones: Detalles del proyecto creado
  1. get_project
  • Obtenga detalles sobre un proyecto específico
  • Entradas:
    • owner (cadena): propietario del repositorio (nombre de usuario u organización)
    • repo (cadena): nombre del repositorio
    • project_number (número): El número del proyecto
  • Devoluciones: Detalles del proyecto
  1. update_project
  • Actualizar los detalles de un proyecto existente
  • Entradas:
    • project_id (número): El identificador único del proyecto
    • name (cadena opcional): Nuevo nombre del proyecto
    • body (cadena opcional): Nueva descripción del proyecto
    • state (cadena opcional): Estado del proyecto ('abierto' o 'cerrado')
  • Devoluciones: Detalles del proyecto actualizados
  1. list_projects
  • Enumerar todos los proyectos en un repositorio de GitHub
  • Entradas:
    • owner (cadena): propietario del repositorio (nombre de usuario u organización)
    • repo (cadena): nombre del repositorio
    • state (cadena opcional): Filtrar proyectos por estado ('abierto', 'cerrado', 'todos')
    • page (número opcional): Número de página para paginación (comienza en 1)
    • per_page (número opcional): Número de resultados por página (máximo 100)
  • Devuelve: Matriz de detalles del proyecto
  1. create_project_column
  • Crear una nueva columna en un proyecto
  • Entradas:
    • owner (cadena): propietario del repositorio (nombre de usuario u organización)
    • repo (cadena): nombre del repositorio
    • project_number (número): El número del proyecto
    • name (cadena): Nombre de la columna
  • Devuelve: Detalles de la columna creada
  1. list_project_columns
  • Enumerar todas las columnas de un proyecto
  • Entradas:
    • project_id (número): El identificador único del proyecto
    • page (número opcional): Número de página para paginación (comienza en 1)
    • per_page (número opcional): Número de resultados por página (máximo 100)
  • Devuelve: Matriz de detalles de la columna del proyecto
  1. update_project_column
  • Actualizar una columna de proyecto existente
  • Entradas:
    • column_id (número): El identificador único de la columna
    • name (cadena): Nuevo nombre de la columna
  • Devoluciones: Detalles de columna actualizados
  1. delete_project_column
  • Eliminar una columna de proyecto
  • Entradas:
    • column_id (número): El identificador único de la columna
  • Devoluciones: Mensaje de éxito
  1. add_card_to_column
  • Agregar una nueva tarjeta a una columna de proyecto
  • Entradas:
    • owner (cadena): propietario del repositorio (nombre de usuario u organización)
    • repo (cadena): nombre del repositorio
    • column_id (cadena): El ID de la columna a la que se agregará la tarjeta
    • content_type (cadena): Tipo de contenido de la tarjeta ('Emisión', 'Solicitud de extracción', 'Nota')
    • content_id (número opcional): ID del problema o solicitud de extracción (obligatorio si content_type es Issue o PullRequest)
    • note (cadena opcional): el contenido de la nota de la tarjeta (obligatorio si content_type es Nota)
  • Devoluciones: Detalles de la tarjeta creada
  1. list_column_cards
  • Enumerar todas las tarjetas en una columna de proyecto
  • Entradas:
    • column_id (número): El identificador único de la columna
    • archived_state (cadena opcional): Filtrar por estado archivado de la tarjeta ('all', 'archivado', 'no_archivado')
    • page (número opcional): Número de página para paginación (comienza en 1)
    • per_page (número opcional): Número de resultados por página (máximo 100)
  • Devoluciones: Matriz de detalles de la tarjeta
  1. move_card
  • Mover una tarjeta a una posición o columna diferente
  • Entradas:
    • card_id (número): El identificador único de la tarjeta
    • position (cadena): la posición de la tarjeta ('arriba', 'abajo' o 'después de:<card_id>')
    • column_id (número opcional): El ID de la columna a la que mover la tarjeta
  • Devoluciones: Mensaje de éxito
  1. delete_card
  • Eliminar una tarjeta de un proyecto
  • Entradas:
    • card_id (número): El identificador único de la tarjeta
  • Devoluciones: Mensaje de éxito
  1. list_organization_projects
  • Enumerar todos los proyectos en una organización de GitHub (a nivel de organización, no a nivel de repositorio)
  • Entradas:
    • org (cadena): nombre de la organización
    • state (cadena opcional): Filtrar proyectos por estado ('abierto', 'cerrado', 'todos')
    • page (número opcional): Número de página para paginación
    • per_page (número opcional): Número de resultados por página (máximo 100)
  • Devoluciones: Matriz de detalles del proyecto de la organización

Herramientas de Proyectos V2 (Nueva experiencia de Proyectos de GitHub)

  1. list_organization_projects_v2
  • Enumere proyectos V2 en una organización de GitHub usando la API GraphQL
  • Entradas:
    • org (cadena): nombre de la organización
    • first (número opcional): Número de proyectos a buscar (máximo 100)
    • after (cadena opcional): Cursor para paginación
    • orderBy (objeto opcional): Cómo ordenar los proyectos
  • Devuelve: Matriz de proyectos con información de paginación
  1. get_project_v2
  • Obtenga detalles de un proyecto de GitHub V2 usando la API GraphQL
  • Entradas:
    • id (cadena): El ID del nodo del proyecto
  • Devoluciones: Información detallada del proyecto, incluidos campos y vistas
  1. create_project_v2
  • Cree un nuevo proyecto de GitHub V2 usando la API GraphQL
  • Entradas:
    • ownerId (cadena): El ID del nodo de la organización o usuario
    • title (cadena): Título del proyecto
    • description (cadena opcional): Descripción del proyecto
  • Devoluciones: Detalles del proyecto creado
  1. update_project_v2
  • Actualizar un proyecto de GitHub V2 usando la API GraphQL
  • Entradas:
    • projectId (cadena): El ID del nodo del proyecto
    • title (cadena opcional): Nuevo título para el proyecto
    • description (cadena opcional): Nueva descripción del proyecto
    • closed (booleano opcional): si se debe cerrar el proyecto
  • Devoluciones: Detalles del proyecto actualizados
  1. add_item_to_project_v2
  • Agregar un problema o una solicitud de extracción a un proyecto de GitHub V2 usando la API GraphQL
  • Entradas:
    • projectId (cadena): El ID del nodo del proyecto
    • contentId (cadena): el ID del nodo del problema o la solicitud de extracción que se agregará
  • Devoluciones: Se agregaron detalles del artículo
  1. list_project_v2_items
  • Listar elementos en un proyecto de GitHub V2 usando la API GraphQL
  • Entradas:
    • projectId (cadena): El ID del nodo del proyecto
    • first (número opcional): Número de elementos a buscar (máximo 100)
    • after (cadena opcional): Cursor para paginación
    • filterBy (objeto opcional): filtros para los elementos
  • Devuelve: Matriz de elementos del proyecto con sus valores de campo
  1. update_project_v2_item_field
  • Actualizar un valor de campo para un elemento en un proyecto de GitHub V2 usando la API GraphQL
  • Entradas:
    • projectId (cadena): El ID del nodo del proyecto
    • itemId (cadena): El ID del nodo del elemento
    • fieldId (cadena): El ID del nodo del campo
    • value (cualquiera): El nuevo valor para el campo
  • Devoluciones: Detalles del artículo actualizados

Notas de gestión de proyectos

Advertencia de obsolescencia : GitHub ha anunciado que Proyectos (clásico) quedará obsoleto para dar paso a la nueva experiencia de Proyectos. Las herramientas 27 a 39 funcionan con la versión clásica de Proyectos, que podría eliminarse en el futuro. Para la nueva experiencia de Proyectos de GitHub, utilice las herramientas 40 a 46.

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 problemas

  • 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, consulte la documentación de búsqueda de GitHub .

Configuración

Token de acceso personal

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

  • Vaya a Tokens de acceso personal (en Configuración de GitHub > Configuración de desarrollador)
  • Seleccione los repositorios a los que desea que este token tenga acceso (Público, Todos o Seleccionar)
  • Crea un token con el alcance repo ("Control total de repositorios privados")
    • Alternativamente, si trabaja solo con repositorios públicos, seleccione solo el ámbito public_repo
    • Para utilizar las herramientas de Proyectos V2, asegúrese de incluir también el alcance project .
  • Copiar el token generado

Uso con Claude Desktop

Para usar esto con Claude Desktop, agregue lo siguiente a su claude_desktop_config.json :

Estibador

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

NPX

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

Construir

Compilación de Docker:

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

Licencia

Este servidor MCP cuenta con la licencia MIT. Esto significa que puede usar, modificar y distribuir el software libremente, sujeto a los términos y condiciones de la licencia MIT. Para más detalles, consulte el archivo de LICENCIA en el repositorio del proyecto.

-
security - not tested
F
license - not found
-
quality - not tested

Permite operaciones integrales de GitHub a través del lenguaje natural, incluida la gestión de archivos, la administración de repositorios, el seguimiento de problemas y la búsqueda avanzada de código.

  1. Features
    1. Tools
      1. Projects V2 Tools (GitHub's New Projects Experience)
        1. Project Management Notes
          1. Search Query Syntax
            1. Code Search
            2. Issues Search
            3. Users Search
          2. Setup
            1. Personal Access Token
            2. Usage with Claude Desktop
            3. NPX
          3. Build
            1. License
              ID: 2aknx2eopg