GitHub动作触发器MCP服务器
用于GitHub Actions集成的模型上下文协议服务器。
概述
这是一个基于TypeScript的MCP服务器,专为GitHub Actions集成而设计。它提供以下功能:
- 从存储库获取可用GitHub操作的工具
- 用于获取特定GitHub操作详细信息的工具
- 用于触发GitHub工作流调度事件的工具
- 从GitHub存储库获取最新版本的工具
- 用于在拉取请求时启用自动合并的工具
特性
工具
get_github_actions-获取存储库的可用GitHub操作
- 所需参数: owner (存储库所有者、用户名或组织)以及 repo (存储库名称) - 可选参数: token (GitHub个人访问令牌,用于访问私有存储库或提高API速率限制) - 返回包含工作流ID、名称、路径、状态、URL和内容的JSON数据
get_github_action-获取特定GitHub Action的详细信息,包括输入及其要求
- 所需参数: owner (行动负责人、用户名或组织)和 repo (操作的存储库名称) - 可选参数: - path:操作定义文件的路径(默认:'action.yml') - ref:Git引用(分支、标记或提交SHA,默认值:'main') - token:GitHub个人访问令牌(可选) - 返回有关操作的详细信息,包括名称、描述、作者、输入(以及是否需要)等。
trigger_github_action-触发GitHub工作流并传递相关参数
- 所需参数: - owner:存储库所有者(用户名或组织) - repo:存储库名称 - workflow_id:要触发的工作流的ID或文件名 - 可选参数: - ref:触发工作流的git引用(默认值:'main') - inputs:传递给工作流的输入(必须与工作流定义的输入匹配) - token:GitHub个人访问令牌(必须具有工作流范围) - 返回工作流运行信息,包括状态、URL等。
get_github_release-从GitHub存储库获取最新2个版本
- 所需参数: owner (存储库所有者、用户名或组织)以及 repo (存储库名称) - 可选参数: token (GitHub个人访问令牌,可选) - 返回有关最新2个版本的信息
enable_pull_request_automerge-为特定的拉取请求启用自动合并
- 所需参数: - owner:存储库所有者(用户名或组织) - repo:存储库名称 - pull_number:拉取请求号 - 可选参数: - merge_method:要使用的合并方法(merge、SQUASH或REBASE,默认值:merge) - token:GitHub个人访问令牌(可选) - 返回成功状态和拉取请求信息 - 注意:当所有必需的检查通过并获得批准时,这将自动合并PR
安装
推荐安装:使用npx
安装和使用最简单的方法是通过 npx 无需手动本地安装,即可在Claude Desktop配置文件中执行命令:
{
"mcpServers": {
"github-action-trigger-mcp": {
"command": "npx",
"args": [
"-y",
"@nextdrive/github-action-trigger-mcp"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your_github_token_here"
}
}
}
}这种方法的好处:
- 无需安装本地软件包
- 自动使用最新版本
- 设置一次即可使用
- 内置GitHub令牌配置
本地安装
如果您更喜欢手动安装,请按照以下步骤操作:
- 安装软件包:
npm install -g @nextdrive/github-action-trigger-mcp- 在Claude Desktop配置中使用:
在MacOS上: ~/Library/Application Support/Claude/claude_desktop_config.json 在Windows上: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"github-action-trigger-mcp": {
"command": "@nextdrive/github-action-trigger-mcp",
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your_github_token_here"
}
}
}
}GitHub令牌配置
要访问GitHub API,特别是对于私有存储库或工作流触发器,您需要配置GitHub个人访问令牌。有几种方法可以做到这一点:
方法1(推荐):在Claude Desktop中直接配置
通过以下方式直接在Claude Desktop配置文件中设置令牌 env 字段:
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your_github_token_here"
}方法2:全局环境变量
设置 GITHUB_TOKEN 环境变量:
# On Linux/MacOS
export GITHUB_TOKEN=your_github_token
# On Windows
set GITHUB_TOKEN=your_github_token方法3:本地配置文件
编辑配置文件:
~/.nextdrive-github-action-trigger-mcp/config.json设置您的GitHub令牌:
{
"githubToken": "your_github_token"
}服务器首次启动时会自动创建此配置文件的模板。
发展
安装依赖项:
npm install构建服务器:
npm run build对于开发过程中的自动重建:
npm run watch调试
使用MCP检查器进行调试:
npm run inspector检查器将提供一个URL来访问浏览器中的调试工具。
发布到npm
如果你想将这个包发布到npm,请按照以下步骤操作:
- 请确保您已登录到npm并有权发布到
@nextdrive组织:
npm login- 构建项目:
npm run build- 发布到npm(默认情况下,组织范围的包是私有的,使用
--access public公开):
npm publish --access public发布后,任何人都可以使用 npx @nextdrive/github-action-trigger-mcp 命令或在Claude Desktop配置中使用它。
使用示例
获取GitHub操作列表
使用 get_github_actions 获取存储库GitHub操作的工具:
{
"owner": "username-or-org",
"repo": "repository-name"
}如果配置了默认令牌,则在访问私有存储库时将自动使用它。
示例响应:
[
{
"id": 12345678,
"name": "CI",
"path": ".github/workflows/ci.yml",
"state": "active",
"url": "https://github.com/owner/repo/actions/workflows/ci.yml",
"content": "name: CI\n\non:\n push:\n branches: [ main ]\n pull_request:\n branches: [ main ]\n\njobs:\n build:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v2\n - name: Setup Node.js\n uses: actions/setup-node@v2\n with:\n node-version: 16.x\n - name: Install dependencies\n run: npm ci\n - name: Build\n run: npm run build\n - name: Test\n run: npm test\n"
}
]获取详细的GitHub操作信息
使用 get_github_action 获取特定操作详细信息的工具:
{
"owner": "actions",
"repo": "checkout",
"ref": "v4"
}示例响应:
{
"name": "Checkout",
"description": "Check out a Git repository at a particular version",
"author": "GitHub",
"inputs": [
{
"name": "repository",
"description": "Repository name with owner. For example, actions/checkout",
"default": "",
"required": false
},
{
"name": "ref",
"description": "The branch, tag or SHA to checkout.",
"default": "",
"required": false
}
],
"runs": {
"using": "node20",
"main": "dist/index.js"
}
}触发GitHub工作流
使用 trigger_github_action 触发GitHub工作流的工具:
{
"owner": "username-or-org",
"repo": "repository-name",
"workflow_id": "ci.yml",
"inputs": {
"deploy_environment": "production",
"debug_enabled": "true"
}
}示例响应:
{
"success": true,
"message": "Workflow dispatch event triggered successfully",
"run": {
"id": 12345678,
"url": "https://github.com/owner/repo/actions/runs/12345678",
"status": "queued",
"conclusion": null,
"created_at": "2025-03-19T06:45:12Z",
"triggered_by": "API"
}
}注意:触发工作流需要:
- 必须配置工作流以支持
workflow_dispatch事件 - GitHub令牌必须具有
workflow范围许可 - 传递的输入参数必须与工作流中定义的参数匹配
获取最新版本
使用 get_github_release 从存储库获取最新2个版本的工具:
{
"owner": "username-or-org",
"repo": "repository-name"
}示例响应:
{
"count": 2,
"releases": [
{
"id": 12345678,
"name": "v1.0.0",
"tag_name": "v1.0.0",
"published_at": "2025-03-15T10:00:00Z",
"draft": false,
"prerelease": false,
"html_url": "https://github.com/owner/repo/releases/tag/v1.0.0",
"body": "Release notes for version 1.0.0",
"assets": [
{
"name": "app-v1.0.0.zip",
"size": 1234567,
"download_count": 42,
"browser_download_url": "https://github.com/owner/repo/releases/download/v1.0.0/app-v1.0.0.zip",
"created_at": "2025-03-15T10:05:00Z",
"updated_at": "2025-03-15T10:05:00Z"
}
],
"author": {
"login": "username",
"html_url": "https://github.com/username"
}
},
{
"id": 87654321,
"name": "v0.9.0",
"tag_name": "v0.9.0",
"published_at": "2025-03-01T10:00:00Z",
"draft": false,
"prerelease": true,
"html_url": "https://github.com/owner/repo/releases/tag/v0.9.0",
"body": "Pre-release notes for version 0.9.0",
"assets": [],
"author": {
"login": "username",
"html_url": "https://github.com/username"
}
}
]
}启用Pull请求的自动合并
使用 enable_pull_request_automerge 为特定拉取请求启用自动合并的工具:
{
"owner": "username-or-org",
"repo": "repository-name",
"pull_number": 123,
"merge_method": "SQUASH"
}示例响应:
{
"success": true,
"message": "Auto-merge enabled successfully",
"pullRequest": {
"id": "PR_kwDOABCD123_456",
"title": "Add new feature",
"number": 123,
"autoMergeEnabled": true,
"enabledAt": "2025-08-21T03:00:00Z",
"mergeMethod": "SQUASH"
}
}注意:启用自动合并需要:
- 存储库必须在设置中启用自动合并
- GitHub令牌必须具有对存储库的写入权限
- 拉取请求必须打开,并且尚未启用自动合并
- 启用后,当所有必需的状态检查通过并获得批准时,PR将自动合并
