内容
# GitHub Pages 服务器
用于管理 GitHub Pages 部署的模型上下文协议(MCP)服务器。该服务器提供工具,通过 MCP 协议启用、配置、部署和管理 GitHub Pages 站点。
## 功能
该 MCP 服务器提供以下工具:
- **启用 GitHub Pages** - 为仓库启用 GitHub Pages,带有自定义源和构建设置
- **获取 GitHub Pages 信息** - 获取当前的 GitHub Pages 配置和部署状态
- **部署到 GitHub Pages** - 直接部署文件到 GitHub Pages 分支
- **禁用 GitHub Pages** - 禁用仓库的 GitHub Pages
- **更新 GitHub Pages 配置** - 更新 GitHub Pages 配置(源、构建类型、自定义域名)
## 安装
```bash
npm install
npm run build
```
## 配置
服务器需要具有适当权限的 GitHub 个人访问令牌来管理 GitHub Pages。
### 所需 GitHub 令牌权限
您的 GitHub 令牌需要以下范围:
- `repo`(私有仓库的完全控制)
- `public_repo`(访问公共仓库)
- `workflow`(更新 GitHub Action 工作流,如果使用工作流构建类型)
### 设置令牌
设置 `GITHUB_TOKEN` 环境变量:
```bash
export GITHUB_TOKEN=ghp_your_token_here
```
## 用法
### 运行服务器
```bash
# 构建并运行
npm run build
node dist/index.js
```
### MCP 客户端配置
添加到您的 MCP 客户端配置(例如,Claude Desktop 配置):
```json
{
"mcpServers": {
"github-pages": {
"command": "node",
"args": ["/path/to/github-pages-mcp-server/dist/index.js"],
"env": {
"GITHUB_TOKEN": "your_github_token_here"
}
}
}
}
```
## 工具参考
### 启用 GitHub Pages
为仓库启用 GitHub Pages。
**参数:**
- `owner`(字符串,必填):仓库所有者(用户名或组织)
- `repo`(字符串,必填):仓库名称
- `source`(对象,必填):
- `branch`(字符串,必填):部署的分支(例如,'main','gh-pages')
- `path`(字符串,可选):部署的路径('/' 或 '/docs')
- `build_type`(字符串,可选):构建类型 - 'legacy' 表示 Jekyll 或 'workflow' 表示 GitHub Actions
**示例:**
```json
{
"owner": "username",
"repo": "my-website",
"source": {
"branch": "main",
"path": "/docs"
},
"build_type": "legacy"
}
```
### 获取 GitHub Pages 信息
获取当前的 GitHub Pages 配置和状态。
**参数:**
- `owner`(字符串,必填):仓库所有者
- `repo`(字符串,必填):仓库名称
**示例:**
```json
{
"owner": "username",
"repo": "my-website"
}
```
### 部署到 GitHub Pages
通过创建提交将文件部署到 GitHub Pages 分支。
**参数:**
- `owner`(字符串,必填):仓库所有者
- `repo`(字符串,必填):仓库名称
- `branch`(字符串,必填):部署到的分支(必须与 GitHub Pages 源分支匹配)
- `message`(字符串,可选):提交消息
- `files`(数组,可选):要部署的文件数组
- `path`(字符串,必填):仓库中的文件路径
- `content`(字符串,必填):文件内容
- `encoding`(字符串,可选):'utf-8' 或 'base64'
**示例:**
```json
{
"owner": "username",
"repo": "my-website",
"branch": "gh-pages",
"message": "更新首页",
"files": [
{
"path": "index.html",
"content": "<html><body>Hello World</body></html>",
"encoding": "utf-8"
}
]
}
```
### 禁用 GitHub Pages
禁用仓库的 GitHub Pages。
**参数:**
- `owner`(字符串,必填):仓库所有者
- `repo`(字符串,必填):仓库名称
**示例:**
```json
{
"owner": "username",
"repo": "my-website"
}
```
### 更新 GitHub Pages 配置
更新 GitHub Pages 配置设置。
**参数:**
- `owner`(字符串,必填):仓库所有者
- `repo`(字符串,必填):仓库名称
- `source`(对象,可选):
- `branch`(字符串,必填):部署的分支
- `path`(字符串,可选):部署的路径
- `build_type`(字符串,可选):'legacy' 或 'workflow'
- `cname`(字符串,可选):自定义域名
**示例:**
```json
{
"owner": "username",
"repo": "my-website",
"source": {
"branch": "main",
"path": "/"
},
"cname": "www.example.com"
}
```
## 开发
### 构建
```bash
npm run build
```
### 监视更改
```bash
npm run watch
```
### 校验
```bash
npm run lint
```
## 发布
该项目使用 GitHub Actions 在推送版本标签时自动创建发布。
### 创建发布
1. 更新 `package.json` 中的版本
2. 提交更改
3. 创建并推送版本标签:
```bash
git tag v1.0.0
git push origin v1.0.0
```
GitHub Actions 工作流将自动:
- 构建项目
- 使用标签创建 GitHub 发布
- 上传发布资产:
- `github-pages-mcp-server-dist.tar.gz` - 编译的发行文件
- `github-pages-mcp-server-full.tar.gz` - 完整的源代码(不包括 node_modules)
- 自动生成发布说明
## 要求
- Node.js >= 18.0.0
- 具有 repo 权限的 GitHub 个人访问令牌
## 许可证
MIT