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 repositorio
  • source (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 repositorio
  • repo (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 repositorio
  • repo (string, obligatorio): Nombre del repositorio
  • branch (string, obligatorio): Rama a la que desplegar (debe coincidir con la rama fuente de GitHub Pages)
  • message (string, opcional): Mensaje de confirmación
  • files (array, opcional): Matriz de archivos a desplegar
    • path (string, obligatorio): Ruta del archivo en el repositorio
    • content (string, obligatorio): Contenido del archivo
    • encoding (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 repositorio
  • repo (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 repositorio
  • repo (string, obligatorio): Nombre del repositorio
  • source (object, opcional):
    • branch (string, obligatorio): Rama desde la que desplegar
    • path (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

  1. Actualiza la versión en package.json
  2. Confirma los cambios
  3. 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 compilados
    • github-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