GitHub Pages MCP Server
¡Hola! Este es un servidor MCP de GitHub diseñado para permitir que LLMs compatibles con MCP, como Claude, se comuniquen con el servidor e interactúen con la API de GitHub para gestionar despliegues de GitHub Pages.
Documentación
GitHub Pages MCP Server
Un servidor de Model Context Protocol (MCP) para gestionar despliegues de GitHub Pages. Este servidor proporciona herramientas para habilitar, configurar, desplegar y gestionar sitios de GitHub Pages a través del protocolo MCP.
Características
Este servidor MCP proporciona las siguientes herramientas:
- enable_github_pages - Habilita GitHub Pages para un repositorio con configuración personalizada de fuente y compilación
- get_github_pages_info - Obtiene la configuración actual de GitHub Pages y el estado del despliegue
- deploy_to_github_pages - Despliega archivos directamente a la rama de GitHub Pages
- disable_github_pages - Deshabilita GitHub Pages para un repositorio
- update_github_pages_config - Actualiza la configuración de GitHub Pages (fuente, tipo de compilación, dominio personalizado)
Instalación
npm install
npm run build
Configuración
El servidor requiere un token de acceso personal de GitHub con los permisos adecuados para gestionar GitHub Pages.
Permisos requeridos del token de GitHub
Tu token de GitHub necesita los siguientes ámbitos:
repo(Control total de repositorios privados)public_repo(Acceso a repositorios públicos)workflow(Actualizar flujos de trabajo de GitHub Actions, si se usa el tipo de compilación workflow)
Configuración del token
Establece la variable de entorno GITHUB_TOKEN:
export GITHUB_TOKEN=ghp_your_token_here
Uso
Ejecutando el servidor
# Build and run
npm run build
node dist/index.js
Configuración del cliente MCP
Añade a tu configuración del cliente MCP (p. ej., configuración de Claude Desktop):
{
"mcpServers": {
"github-pages": {
"command": "node",
"args": ["/path/to/github-pages-mcp-server/dist/index.js"],
"env": {
"GITHUB_TOKEN": "your_github_token_here"
}
}
}
}
Referencia de herramientas
enable_github_pages
Habilita GitHub Pages para un repositorio.
Parámetros:
owner(string, obligatorio): Propietario del repositorio (usuario u organización)repo(string, obligatorio): Nombre del repositoriosource(object, obligatorio):branch(string, obligatorio): Rama desde la que desplegar (p. ej., 'main', 'gh-pages')path(string, opcional): Ruta desde la que desplegar ('/' o '/docs')
build_type(string, opcional): Tipo de compilación: 'legacy' para Jekyll o 'workflow' para GitHub Actions
Ejemplo:
{
"owner": "username",
"repo": "my-website",
"source": {
"branch": "main",
"path": "/docs"
},
"build_type": "legacy"
}
get_github_pages_info
Obtiene la configuración y el estado actuales de GitHub Pages.
Parámetros:
owner(string, obligatorio): Propietario del repositoriorepo(string, obligatorio): Nombre del repositorio
Ejemplo:
{
"owner": "username",
"repo": "my-website"
}
deploy_to_github_pages
Despliega archivos a una rama de GitHub Pages creando confirmaciones (commits).
Parámetros:
owner(string, obligatorio): Propietario del repositoriorepo(string, obligatorio): Nombre del repositoriobranch(string, obligatorio): Rama a la que desplegar (debe coincidir con la rama fuente de GitHub Pages)message(string, opcional): Mensaje de confirmaciónfiles(array, opcional): Matriz de archivos a desplegarpath(string, obligatorio): Ruta del archivo en el repositoriocontent(string, obligatorio): Contenido del archivoencoding(string, opcional): 'utf-8' o 'base64'
Ejemplo:
{
"owner": "username",
"repo": "my-website",
"branch": "gh-pages",
"message": "Update homepage",
"files": [
{
"path": "index.html",
"content": "<html><body>Hello World</body></html>",
"encoding": "utf-8"
}
]
}
disable_github_pages
Deshabilita GitHub Pages para un repositorio.
Parámetros:
owner(string, obligatorio): Propietario del repositoriorepo(string, obligatorio): Nombre del repositorio
Ejemplo:
{
"owner": "username",
"repo": "my-website"
}
update_github_pages_config
Actualiza la configuración de GitHub Pages.
Parámetros:
owner(string, obligatorio): Propietario del repositoriorepo(string, obligatorio): Nombre del repositoriosource(object, opcional):branch(string, obligatorio): Rama desde la que desplegarpath(string, opcional): Ruta desde la que desplegar
build_type(string, opcional): 'legacy' o 'workflow'cname(string, opcional): Nombre de dominio personalizado
Ejemplo:
{
"owner": "username",
"repo": "my-website",
"source": {
"branch": "main",
"path": "/"
},
"cname": "www.example.com"
}
Desarrollo
Compilación
npm run build
Observando cambios
npm run watch
Linting
npm run lint
Publicación de versiones
Este proyecto utiliza GitHub Actions para crear automáticamente versiones cuando se envían etiquetas de versión.
Creando una versión
- Actualiza la versión en
package.json - Confirma los cambios
- Crea y envía una etiqueta de versión:
git tag v1.0.0
git push origin v1.0.0
El flujo de trabajo de GitHub Actions automáticamente:
- Compilará el proyecto
- Creará una versión de GitHub con la etiqueta
- Subirá los recursos de la versión:
github-pages-mcp-server-dist.tar.gz- Archivos de distribución compiladosgithub-pages-mcp-server-full.tar.gz- Código fuente completo (excluyendo node_modules)
- Generará notas de versión automáticamente
Requisitos
- Node.js >= 18.0.0
- Token de acceso personal de GitHub con permisos de repositorio
Licencia
MIT