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óriosource(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óriorepo(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óriorepo(string, obrigatório): Nome do repositóriobranch(string, obrigatório): Branch para implantar (deve corresponder ao branch de source do GitHub Pages)message(string, opcional): Mensagem do commitfiles(array, opcional): Array de arquivos para implantarpath(string, obrigatório): Caminho do arquivo no repositóriocontent(string, obrigatório): Conteúdo do arquivoencoding(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óriorepo(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óriorepo(string, obrigatório): Nome do repositóriosource(objeto, opcional):branch(string, obrigatório): Branch para implantarpath(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
- Atualize a versão em
package.json - Faça commit das alterações
- 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 compiladosgithub-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