GitHub Pages MCP Server

Olá! Este é um servidor MCP do GitHub projetado para permitir que LLMs compatíveis com MCP, como o Claude, se comuniquem com o servidor e interajam com a API do GitHub para gerenciar implantações do GitHub Pages.

Documentação

GitHub Pages MCP Server

Um servidor Model Context Protocol (MCP) para gerenciar implantações do GitHub Pages. Este servidor fornece ferramentas para habilitar, configurar, implantar e gerenciar sites do GitHub Pages através do protocolo MCP.

Recursos

Este servidor MCP fornece as seguintes ferramentas:

  • enable_github_pages - Habilita o GitHub Pages para um repositório com configurações personalizadas de source e build
  • get_github_pages_info - Obtém a configuração atual do GitHub Pages e o status da implantação
  • deploy_to_github_pages - Implanta arquivos diretamente no branch do GitHub Pages
  • disable_github_pages - Desabilita o GitHub Pages para um repositório
  • update_github_pages_config - Atualiza a configuração do GitHub Pages (source, tipo de build, domínio personalizado)

Instalação

npm install
npm run build

Configuração

O servidor requer um GitHub Personal Access Token com as permissões adequadas para gerenciar o GitHub Pages.

Permissões Necessárias do Token do GitHub

Seu token do GitHub precisa dos seguintes escopos:

  • repo (Controle total de repositórios privados)
  • public_repo (Acesso a repositórios públicos)
  • workflow (Atualizar workflows do GitHub Action, se usar o tipo de build workflow)

Definindo o Token

Defina a variável de ambiente GITHUB_TOKEN:

export GITHUB_TOKEN=ghp_your_token_here

Uso

Executando o Servidor

# Build and run
npm run build
node dist/index.js

Configuração do Cliente MCP

Adicione à configuração do seu cliente MCP (por exemplo, configuração do Claude Desktop):

{
  "mcpServers": {
    "github-pages": {
      "command": "node",
      "args": ["/path/to/github-pages-mcp-server/dist/index.js"],
      "env": {
        "GITHUB_TOKEN": "your_github_token_here"
      }
    }
  }
}

Referência de Ferramentas

enable_github_pages

Habilita o GitHub Pages para um repositório.

Parâmetros:

  • owner (string, obrigatório): Proprietário do repositório (usuário ou organização)
  • repo (string, obrigatório): Nome do repositório
  • source (objeto, obrigatório):
    • branch (string, obrigatório): Branch para implantar (ex.: 'main', 'gh-pages')
    • path (string, opcional): Caminho para implantar ('/' ou '/docs')
  • build_type (string, opcional): Tipo de build - 'legacy' para Jekyll ou 'workflow' para GitHub Actions

Exemplo:

{
  "owner": "username",
  "repo": "my-website",
  "source": {
    "branch": "main",
    "path": "/docs"
  },
  "build_type": "legacy"
}

get_github_pages_info

Obtém a configuração atual do GitHub Pages e seu status.

Parâmetros:

  • owner (string, obrigatório): Proprietário do repositório
  • repo (string, obrigatório): Nome do repositório

Exemplo:

{
  "owner": "username",
  "repo": "my-website"
}

deploy_to_github_pages

Implanta arquivos em um branch do GitHub Pages criando commits.

Parâmetros:

  • owner (string, obrigatório): Proprietário do repositório
  • repo (string, obrigatório): Nome do repositório
  • branch (string, obrigatório): Branch para implantar (deve corresponder ao branch de source do GitHub Pages)
  • message (string, opcional): Mensagem do commit
  • files (array, opcional): Array de arquivos para implantar
    • path (string, obrigatório): Caminho do arquivo no repositório
    • content (string, obrigatório): Conteúdo do arquivo
    • encoding (string, opcional): 'utf-8' ou 'base64'

Exemplo:

{
  "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

Desabilita o GitHub Pages para um repositório.

Parâmetros:

  • owner (string, obrigatório): Proprietário do repositório
  • repo (string, obrigatório): Nome do repositório

Exemplo:

{
  "owner": "username",
  "repo": "my-website"
}

update_github_pages_config

Atualiza as configurações do GitHub Pages.

Parâmetros:

  • owner (string, obrigatório): Proprietário do repositório
  • repo (string, obrigatório): Nome do repositório
  • source (objeto, opcional):
    • branch (string, obrigatório): Branch para implantar
    • path (string, opcional): Caminho para implantar
  • build_type (string, opcional): 'legacy' ou 'workflow'
  • cname (string, opcional): Nome do domínio personalizado

Exemplo:

{
  "owner": "username",
  "repo": "my-website",
  "source": {
    "branch": "main",
    "path": "/"
  },
  "cname": "www.example.com"
}

Desenvolvimento

Build

npm run build

Monitorando Alterações

npm run watch

Lint

npm run lint

Lançamento de Versões

Este projeto usa GitHub Actions para criar releases automaticamente quando tags de versão são enviadas.

Criando um Release

  1. Atualize a versão em package.json
  2. Faça commit das alterações
  3. Crie e envie uma tag de versão:
git tag v1.0.0
git push origin v1.0.0

O workflow do GitHub Actions irá automaticamente:

  • Fazer o build do projeto
  • Criar um release no GitHub com a tag
  • Enviar os artefatos do release:
    • github-pages-mcp-server-dist.tar.gz - Arquivos de distribuição compilados
    • github-pages-mcp-server-full.tar.gz - Código-fonte completo (excluindo node_modules)
  • Gerar notas de release automaticamente

Requisitos

  • Node.js >= 18.0.0
  • GitHub Personal Access Token com permissões de repo

Licença

MIT