You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Umbrella issue for adding a GitHub Actions workflow surface to the MCP server. Currently the server has no Actions tools at all; Claude.ai cannot answer "is CI green?" / "why did the last run fail?" / "rerun the failed job" / "what did the build produce?" without web fetch.
Proposed tools
Read
Tool
Octokit
Purpose
list_workflows
rest.actions.listRepoWorkflows
Workflows defined in the repo (name, state, path, id).
Single run detail (status, conclusion, head_sha, html_url, run_attempt, triggering actor).
list_workflow_run_jobs
rest.actions.listJobsForWorkflowRun
Jobs within a run with per-step status. The "what failed?" primary lookup.
get_workflow_run_logs
rest.actions.downloadWorkflowRunLogs
Logs zip — surface as a tail-truncated text dump or per-job summary. Decide handling of binary / size cap during implementation.
list_workflow_run_artifacts
rest.actions.listWorkflowRunArtifacts
Artifacts produced by a run (name, size, expires_at, archive_download_url).
get_artifact
rest.actions.downloadArtifact
Download a single artifact zip. Same binary-handling concern as logs — likely surface as URL + size + a "preview" of small text artifacts, no auto-unzip of arbitrary binaries.
Write (gated; each call mutates repo state)
Tool
Octokit
Purpose
rerun_workflow_run
rest.actions.reRunWorkflow
Retry an entire failed run.
rerun_failed_jobs
rest.actions.reRunWorkflowFailedJobs
Retry only the failed jobs of a run.
cancel_workflow_run
rest.actions.cancelWorkflowRun
Stop an in-progress run.
trigger_workflow_dispatch
rest.actions.createWorkflowDispatch
Manually trigger a workflow_dispatch-enabled workflow with inputs.
Schema sketches (per tool, refine during implementation)
// list_workflow_runs{
...RepoTarget,workflow_id: z.union([z.number().int().positive(),z.string()]).optional().describe("Workflow filename (e.g. 'ci.yml') or numeric ID. Omit to list across all workflows."),branch: z.string().optional(),event: z.enum(["push","pull_request","workflow_dispatch","schedule","release","etc"]).optional(),status: z.enum(["queued","in_progress","completed","success","failure","cancelled","skipped"]).optional(),per_page: z.number().int().min(1).max(100).optional().default(20),}// trigger_workflow_dispatch{
...RepoTarget,workflow_id: z.union([z.number().int().positive(),z.string()]),ref: z.string().min(1).describe("Branch or tag the workflow runs against."),inputs: z.record(z.string()).optional().describe("workflow_dispatch inputs."),}
Order of implementation (suggested)
list_workflow_runs + get_workflow_run + list_workflow_run_jobs — covers "is CI green?" and "what failed?" without any write surface.
list_workflows + get_workflow_run_logs — completes the run inspection story.
rerun_workflow_run + rerun_failed_jobs — the most useful write tools.
cancel_workflow_run + trigger_workflow_dispatch — round out the write surface.
Each phase can land as its own PR.
Concerns to resolve during design
Log size: downloadWorkflowRunLogs returns a zip. Decide whether to unzip and dump the top-N lines per job, or just return URLs and rely on list_workflow_run_jobs step output to pinpoint failure.
Artifact size / binary handling: downloadArtifact returns a zip too, often containing arbitrary binary content (built apps, screenshots, etc.). Default to URL + metadata; only auto-unzip when the artifact is small and clearly text. Mirror the logs decision.
workflow_id polymorphism: string filename vs numeric id — pick one form and document it consistently across read + write.
Umbrella issue for adding a GitHub Actions workflow surface to the MCP server. Currently the server has no Actions tools at all; Claude.ai cannot answer "is CI green?" / "why did the last run fail?" / "rerun the failed job" / "what did the build produce?" without web fetch.
Proposed tools
Read
list_workflowsrest.actions.listRepoWorkflowslist_workflow_runsrest.actions.listWorkflowRunsForRepo(or per-workflow)get_workflow_runrest.actions.getWorkflowRunlist_workflow_run_jobsrest.actions.listJobsForWorkflowRunget_workflow_run_logsrest.actions.downloadWorkflowRunLogslist_workflow_run_artifactsrest.actions.listWorkflowRunArtifactsget_artifactrest.actions.downloadArtifactWrite (gated; each call mutates repo state)
rerun_workflow_runrest.actions.reRunWorkflowrerun_failed_jobsrest.actions.reRunWorkflowFailedJobscancel_workflow_runrest.actions.cancelWorkflowRuntrigger_workflow_dispatchrest.actions.createWorkflowDispatchworkflow_dispatch-enabled workflow with inputs.Schema sketches (per tool, refine during implementation)
Order of implementation (suggested)
Each phase can land as its own PR.
Concerns to resolve during design
downloadWorkflowRunLogsreturns a zip. Decide whether to unzip and dump the top-N lines per job, or just return URLs and rely onlist_workflow_run_jobsstep output to pinpoint failure.downloadArtifactreturns a zip too, often containing arbitrary binary content (built apps, screenshots, etc.). Default to URL + metadata; only auto-unzip when the artifact is small and clearly text. Mirror the logs decision.workflow_idpolymorphism: string filename vs numeric id — pick one form and document it consistently across read + write.Acceptance
Independent acceptance per phase. Each phase:
pnpm type-checkpasses.nemolize/remote-mcp-github) — both successful and failed runs exist for CI/deploy.