Skip to main content
Glama

GitHub Actions MCP Server

by onemarc
README.md10.1 kB
<p align="center"> <img src="assets/gh-mcp-server-banner.png" alt="GitHub Actions MCP Server Banner" /> </p> <p align="center"> <a href="https://visitorbadge.io/status?path=https%3A%2F%2Fgithub.com%2Fonemarc%2Fgithub-actions-mcp-server"> <img src="https://api.visitorbadge.io/api/visitors?path=https%3A%2F%2Fgithub.com%2Fonemarc%2Fgithub-actions-mcp-server&label=VISITORS&labelColor=%23333337&countColor=%23dedede" /> </a> </p> # GitHub Actions MCP Server A Model Context Protocol (MCP) server that provides comprehensive GitHub Actions management capabilities. This server allows you to create, manage, monitor, and interact with GitHub Actions workflows through a standardized interface. ## Content - [Features](#features) - [Installation](#installation) - [Setup](#setup) - [Usage](#usage) - [Tools](#tools) - [Configuration File Integration](#configuration-file-integration) - [Error Handling](#error-handling) - [Troubleshooting](#troubleshooting) - [Common Use Cases](#common-use-cases) - [Contributing](#contributing) - [License](#license) ## Features ### Workflow Management - **Create Workflow**: Create new GitHub Actions workflow files - **List Workflows**: Get all workflows in a repository - **Get Workflow**: Retrieve detailed information about a specific workflow - **Get Workflow Usage**: View usage statistics and billing information ### Workflow Runs - **List Workflow Runs**: List all workflow runs with filtering options - **Get Workflow Run**: Get detailed information about a specific run - **Get Workflow Run Jobs**: View jobs and steps for a workflow run - **Trigger Workflow**: Manually trigger a workflow dispatch event - **Cancel Workflow Run**: Cancel a running workflow - **Rerun Workflow**: Re-execute a failed or completed workflow ## Installation 1. Clone or download the server files 2. Install dependencies: ```bash npm install ``` 3. Build the TypeScript code: ```bash npm run build ``` ## Setup ### Prerequisites - Node.js 18+ - GitHub Personal Access Token with appropriate permissions ### GitHub Token Setup 1. Generate a GitHub Personal Access Token: - Go to GitHub Settings → Developer settings → Personal access tokens → Fine-grained tokens ```bash https://github.com/settings/personal-access-tokens ``` - Create a token with these scopes: - `repo` (full repository access) - `workflow` (update GitHub Action workflows) - `contents:read` (read access to see GitHub Action workflows) - `contents:write` (write access GitHub Action workflows) - `actions:read` (read access to GitHub Actions) - `actions:write` (write access to GitHub Actions) 2. Set the environment variable: ```bash export GITHUB_TOKEN=your_token_here ``` #### OR 2. Navigate to your project directory and run the setup script: ```bash cd github-actions-mcp chmod +x setup.sh ./setup.sh ``` ### Required Permissions Your GitHub token needs the following permissions for the target repositories: - **Read**: List workflows, get workflow details, view runs and jobs - **Write**: Create/update workflow files, trigger workflows - **Actions**: Cancel and rerun workflows ## Usage ### Running the Server ```bash npm start ``` #### or for development ```bash npm run dev ``` ### Tools #### create_workflow Create a new GitHub Actions workflow file in a repository. **Required inputs:** - `owner`: Repository owner (username/organization) - `repo`: Repository name - `path`: Workflow file path (e.g., '.github/workflows/ci.yml') - `name`: Workflow name - should be descriptive and related to the workflow's purpose - `on`: Trigger events configuration - `jobs`: Jobs configuration **Optional inputs:** - `branch`: Target branch (default: 'main') - `commitMessage`: Commit message (default: 'Add GitHub Actions workflow') **Example:** ```json { "owner": "myorg", "repo": "myrepo", "path": ".github/workflows/ci.yml", "name": "CI Pipeline", "on": { "push": { "branches": ["main"] }, "pull_request": {} }, "jobs": { "test": { "runs-on": "ubuntu-latest", "steps": [ { "name": "Checkout code", "uses": "actions/checkout@v4" }, { "name": "Setup Node.js", "uses": "actions/setup-node@v4", "with": { "node-version": "18" } }, { "name": "Install dependencies", "run": "npm install" }, { "name": "Run tests", "run": "npm test" } ] } } } ``` #### list_workflows List all workflows in a repository. **Required inputs:** - `owner`: Repository owner - `repo`: Repository name **Optional inputs:** - `page`: Page number for pagination - `perPage`: Results per page (max 100) #### get_workflow Get detailed information about a specific workflow. **Required inputs:** - `owner`: Repository owner - `repo`: Repository name - `workflowId`: Workflow ID or filename #### get_workflow_usage Get usage statistics for a workflow (billing information). **Required inputs:** - `owner`: Repository owner - `repo`: Repository name - `workflowId`: Workflow ID or filename #### list_workflow_runs List workflow runs with extensive filtering options. **Required inputs:** - `owner`: Repository owner - `repo`: Repository name **Optional inputs:** - `workflowId`: Filter by specific workflow - `actor`: Filter by user who triggered the run - `branch`: Filter by branch - `event`: Filter by trigger event - `status`: Filter by run status - `created`: Filter by creation date (YYYY-MM-DD) - `excludePullRequests`: Exclude PR-triggered runs - `checkSuiteId`: Filter by check suite ID - `page`: Page number - `perPage`: Results per page #### get_workflow_run Get detailed information about a specific workflow run. **Required inputs:** - `owner`: Repository owner - `repo`: Repository name - `runId`: Workflow run ID #### get_workflow_run_jobs Get jobs and steps for a specific workflow run. **Required inputs:** - `owner`: Repository owner - `repo`: Repository name - `runId`: Workflow run ID **Optional inputs:** - `filter`: Filter jobs ('latest' or 'all') - `page`: Page number - `perPage`: Results per page #### trigger_workflow Manually trigger a workflow using workflow_dispatch. **Required inputs:** - `owner`: Repository owner - `repo`: Repository name - `workflowId`: Workflow ID or filename - `ref`: Branch, tag, or commit SHA to run on **Optional inputs:** - `inputs`: Input parameters for the workflow #### cancel_workflow_run Cancel a running workflow. **Required inputs:** - `owner`: Repository owner - `repo`: Repository name - `runId`: Workflow run ID #### rerun_workflow Re-run a completed workflow. **Required inputs:** - `owner`: Repository owner - `repo`: Repository name - `runId`: Workflow run ID ## Configuration File Integration You can also use this server with MCP configuration files. Add to your MCP settings: ```json { "mcp": { "inputs": [ { "type": "promptString", "id": "github-token", "description": "GitHub personal access token", "password": true } ], "servers": { "GitHub Actions": { "command": "node", "args": ["/path/to/github-actions-mcp-server/dist/index.js"], "env": { "GITHUB_TOKEN": "${input:github-token}" } } } } } ``` ## Error Handling The server provides comprehensive error handling: - **Authentication errors**: Invalid or expired GitHub tokens - **Permission errors**: Insufficient repository access - **Rate limiting**: GitHub API rate limit exceeded - **Validation errors**: Invalid input parameters - **Network errors**: Connection issues with GitHub API ## Troubleshooting ### Common Issues **Token Authentication Fails** - Verify your GitHub token is valid and not expired - Check that the token has the required scopes - Ensure the `GITHUB_TOKEN` environment variable is set **Permission Denied** - Verify your token has access to the target repository - For organization repositories, check if additional permissions are needed - Ensure your token has the `workflow` scope for creating/modifying workflows **Rate Limiting** - GitHub API has rate limits (5000 requests/hour for authenticated requests) - Implement retry logic with exponential backoff if needed - Consider using multiple tokens for high-volume operations **Workflow Creation Fails** - Check that the workflow path starts with `.github/workflows/` - Ensure the YAML syntax is valid - Verify the target branch exists ### Debug Mode For debugging, you can run the server with additional logging: ```bash DEBUG=* npm start ``` ## Common Use Cases ### 1. Monitoring Workflow Health ```bash # List recent workflow runs to check status list_workflow_runs --owner myorg --repo myapp --status completed --per_page 10 # Get details of a failed run get_workflow_run --owner myorg --repo myapp --run_id 12345 # View job details to identify failure points get_workflow_run_jobs --owner myorg --repo myapp --run_id 12345 ``` ### 2. Managing Deployments ```bash # Trigger a deployment workflow trigger_workflow --owner myorg --repo myapp --workflow_id deploy.yml --ref main --inputs '{"environment": "production"}' # Monitor the deployment list_workflow_runs --owner myorg --repo myapp --workflow_id deploy.yml --status in_progress # Cancel if needed cancel_workflow_run --owner myorg --repo myapp --run_id 67890 ``` ### 3. Workflow Maintenance ```bash # List all workflows to review list_workflows --owner myorg --repo myapp # Check workflow usage for billing get_workflow_usage --owner myorg --repo myapp --workflow_id ci.yml # Get workflow details for optimization get_workflow --owner myorg --repo myapp --workflow_id ci.yml ``` ## Contributing We welcome contributions to the GitHub Actions MCP Server! Whether you're fixing bugs, improving documentation, adding new features, or providing feedback, your help is appreciated. ## License MIT License

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/onemarc/github-actions-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server