GitHub Pages MCP Server
Hello! This is a GitHub MCP server designed to enable MCP-compatible LLMs, such as Claude, to communicate with the server and interact with the GitHub API to manage GitHub Pages deployments.
GitHub Pages MCP Server
A Model Context Protocol (MCP) server for managing GitHub Pages deployments. This server provides tools to enable, configure, deploy, and manage GitHub Pages sites through the MCP protocol.
Features
This MCP server provides the following tools:
- enable_github_pages - Enable GitHub Pages for a repository with custom source and build settings
- get_github_pages_info - Get current GitHub Pages configuration and deployment status
- deploy_to_github_pages - Deploy files directly to GitHub Pages branch
- disable_github_pages - Disable GitHub Pages for a repository
- update_github_pages_config - Update GitHub Pages configuration (source, build type, custom domain)
Installation
npm install
npm run build
Configuration
The server requires a GitHub Personal Access Token with appropriate permissions to manage GitHub Pages.
Required GitHub Token Permissions
Your GitHub token needs the following scopes:
repo(Full control of private repositories)public_repo(Access public repositories)workflow(Update GitHub Action workflows, if using workflow build type)
Setting the Token
Set the GITHUB_TOKEN environment variable:
export GITHUB_TOKEN=ghp_your_token_here
Usage
Running the Server
# Build and run
npm run build
node dist/index.js
MCP Client Configuration
Add to your MCP client configuration (e.g., Claude Desktop config):
{
"mcpServers": {
"github-pages": {
"command": "node",
"args": ["/path/to/github-pages-mcp-server/dist/index.js"],
"env": {
"GITHUB_TOKEN": "your_github_token_here"
}
}
}
}
Tools Reference
enable_github_pages
Enable GitHub Pages for a repository.
Parameters:
owner(string, required): Repository owner (username or organization)repo(string, required): Repository namesource(object, required):branch(string, required): Branch to deploy from (e.g., 'main', 'gh-pages')path(string, optional): Path to deploy from ('/' or '/docs')
build_type(string, optional): Build type - 'legacy' for Jekyll or 'workflow' for GitHub Actions
Example:
{
"owner": "username",
"repo": "my-website",
"source": {
"branch": "main",
"path": "/docs"
},
"build_type": "legacy"
}
get_github_pages_info
Get the current GitHub Pages configuration and status.
Parameters:
owner(string, required): Repository ownerrepo(string, required): Repository name
Example:
{
"owner": "username",
"repo": "my-website"
}
deploy_to_github_pages
Deploy files to a GitHub Pages branch by creating commits.
Parameters:
owner(string, required): Repository ownerrepo(string, required): Repository namebranch(string, required): Branch to deploy to (must match GitHub Pages source branch)message(string, optional): Commit messagefiles(array, optional): Array of files to deploypath(string, required): File path in repositorycontent(string, required): File contentencoding(string, optional): 'utf-8' or 'base64'
Example:
{
"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
Disable GitHub Pages for a repository.
Parameters:
owner(string, required): Repository ownerrepo(string, required): Repository name
Example:
{
"owner": "username",
"repo": "my-website"
}
update_github_pages_config
Update GitHub Pages configuration settings.
Parameters:
owner(string, required): Repository ownerrepo(string, required): Repository namesource(object, optional):branch(string, required): Branch to deploy frompath(string, optional): Path to deploy from
build_type(string, optional): 'legacy' or 'workflow'cname(string, optional): Custom domain name
Example:
{
"owner": "username",
"repo": "my-website",
"source": {
"branch": "main",
"path": "/"
},
"cname": "www.example.com"
}
Development
Building
npm run build
Watching for Changes
npm run watch
Linting
npm run lint
Releasing
This project uses GitHub Actions to automatically create releases when version tags are pushed.
Creating a Release
- Update the version in
package.json - Commit the changes
- Create and push a version tag:
git tag v1.0.0
git push origin v1.0.0
The GitHub Actions workflow will automatically:
- Build the project
- Create a GitHub release with the tag
- Upload release assets:
github-pages-mcp-server-dist.tar.gz- Compiled distribution filesgithub-pages-mcp-server-full.tar.gz- Full source code (excluding node_modules)
- Generate release notes automatically
Requirements
- Node.js >= 18.0.0
- GitHub Personal Access Token with repo permissions
License
MIT
Related Servers
Better GitLab MCP Server
An improved GitLab MCP server with bug fixes, providing access to GitLab projects, issues, and merge requests.
Git
Tools to read, search, and manipulate Git repositories
Better GitLab MCP Server
An improved GitLab MCP server with bug fixes and enhancements for accessing GitLab resources.
Git MCP Server
An MCP server that allows AI agents to interact with Git repositories, supporting a wide range of operations like clone, commit, branch, and push.
Git Mob
Integrates with the git-mob CLI to manage Git co-authors.
GIT-Pilot
A powerful GitHub automation and management tool providing a comprehensive API wrapper for GitHub operations.
Git MCP Server
An MCP server for performing Git operations.
GitHub Project Manager with Resource System
A server for GitHub project management with advanced resource management, capacity planning, and workload optimization capabilities.
GitHub
Interact with the GitHub API for file operations, repository management, and search.
GitKraken
A CLI for interacting with GitKraken APIs. Includes an MCP server via `gk mcp` that not only wraps GitKraken APIs, but also Jira, GitHub, GitLab, and more.