GitHub
Interactúa con repositorios de GitHub, incluyendo operaciones de archivos, gestión de repositorios 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.
Modificaciones de Mission Squad
- El PAT de GitHub ahora es dinámico por solicitud y no tiene que incluirse mediante variables de entorno, pero aún así recurre a las variables de entorno.
- name: mcp-github
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 archivo único y de 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 (nombre de usuario u organización)repo(string): Nombre del repositoriopath(string): Ruta donde crear/actualizar el archivocontent(string): Contenido del archivomessage(string): Mensaje del commitbranch(string): Rama en la que crear/actualizar el archivosha(optional string): 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 del commit
- Devuelve: Referencia de rama actualizada
-
search_repositories- Buscar repositorios de GitHub
- Entradas:
query(string): Consulta de búsquedapage(optional number): Número de página para paginaciónperPage(optional number): 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(optional string): Descripción del repositorioprivate(optional boolean): Si el repositorio debe ser privadoautoInit(optional boolean): 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(optional string): 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(optional string): Descripción del issueassignees(optional string[]): Nombres de usuario a asignarlabels(optional string[]): Etiquetas a añadirmilestone(optional number): 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 del PRbody(optional string): Descripción del PRhead(string): Rama que contiene los cambiosbase(string): Rama en la que fusionardraft(optional boolean): Crear como PR borradormaintainer_can_modify(optional boolean): 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(optional string): 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(optional string): 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(optional string): Filtrar por estado ('open', 'closed', 'all')labels(optional string[]): Filtrar por etiquetassort(optional string): Ordenar por ('created', 'updated', 'comments')direction(optional string): Dirección de ordenación ('asc', 'desc')since(optional string): Filtrar por fecha (marca de tiempo ISO 8601)page(optional number): Número de páginaper_page(optional number): 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(number): Número de issue a actualizartitle(optional string): Nuevo títulobody(optional string): Nueva descripciónstate(optional string): Nuevo estado ('open' o 'closed')labels(optional string[]): Nuevas etiquetasassignees(optional string[]): Nuevos asignadosmilestone(optional number): 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(number): Número de issue al 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(optional string): Campo de ordenación (solo 'indexed')order(optional string): Orden de ordenación ('asc' o 'desc')per_page(optional number): Resultados por página (máx. 100)page(optional number): 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(optional string): Campo de ordenación (comments, reactions, created, etc.)order(optional string): Orden de ordenación ('asc' o 'desc')per_page(optional number): Resultados por página (máx. 100)page(optional number): 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(optional string): Campo de ordenación (followers, repositories, joined)order(optional string): Orden de ordenación ('asc' o 'desc')per_page(optional number): Resultados por página (máx. 100)page(optional number): 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(optional string): número de páginaper_page(optional string): número de registros por páginasha(optional string): 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(number): Número de issue a recuperar
- Devuelve: Objeto de issue de GitHub y detalles
get_pull_request
- Obtener detalles de una pull request específica
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositoriopull_number(number): Número de pull request
- Devuelve: Detalles de la pull request, incluidos el diff y el estado de revisión
list_pull_requests
- Listar y filtrar pull requests del repositorio
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositoriostate(optional string): Filtrar por estado ('open', 'closed', 'all')head(optional string): Filtrar por usuario/org de la rama head y ramabase(optional string): Filtrar por rama basesort(optional string): Ordenar por ('created', 'updated', 'popularity', 'long-running')direction(optional string): Dirección de ordenación ('asc', 'desc')per_page(optional number): Resultados por página (máx. 100)page(optional number): Número de página
- Devuelve: Matriz de detalles de pull requests
create_pull_request_review
- Crear una revisión en una pull request
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositoriopull_number(number): Número de pull requestbody(string): Texto del comentario de revisiónevent(string): Acción de revisión ('APPROVE', 'REQUEST_CHANGES', 'COMMENT')commit_id(optional string): SHA del commit a revisarcomments(optional array): Comentarios específicos de línea, cada uno con:path(string): Ruta del archivoposition(number): Posición de línea en el diffbody(string): Texto del comentario
- Devuelve: Detalles de la revisión creada
merge_pull_request
- Fusionar una pull request
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositoriopull_number(number): Número de pull requestcommit_title(optional string): Título para el commit de fusióncommit_message(optional string): Detalle adicional para el commit de fusiónmerge_method(optional string): Método de fusión ('merge', 'squash', 'rebase')
- Devuelve: Detalles del resultado de la fusión
get_pull_request_files
- Obtener la lista de archivos modificados en una pull request
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositoriopull_number(number): Número de pull request
- Devuelve: Matriz de archivos modificados con detalles de patch y estado
get_pull_request_status
- Obtener el estado combinado de todas las comprobaciones de estado de una pull request
- Entradas:
owner(string): Propietario del repositoriorepo(string): Nombre del repositoriopull_number(number): Número de pull request
- Devuelve: Resultados combinados de comprobaciones de estado y detalles de cada comprobación
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 repositoriorepo(string): Nombre del repositoriopull_number(number): Número de pull requestexpected_head_sha(optional string): El SHA esperado de la referencia HEAD de la pull request
- Devuelve: Mensaje de éxito cuando se actualiza la rama
get_pull_request_comments
- Obtener los comentarios de revisión de una solicitud de extracción (pull request)
- Entradas:
owner(cadena): Propietario del repositoriorepo(cadena): Nombre del repositoriopull_number(número): Número de la solicitud de extracción
- Devuelve: Matriz de comentarios de revisión de la solicitud de extracción con detalles como el texto del comentario, el autor y la ubicación en el diff
get_pull_request_reviews
- Obtener las revisiones de una solicitud de extracción (pull request)
- Entradas:
owner(cadena): Propietario del repositoriorepo(cadena): Nombre del repositoriopull_number(número): Número de la solicitud de extracción
- Devuelve: Matriz de revisiones de la solicitud de extracción con detalles como el estado de la revisión (APPROVED, CHANGES_REQUESTED, etc.), el revisor y el cuerpo de la revisión
Herramientas de Webhook
Este servidor ahora admite toda la superficie REST de webhooks de repositorios y organizaciones disponible con el modelo de autenticación github_pat existente.
Herramientas de webhook de repositorio
list_repository_webhooksget_repository_webhookcreate_repository_webhookupdate_repository_webhookdelete_repository_webhookget_repository_webhook_configupdate_repository_webhook_configping_repository_webhooklist_repository_webhook_deliveriesget_repository_webhook_deliveryredeliver_repository_webhook_delivery
Herramientas de webhook de organización
list_organization_webhooksget_organization_webhookcreate_organization_webhookupdate_organization_webhookdelete_organization_webhookget_organization_webhook_configupdate_organization_webhook_configping_organization_webhooklist_organization_webhook_deliveriesget_organization_webhook_deliveryredeliver_organization_webhook_delivery
Permisos
Webhooks de repositorio:
- Los PAT clásicos normalmente necesitan
admin:repo_hook(o el más ampliorepo) para crear, editar, eliminar, hacer ping o reenviar entregas. - Los PAT de grano fino necesitan el permiso
Webhooksdel repositorio conreadpara listar/obtener ywritepara crear/actualizar/eliminar/hacer ping/reentregar.
Webhooks de organización:
- Los PAT clásicos necesitan
admin:org_hook. - Los PAT de grano fino necesitan el permiso
Webhooksde la organización conreadpara listar/obtener ywritepara crear/actualizar/eliminar/hacer ping/reentregar.
Notas de uso
- Las herramientas de creación y actualización de webhooks codifican fijamente
name: "web"internamente, que es lo que GitHub requiere. - La configuración de webhooks de repositorio admite
url,content_type,secretyinsecure_ssl. - La configuración de webhooks de organización admite esos campos más los opcionales
usernameypasswordpara autenticación básica. - GitHub recomienda encarecidamente establecer un
secretde webhook y validar las firmas de entrega en el servicio receptor. insecure_ssl: "1"deshabilita la verificación de certificados y no se recomienda su uso.
Flujo de depuración
- Use
ping_*_webhookpara activar una entrega de prueba después de crear o actualizar. - Use
list_*_webhook_deliveriespara inspeccionar intentos recientes. - Use
get_*_webhook_deliverypara inspeccionar la carga útil (payload) de la solicitud, los encabezados y la respuesta capturada por GitHub. - Use
redeliver_*_webhook_deliverypara reproducir una entrega fallida o desactualizada.
Fuera del alcance
- Este servidor no implementa un receptor HTTP entrante para entregas de webhook.
- Este servidor no realiza la validación de firmas de entrega para su endpoint de webhook.
- Los endpoints de webhook de GitHub App no están incluidos en esta fase porque esas API requieren autenticación de aplicación basada en JWT en lugar de un PAT.
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, 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 a qué repositorios le gustaría que este token tuviera acceso (Públicos, Todos o Seleccionados)
- Cree un token con el alcance
repo("Control total de repositorios privados")- Alternativamente, si solo trabaja con repositorios públicos, seleccione únicamente el alcance
public_repo
- Alternativamente, si solo trabaja con repositorios públicos, seleccione únicamente el alcance
- Copie el token generado
Uso con Claude Desktop
Para usar esto con Claude Desktop, agregue lo siguiente a su 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 es libre de usar, modificar y distribuir el software, sujeto a los términos y condiciones de la Licencia MIT. Para más detalles, consulte el archivo LICENSE en el repositorio del proyecto.