Table of Contents

MCP Integrations

The devops-plugin communicates with three external systems through MCP (Model Context Protocol) servers. Each server exposes a set of tools that agents call by name. Agents never read, construct, or cache authentication tokens — the MCP server handles auth internally.

YouTrack (mcp__youtrack__*)

YouTrack is the issue-tracking system. All pipeline state (issue stage, assignee, comments) lives in YouTrack.

Configured MCP tools

Tool Used by Purpose
mcp__youtrack__get_issue All agents Fetch full issue details including custom fields
mcp__youtrack__get_issue_comments issue-resolver, issue-clarifier Read existing comments for context
mcp__youtrack__add_issue_comment All pipeline agents Post progress updates and summaries
mcp__youtrack__update_issue issue-resolver, dispatcher, pr-reviewer Update Stage, Assignee, and other custom fields
mcp__youtrack__search_issues get-open-issue skill Query for issues matching criteria
mcp__youtrack__link_issues feature-designer, tech-leader Create subtask and blocked-by relationships

Custom fields used by the pipeline

Field Type Values
Stage enum To Do, In Progress, Done
Assignee user Any YouTrack user or Claude_Code
Git Repo text Repository name (e.g. doc, shop)
Lane enum frontend, backend, designer, docs

Gitea (mcp__gitea__*)

Gitea is the self-hosted Git platform and CI/CD system. PRs, branches, and labels are managed through the Gitea MCP server.

Configured MCP tools

Tool Used by Purpose
mcp__gitea__pull_request_write issue-resolver, pr-resolver, dispatcher Create, update, and merge PRs
mcp__gitea__pull_request_read pr-reviewer, pr-resolver Read PR details and diffs
mcp__gitea__list_pull_requests pr-reviewer, get-open-pr skill List open PRs for a repository
mcp__gitea__label_read label-pull-request skill Resolve label names to IDs
mcp__gitea__label_write label-pull-request skill Apply labels to PRs
mcp__gitea__delete_branch pr-reviewer, delete-branch skill Delete source branches after merge
mcp__gitea__search_repos dispatcher Validate that a repo exists before cloning

PR label flow

The pipeline uses two Gitea labels as inter-agent signals:

sequenceDiagram
    %% PR label flow between agents via Gitea
    participant IR as issue-resolver
    participant GT as Gitea
    participant PRv as pr-reviewer
    participant PRr as pr-resolver

    IR->>GT: open PR + apply Ready label
    PRv->>GT: read PR (Ready label present)
    PRv->>GT: approve + merge
    GT-->>PRv: merged
    PRv->>GT: delete branch

    Note over PRv,PRr: If changes needed instead:
    PRv->>GT: apply Need Changes label, leave comment
    PRr->>GT: read PR (Need Changes label)
    PRr->>GT: push fixes + apply Ready label
    PRv->>GT: re-review

Discord ($DISCORD_WEBHOOK_URL)

Discord notifications use a webhook URL stored in the $DISCORD_WEBHOOK_URL environment variable. The notify-discord skill invokes the send.sh shell script which calls the webhook via curl and jq.

Notification types

Status Colour When sent
processing Blue #3498DB Pipeline start and periodic heartbeats
done Green #00FF00 Successful completion (PR merged, Stage=Done)
failure Red #FF0000 Error, block, or max iterations exceeded

Embed fields

Every notification embed includes:

  • Repo — auto-populated from git rev-parse --show-toplevel
  • Branch — auto-populated from git rev-parse --abbrev-ref HEAD
  • Task — issue ID + title
  • Started — ISO timestamp of when the pipeline started
  • Elapsed — human-readable duration (e.g. 3m 12s)

A failed Discord notification must never block the pipeline — agents log the error and continue.

Permission allow-list

All MCP tools used by the plugin are listed in devops-plugin/settings.json. The sync-permissions skill merges these into the workspace's .claude/settings.local.json when the plugin is updated.