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
-
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 repositoriopath(string): Ruta donde crear/actualizar el archivocontent(string): Contenido del archivomessage(string): Mensaje de commitbranch(string): Rama en la que crear/actualizar el archivosha(string opcional): SHA del archivo que se reemplaza (para actualizaciones)
- Devuelve: contenido del archivo y detalles del commit
-
push_files- Enviar múltiples archivos en un solo commit
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositoriobranch(string): Rama a la que enviarfiles(array): Archivos a enviar, cada uno conpathycontentmessage(string): Mensaje de commit
- Devuelve: referencia de rama actualizada
-
search_repositories- Buscar repositorios de GitHub
- Entradas:
query(string): Consulta de búsquedapage(número opcional): Número de página para paginaciónperPage(número opcional): Resultados por página (máx. 100)
- Devuelve: resultados de búsqueda de repositorios
-
create_repository- Crear un nuevo repositorio de GitHub
- Entradas:
name(string): Nombre del repositoriodescription(string opcional): Descripción del repositorioprivate(boolean opcional): Si el repositorio debe ser privadoautoInit(boolean opcional): Inicializar con README
- Devuelve: detalles del repositorio creado
-
get_file_contents- Obtener el contenido de un archivo o directorio
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositoriopath(string): Ruta al archivo/directoriobranch(string opcional): Rama de la que obtener el contenido
- Devuelve: contenido del archivo/directorio
-
create_issue- Crear un nuevo issue
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositoriotitle(string): Título del issuebody(string opcional): Descripción del issueassignees(string[] opcional): Nombres de usuario a asignarlabels(string[] opcional): Etiquetas a añadirmilestone(número opcional): Número de hito
- Devuelve: detalles del issue creado
-
create_pull_request- Crear una nueva pull request
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositoriotitle(string): Título de la PRbody(string opcional): Descripción de la PRhead(string): Rama que contiene los cambiosbase(string): Rama en la que fusionardraft(boolean opcional): Crear como PR borradormaintainer_can_modify(boolean opcional): Permitir ediciones del mantenedor
- Devuelve: detalles de la pull request creada
-
fork_repository- Hacer fork de un repositorio
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositorioorganization(string opcional): Organización a la que hacer fork
- Devuelve: detalles del repositorio bifurcado
-
create_branch- Crear una nueva rama
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositoriobranch(string): Nombre para la nueva ramafrom_branch(string opcional): Rama de origen (por defecto, la rama predeterminada del repositorio)
- Devuelve: referencia de la rama creada
-
list_issues- Listar y filtrar issues del repositorio
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositoriostate(string opcional): Filtrar por estado ('open', 'closed', 'all')labels(string[] opcional): Filtrar por etiquetassort(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áginaper_page(número opcional): Resultados por página
- Devuelve: matriz de detalles de issues
-
update_issue- Actualizar un issue existente
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositorioissue_number(número): Número de issue a actualizartitle(string opcional): Nuevo títulobody(string opcional): Nueva descripciónstate(string opcional): Nuevo estado ('open' o 'closed')labels(string[] opcional): Nuevas etiquetasassignees(string[] opcional): Nuevos asignadosmilestone(número opcional): Nuevo número de hito
- Devuelve: detalles del issue actualizado
-
add_issue_comment- Añadir un comentario a un issue
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositorioissue_number(número): Número de issue en el que comentarbody(string): Texto del comentario
- Devuelve: detalles del comentario creado
-
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 GitHubsort(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
-
search_issues- Buscar issues y pull requests
- Entradas:
q(string): Consulta de búsqueda usando la sintaxis de búsqueda de issues de GitHubsort(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
-
search_users- Buscar usuarios de GitHub
- Entradas:
q(string): Consulta de búsqueda usando la sintaxis de búsqueda de usuarios de GitHubsort(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
-
list_commits
- Obtiene los commits de una rama en un repositorio
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositoriopage(string opcional): número de páginaper_page(string opcional): número de registros por páginasha(string opcional): nombre de la rama
- Devuelve: lista de commits
get_issue
- Obtiene el contenido de un issue dentro de un repositorio
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositorioissue_number(número): Número de issue a recuperar
- Devuelve: objeto Github Issue y detalles
get_issue_comments
- Obtiene los comentarios de un issue o pull request
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositorioissue_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ónrepo:owner/name: Buscar en un repositorio específicopath:app/src: Buscar en una ruta específicaextension:js: Buscar por extensión de archivo- Ejemplo:
q: "import express" language:typescript path:src/
Búsqueda de issues
is:issueois:pr: Filtrar por tipois:openois:closed: Filtrar por estadolabel:bug: Buscar por etiquetaauthor:username: Buscar por autor- Ejemplo:
q: "memory leak" is:issue is:open label:bug
Búsqueda de usuarios
type:userotype:org: Filtrar por tipo de cuentafollowers:>1000: Filtrar por seguidoreslocation: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
- Alternativamente, si trabajas solo con repositorios públicos, selecciona únicamente el alcance
- 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.