Custom MCP server that triggers GitHub Actions workflows and waits for completion with progress notifications to prevent LLM timeout.
run_workflow_and_wait: Triggers workflow, polls until done, returns result with failed job logsget_workflow_status: Get current status of any workflow run- Progress notifications every 15s keep the LLM connection alive during long-running workflows
cargo build --releaseSet your GitHub token:
export GITHUB_TOKEN=ghp_xxx
# or
export GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxx{
"mcpServers": {
"github-actions": {
"command": "/path/to/github-actions-mcp",
"env": {
"GITHUB_TOKEN": "ghp_xxx"
}
}
}
}Triggers a workflow and waits for completion (up to 30 min by default).
{
"owner": "myorg",
"repo": "myrepo",
"workflow": "ci.yml",
"git_ref": "main",
"inputs": {"deploy": "true"},
"timeout_minutes": 60
}Returns:
{
"status": "completed",
"conclusion": "success",
"run_id": 12345,
"url": "https://github.com/...",
"failed_logs": null
}On failure, failed_logs contains the last 100 lines from each failed job.
Get status of an existing run:
{
"owner": "myorg",
"repo": "myrepo",
"run_id": 12345
}The server sends MCP progress notifications every 15 seconds while polling:
{
"method": "notifications/progress",
"params": {
"progressToken": 12345,
"progress": 4,
"message": "Status: in_progress (60s)"
}
}This keeps the LLM client connection alive during long-running workflows.