Manage GitHub Actions Workflows
MCP server for GitHub Actions - list, trigger, cancel, and rerun workflows and inspect their runs and jobs.
Why it matters
Empower AI assistants to fully manage GitHub Actions workflows, enabling seamless triggering, monitoring, and analysis of workflow executions directly from your AI environment.
Outcomes
What it gets done
List and retrieve details of GitHub Actions workflows.
Trigger, cancel, and rerun GitHub Actions workflows.
Monitor workflow runs and analyze job execution details.
Authenticate securely using GitHub Personal Access Tokens.
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/vb-github-actions | bash Capabilities
Tools your agent gets
List workflows in a GitHub repository with pagination support
Get details of a specific workflow by ID or file name
Get workflow usage statistics, including billable minutes
List all workflow runs for a repository or specific workflow with filtering
Get details of a specific workflow run
Get jobs for a specific workflow run with filtering and pagination
Trigger a workflow with optional input parameters
Cancel a running workflow
Rerun a workflow
Overview
GitHub Actions MCP Server
An MCP server for the GitHub Actions API - listing, triggering, cancelling, and rerunning workflows, plus run and job inspection and usage statistics. Use it when an AI assistant needs to operate GitHub Actions workflows directly, not for general GitHub repository management.
What it does
This MCP server exposes the GitHub Actions API to AI assistants, enabling complete workflow management - listing, viewing, triggering, cancelling, and rerunning workflows - alongside workflow-run analysis, comprehensive error handling with detailed messages, flexible type validation that tolerates GitHub API response variations, and a security-focused design with timeout handling, rate limiting, and strict URL validation.
When to use - and when NOT to
Use it when an AI assistant needs to inspect or operate GitHub Actions workflows directly - listing workflows, checking a workflow's usage statistics, triggering or rerunning a run with specific inputs, or pulling job-level details from a run. It is not a general GitHub repository management server - it is scoped specifically to the Actions API surface (workflows, runs, and jobs). The source repository itself carries an archive notice: it will be archived once the official GitHub MCP server finishes adding native Actions support (tracked at github/github-mcp-server#491), so teams adopting it now should plan to migrate later.
Capabilities
Nine tools are exposed: list_workflows (paginated list of workflows in a repository), get_workflow (details of a specific workflow by ID or filename), get_workflow_usage (usage statistics including billable minutes), list_workflow_runs (runs filtered by actor, branch, event, status, creation date, or check-suite ID), get_workflow_run and get_workflow_run_jobs (details and jobs for a specific run), trigger_workflow (dispatches a run on a given ref with optional input parameters), cancel_workflow_run, and rerun_workflow.
How to install
Build the server, then register it with your MCP client. On Unix/Linux/macOS:
git clone https://github.com/ko1ynnky/github-actions-mcp-server.git
cd github-actions-mcp-server
npm install
npm run build
Windows uses npm run build:win or the included run-server.bat batch file. Then add it to your client's MCP config, for example Claude Desktop's claude_desktop_config.json:
{
"mcpServers": {
"github-actions": {
"command": "node",
"args": [
"<path-to-mcp-server>/dist/index.js"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
Codeium and Windsurf use the same configuration format, added to their own MCP config file. A GitHub Personal Access Token is required for full functionality and to avoid rate limiting.
Usage examples show calling the tools programmatically, such as listing workflows for a repository or triggering a specific workflow file on a given branch with environment inputs:
const result = await triggerWorkflow({
owner: "your-username",
repo: "your-repository",
workflowId: "ci.yml",
ref: "main",
inputs: {
environment: "production"
}
});
Troubleshooting guidance covers three common issues: authentication errors (verify the GitHub token has correct permissions and is set as an environment variable), rate limiting (the server implements its own rate limiting to avoid hitting GitHub API limits, so reduce request frequency if you still hit errors), and type-validation errors (GitHub API responses can differ from the expected schema, so the server applies flexible validation, and persistent errors should be filed as an issue). The server is licensed under the MIT License.
Who it's for
Developers using Claude Desktop, Codeium, or Windsurf who want their AI assistant to list, trigger, monitor, or manage GitHub Actions workflows directly, rather than switching to the Actions dashboard.
Source README
GitHub Actions MCP Server
⚠️ Archive Notice: This repository will be archived soon as the official GitHub MCP server is adding Actions support. See github/github-mcp-server#491 for details on the official implementation.
MCP Server for the GitHub Actions API, enabling AI assistants to manage and operate GitHub Actions workflows. Compatible with multiple AI coding assistants including Claude Desktop, Codeium, and Windsurf.
Features
- Complete Workflow Management: List, view, trigger, cancel, and rerun workflows
- Workflow Run Analysis: Get detailed information about workflow runs and their jobs
- Comprehensive Error Handling: Clear error messages with enhanced details
- Flexible Type Validation: Robust type checking with graceful handling of API variations
- Security-Focused Design: Timeout handling, rate limiting, and strict URL validation
Tools
list_workflows- List workflows in a GitHub repository
- Inputs:
owner(string): Repository owner (username or organization)repo(string): Repository namepage(optional number): Page number for paginationperPage(optional number): Results per page (max 100)
- Returns: List of workflows in the repository
get_workflow- Get details of a specific workflow
- Inputs:
owner(string): Repository owner (username or organization)repo(string): Repository nameworkflowId(string or number): The ID of the workflow or filename
- Returns: Detailed information about the workflow
get_workflow_usage- Get usage statistics of a workflow
- Inputs:
owner(string): Repository owner (username or organization)repo(string): Repository nameworkflowId(string or number): The ID of the workflow or filename
- Returns: Usage statistics including billable minutes
list_workflow_runs- List all workflow runs for a repository or a specific workflow
- Inputs:
owner(string): Repository owner (username or organization)repo(string): Repository nameworkflowId(optional string or number): The ID of the workflow or filenameactor(optional string): Filter by user who triggered the workflowbranch(optional string): Filter by branchevent(optional string): Filter by event typestatus(optional string): Filter by statuscreated(optional string): Filter by creation date (YYYY-MM-DD)excludePullRequests(optional boolean): Exclude PR-triggered runscheckSuiteId(optional number): Filter by check suite IDpage(optional number): Page number for paginationperPage(optional number): Results per page (max 100)
- Returns: List of workflow runs matching the criteria
get_workflow_run- Get details of a specific workflow run
- Inputs:
owner(string): Repository owner (username or organization)repo(string): Repository namerunId(number): The ID of the workflow run
- Returns: Detailed information about the specific workflow run
get_workflow_run_jobs- Get jobs for a specific workflow run
- Inputs:
owner(string): Repository owner (username or organization)repo(string): Repository namerunId(number): The ID of the workflow runfilter(optional string): Filter jobs by completion status ('latest', 'all')page(optional number): Page number for paginationperPage(optional number): Results per page (max 100)
- Returns: List of jobs in the workflow run
trigger_workflow- Trigger a workflow run
- Inputs:
owner(string): Repository owner (username or organization)repo(string): Repository nameworkflowId(string or number): The ID of the workflow or filenameref(string): The reference to run the workflow on (branch, tag, or SHA)inputs(optional object): Input parameters for the workflow
- Returns: Information about the triggered workflow run
cancel_workflow_run- Cancel a workflow run
- Inputs:
owner(string): Repository owner (username or organization)repo(string): Repository namerunId(number): The ID of the workflow run
- Returns: Status of the cancellation operation
rerun_workflow- Re-run a workflow run
- Inputs:
owner(string): Repository owner (username or organization)repo(string): Repository namerunId(number): The ID of the workflow run
- Returns: Status of the re-run operation
Usage with AI Coding Assistants
This MCP server is compatible with multiple AI coding assistants including Claude Desktop, Codeium, and Windsurf.
Claude Desktop
First, make sure you have built the project (see Build section below). Then, add the following to your claude_desktop_config.json:
{
"mcpServers": {
"github-actions": {
"command": "node",
"args": [
"<path-to-mcp-server>/dist/index.js"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
Codeium
Add the following configuration to your Codeium MCP config file (typically at ~/.codeium/windsurf/mcp_config.json on Unix-based systems or %USERPROFILE%\.codeium\windsurf\mcp_config.json on Windows):
{
"mcpServers": {
"github-actions": {
"command": "node",
"args": [
"<path-to-mcp-server>/dist/index.js"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
Windsurf
Windsurf uses the same configuration format as Codeium. Add the server to your Windsurf MCP configuration as shown above for Codeium.
Build
Unix/Linux/macOS
Clone the repository and build:
git clone https://github.com/ko1ynnky/github-actions-mcp-server.git
cd github-actions-mcp-server
npm install
npm run build
Windows
For Windows systems, use the Windows-specific build command:
git clone https://github.com/ko1ynnky/github-actions-mcp-server.git
cd github-actions-mcp-server
npm install
npm run build:win
Alternatively, you can use the included batch file:
run-server.bat [optional-github-token]
This will create the necessary files in the dist directory that you'll need to run the MCP server.
Windows-Specific Instructions
Prerequisites
- Node.js (v14 or higher)
- npm (v6 or higher)
Running the Server on Windows
Using the batch file (simplest method):
run-server.bat [optional-github-token]This will check if the build exists, build if needed, and start the server.
Using npm directly:
npm run start
Setting GitHub Personal Access Token on Windows
For full functionality and to avoid rate limiting, you need to set your GitHub Personal Access Token.
Options:
Pass it as a parameter to the batch file:
run-server.bat your_github_token_hereSet it as an environment variable:
set GITHUB_PERSONAL_ACCESS_TOKEN=your_github_token_here npm run start
Troubleshooting Windows Issues
If you encounter issues:
Build errors: Make sure TypeScript is installed correctly.
npm install -g typescriptPermission issues: Ensure you're running the commands in a command prompt with appropriate permissions.
Node.js errors: Verify you're using a compatible Node.js version.
node --version
Usage Examples
List workflows in a repository:
const result = await listWorkflows({
owner: "your-username",
repo: "your-repository"
});
Trigger a workflow:
const result = await triggerWorkflow({
owner: "your-username",
repo: "your-repository",
workflowId: "ci.yml",
ref: "main",
inputs: {
environment: "production"
}
});
Troubleshooting
Common Issues
Authentication Errors:
- Ensure your GitHub token has the correct permissions
- Check that the token is correctly set as an environment variable
Rate Limiting:
- The server implements rate limiting to avoid hitting GitHub API limits
- If you encounter rate limit errors, reduce the frequency of requests
Type Validation Errors:
- GitHub API responses might sometimes differ from expected schemas
- The server implements flexible validation to handle most variations
- If you encounter persistent errors, please open an issue
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.
