cicd-aiops
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pipeline_failure_rcaA | [READ] Classify recent failed pipelines: cause + action per pipeline. The flagship pipeline RCA: pulls the project's recent failed pipelines with their failed jobs and trace tails, classifies each failed job (test-failure / dependency-network / runner-timeout / oom / script-error) from its failure_reason and trace markers, and attaches a cause and a recommended action. Every classification names its matched evidence, not a black-box verdict. Pass 'failed_pipelines' for pure analysis, or a project to pull live. Args: project: Project id or full path (required unless failed_pipelines given). limit: How many recent failed pipelines to pull (default 10). tail_lines: Trace-tail lines pulled per failed job (default 60). failed_pipelines: Injected rows {id, ref, jobs:[{name, stage, status, failureReason, traceTail}]}; skips the live pull. target: Server target name from config; omit for the default. Returns dict: {pipelinesEvaluated, classCounts, pipelines:[{pipeline, ref, headlineClass, cause, action, failedJobs:[{job, stage, class, cause, action, evidence}]}], note}. |
| runner_health_rcaA | [READ] Flag offline/stale/paused runners, long-queued jobs, tag saturation. The flagship capacity RCA: pulls the runner fleet, flags each runner that is offline, stale (no contact for stale_contact_min minutes) or paused, lists jobs queued past queue_sec, and computes per-tag saturation (queued jobs vs online unpaused runners). Every flag carries its numbers. Pass 'runners' / 'queued_jobs' for pure analysis, or a target to pull the fleet live. Args: stale_contact_min: Minutes since last contact at which a runner is stale. queue_sec: Seconds a job may wait before being flagged (default 300). saturation_ratio: Flagged queued jobs per online runner at which a tag is saturated (default 2.0). runners: Injected rows {id, description, status, paused, online, tags, contactedAt}; skips the live pull. queued_jobs: Injected rows {id, name, queuedDurationSec, createdAt, tags}. target: Server target name from config; omit for the default. Returns dict: {runnersEvaluated, flaggedRunners, longQueuedJobs, saturatedTags, thresholds, note}. |
| artifact_storage_bloat_analysisA | [READ] Rank projects by storage; estimate reclaimable artifact bytes. The flagship storage RCA: pulls project storage statistics, ranks projects by repo + artifact bytes, counts expired-but-kept artifacts and artifacts older than old_artifact_days, and estimates the reclaimable bytes per project. Every ranking carries its byte numbers. Pass 'projects' (and optionally 'artifacts_by_project') for pure analysis, or a target to pull live. Args: old_artifact_days: Age in days past which a kept artifact counts as reclaimable (default 30). limit: How many projects to pull when live (default 100). projects: Injected rows {path, repoBytes, artifactsBytes}; skips the live pull. artifacts_by_project: Injected map {project: [{file, sizeBytes, createdAt, expireAt}]}. target: Server target name from config; omit for the default. Returns dict: {projectsEvaluated, totalReclaimableBytes, thresholds, projects:[{project, repoBytes, artifactsBytes, totalBytes, expiredButKept, reclaimableBytes, action}], note}. |
| stale_work_auditA | [READ] Long-open MRs/PRs, inactive branches, protection config gaps. The flagship hygiene audit: flags open merge/pull requests idle past stale_mr_days, non-default branches with no commit for stale_branch_days, a default branch without protection, and protection rules that allow force-push. Every flag carries its numbers. Pass injected rows for pure analysis, or a project to pull live. Args: project: Project id or full path (required unless rows are injected). stale_mr_days: Days an open MR may idle before flagging (default 14). stale_branch_days: Days a branch may idle before flagging (default 90). merge_requests: Injected rows {id, title, state, updatedAt, draft}. branches: Injected rows {name, default, protected, lastCommitAt}. protections: Injected rows {branch, allowForcePush}. default_branch: Default-branch name (pulled live when omitted). target: Server target name from config; omit for the default. Returns dict: {staleMergeRequests, staleBranches, protectionGaps, counts, thresholds, note}. |
| list_artifactsA | [READ] A project's artifact inventory: files, sizes, expiry. Also reports how many artifacts are past their expiry date but still kept (the delete_artifacts candidates). 'totalBytes' / 'expiredButKept' / 'artifactsFound' count EVERY artifact found, so they stay correct when the row list is cut; 'truncated' then says the rows are a subset. On GitLab the inventory is assembled from a bounded scan of recent jobs — when 'jobScanTruncated' is true, older jobs' artifacts are NOT in this result, so treat the totals as a lower bound. Args: project: Project id or full path ('group/project' / 'owner/repo'). limit: Max artifact rows to return (default 500). target: Server target name from config; omit for the default. |
| list_pipelinesA | [READ] Recent pipelines/runs for a project, newest first. Returns {project, pipelines:[...], returned, limit, truncated}. When 'truncated' is true the server had MORE pipelines than were returned — re-run with a higher limit rather than treating the list as complete. Truncation is measured (one extra row is fetched), never guessed. Args: project: Project id or full path ('group/project' / 'owner/repo'). status: Optional status filter (e.g. failed, success, running, pending). limit: Max rows to return (default 20, max 99). target: Server target name from config; omit for the default. |
| pipeline_detailA | [READ] One pipeline/run's full detail. Args: project: Project id or full path. pipeline: Pipeline/run id (from list_pipelines). target: Server target name from config; omit for the default. |
| pipeline_jobsA | [READ] Jobs of one pipeline/run with status + failure reason. Returns {project, pipeline, jobs:[...], returned, limit, truncated}. When 'truncated' is true this pipeline had more jobs than were returned. Args: project: Project id or full path. pipeline: Pipeline/run id (from list_pipelines). limit: Max job rows to return (default 100). target: Server target name from config; omit for the default. |
| job_trace_tailA | [READ] The tail of one job's log/trace — where the failure explains itself. Returns {project, job, trace, totalLines, tailLines, returned, limit, truncated, charsTruncated}. 'truncated' true means earlier lines were dropped (the trace is only the tail — the FIRST error may be above the window, so raise tail_lines before concluding a root cause); 'charsTruncated' true means the tail itself hit the byte ceiling. Args: project: Project id or full path. job: Job id (from pipeline_jobs). tail_lines: How many trailing lines to return (default 60). target: Server target name from config; omit for the default. |
| list_projectsA | [READ] Projects/repositories the token can see, with storage numbers. Returns {projects:[...], returned, limit, truncated}; 'truncated' true means the server had more projects than were returned (measured, not guessed). Args: search: Optional name filter. limit: Max rows to return (default 50, max 99). target: Server target name from config; omit for the default. |
| project_detailA | [READ] One project's detail incl. repo/artifact byte counts. Args: project: Project id or full path ('group/project' / 'owner/repo'). target: Server target name from config; omit for the default. |
| list_merge_requestsA | [READ] Merge/pull requests for a project (default: open ones). Args: project: Project id or full path ('group/project' / 'owner/repo'). state: opened/open, merged, closed, all (platform word is translated). limit: Max rows to return (default 50, max 99); the result carries 'truncated' when the server had more. target: Server target name from config; omit for the default. |
| list_branchesA | [READ] Branches with last-commit date and protected flag. Args: project: Project id or full path. limit: Max rows to return (default 100, capped at 99); the result carries 'truncated' when the server had more. target: Server target name from config; omit for the default. |
| list_protected_branchesA | [READ] Branch-protection rules for a project (incl. force-push flags). Returns {project, protections:[...], returned, limit, truncated}. Args: project: Project id or full path. limit: Max rows to return (default 100). target: Server target name from config; omit for the default. |
| list_releasesA | [READ] Releases for a project, newest first. Args: project: Project id or full path. limit: Max rows to return (default 20, max 99); the result carries 'truncated' when the server had more. target: Server target name from config; omit for the default. |
| list_runnersA | [READ] All runners visible to the token, offline/paused first. GITLAB ONLY. Gitea has no runner-administration API, so a Gitea target raises a teaching error naming the resources that DO exist there. That is a platform-capability answer, not a broken tool: do not retry it, and do not report the server as unreachable — answer from the pipeline/job surface instead. Returns {runners:[...], returned, limit, truncated}; rows are sorted offline/paused first BEFORE the cut, so the most urgent runners survive. Args: status: Optional status filter (online, offline, paused, stale). limit: Max rows to return (default 100, capped at 99). target: Server target name from config; omit for the default. |
| runner_detailA | [READ] One runner's full detail (contacted_at, tags, paused, version). GITLAB ONLY — a Gitea target raises the same teaching error as list_runners. Args: runner: Runner id (from list_runners). target: Server target name from config; omit for the default. |
| server_versionB | [READ] CI/CD server version and revision. Args: target: Server target name from config; omit for the default. |
| current_userA | [READ] The token's identity — who the API sees you as (scope probe). Args: target: Server target name from config; omit for the default. |
| cicd_overviewA | [READ] One-shot summary: version, token identity, projects, runners. Resilient — a failing sub-call degrades to a partial summary with an 'errors' list instead of crashing. Args: target: Server target name from config; omit for the default. |
| undo_listA | [READ] List recorded, not-yet-applied undo tokens (most recent first). Each entry names the original tool, the inverse tool that Returns {undos:[...], returned, limit, truncated}. One extra row is asked for, so 'truncated' is measured — a full page is not assumed to be the end. Each entry carries Args: limit: Max rows to return (default 50, max 500). target: Unused (undo state is host-local); accepted for CLI uniformity. |
| undo_applyA | [WRITE][risk=medium] Apply a recorded undo by dispatching its inverse tool. The inverse runs through its own governed tool, so its real risk tier is recorded there. Pass dry_run=True to preview the inverse call without executing it. A token can only be applied once. Args:
undo_id: The undoId from undo_list (or an |
| retry_pipelineA | [WRITE][risk=medium] Retry a failed/canceled pipeline. Reads the pipeline first so priorState records the status it had before the retry. Irreversible (a retry is a new run) — no undo. Pass dry_run=True to preview. Args: project: Project id or full path ('group/project' / 'owner/repo'). pipeline: Pipeline id (from list_pipelines). dry_run: If True, preview without retrying. target: Server target name from config; omit for the default. |
| cancel_pipelineA | [WRITE][risk=medium] Cancel a running pipeline. Reads the pipeline first so priorState records the status it had before the cancel. Irreversible (the stopped run cannot be resumed) — no undo. Pass dry_run=True to preview. Args: project: Project id or full path. pipeline: Pipeline id (from list_pipelines). dry_run: If True, preview without canceling. target: Server target name from config; omit for the default. |
| pause_runnerA | [WRITE][risk=medium] Pause a runner; reversible (undo resumes it). Reads the runner first so the harness records its prior paused state. A paused runner stops picking up new jobs; running jobs finish. Pass dry_run=True to preview. Args: runner: Runner id (from list_runners). dry_run: If True, preview without pausing. target: Server target name from config; omit for the default. |
| resume_runnerA | [WRITE][risk=medium] Resume a paused runner; reversible (undo pauses it). Reads the runner first so the harness records its prior paused state. Pass dry_run=True to preview. Args: runner: Runner id (from list_runners). dry_run: If True, preview without resuming. target: Server target name from config; omit for the default. |
| delete_artifactsA | [WRITE][risk=high] Delete a project's artifacts (all, or older than N days). IRREVERSIBLE — reads the artifact inventory first so priorState records the file count and bytes being destroyed; no undo. Pass dry_run=True to preview (reports what would be reclaimed without deleting). Args: project: Project id or full path. older_than_days: Only delete artifacts created before this many days ago; 0 = the server's bulk delete of all eligible artifacts. dry_run: If True, preview without deleting. target: Server target name from config; omit for the default. |
| update_branch_protectionA | [WRITE][risk=medium] Protect/unprotect a branch; reversible. Reads the branch's current protection first so the harness records an undo that replays this same tool with the prior settings. Pass dry_run=True to preview. Args: project: Project id or full path. branch: Branch name (from list_branches). protect: True to protect the branch, False to remove protection. allow_force_push: Whether the protection permits force-push (default False — the safe setting). dry_run: If True, preview without changing. target: Server target name from config; omit for the default. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/AIops-tools/CICD-AIops'
If you have feedback or need assistance with the MCP directory API, please join our Discord server