MCP server for GitHub Actions — view workflow runs, read logs, re-run failed jobs, and manage CI/CD from your IDE
This server has decent naming and parameter coverage, but suffers from weak output schema documentation and sparse error handling. All 9 tools are explicitly registered with Zod schemas and descriptions, which is a strong foundation. However, the output structure is undocumented, tools return generic {content: [{type: 'text', text}]} without specifying what fields or structure the agent should expect. Descriptions are concise but sometimes too brief to guide LLM selection. Parameters are well-typed with Zod but some lack actionable constraints (enums, ranges, format hints). Error messages are minimal, most failures would surface as generic HTTP errors with no recovery guidance. The server lacks pagination support despite listing tools that could return large result sets (list_workflows, list_runs, list_artifacts). No idempotency hints or confirmation patterns for destructive operations (rerun_workflow, cancel_run, trigger_workflow).
Cancel a workflow run that is in progress or queued.
Get details of a specific workflow run.
Get logs URL for a workflow run. GitHub returns a redirect to a zip file.
List artifacts produced by a workflow run.
List workflow runs for a repository. Optionally filter by workflow or status.
List all workflow files in a GitHub repository.
Output schema undocumented. Tools return generic {content: [{type: 'text', text}]} but LLMs cannot predict the text structure (field names, formatting, presence of IDs). This forces post-processing guesswork and breaks tool chaining.
No pagination for list tools. list_workflows, list_runs, list_artifacts return all results without limit or cursor. Large repos will return unbounded lists, exhausting context window and degrading LLM reasoning.
Destructive operations lack confirmation or dry-run. rerun_workflow, cancel_run, trigger_workflow modify state without idempotency hints or confirmation steps. Agents can accidentally cancel critical runs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 58 | - | v1 |
Re-run only the failed jobs from a workflow run.
Re-run a complete workflow run.
Trigger a workflow run via workflow_dispatch. Requires a workflow with workflow_dispatch enabled.
Error messages are generic. Failures (auth, not found, conflict) surface as raw HTTP errors with no recovery guidance. LLM cannot determine if it should retry, ask user, or try a different tool.
Descriptions for destructive tools are minimal. 'Re-run a complete workflow run' does not explain consequences, idempotency, or prerequisites. LLMs need explicit guidance on when/why to call them.
No input validation or constraint hints for optional parameters. status in list_runs accepts free-form string, no enum of valid values (completed, in_progress, queued, etc.). workflow_id in trigger_workflow could be ID or filename but no format guidance.
Response does not include chaining IDs. list_runs returns run details as text but no structured run_id, workflow_id fields. get_run returns text representation, not JSON with typed fields. This breaks downstream tool chains (e.g. agent cannot easily extract IDs to pass to get_run_logs).