SECOPS

Enrich GitLab MR security labels with a policy MCP decision service

Sends each GitLab MR's changed-file set to a custom policy MCP server, applies the label and merge-gate verdict it returns.

CategorySecOps
Enginesim
Difficultyadvanced
Triggerwebhook
Steps6
Setup~25 min

How it runs

The automated pipeline, trigger to output.

  • TriggerGitLab MR opened or updatedGitLabGitLab
  • ActionCollect MR changed-file pathsGitLabGitLab
  • ActionCall policy MCP server for label + verdictCustom MCP server
  • ActionApply returned sec:: label to MRGitLabGitLab
  • LogicBranch on verdict (allow/review/deny)
  • OutputPost deny reason to security Teams channelMicrosoft Teams

What it does

This workflow externalizes the labeling decision to your own policy engine. When an MR opens or updates, it gathers the changed-file paths and calls a custom MCP policy server that owns your org's security ruleset. The server returns a label and a verdict (allow, review, deny); the flow applies the label to the MR and, on a deny verdict, posts to the security Teams channel with the policy reason.

When to use it

Use it when security policy is centrally owned and versioned outside the workflow, and you want every repo's labeling to call one source of truth instead of duplicating rules per pipeline.

How it works

  1. 1A GitLab MR webhook fires on open or update.
  2. 2The flow collects the MR's changed-file paths.
  3. 3It calls the custom policy MCP server with the paths and MR metadata.
  4. 4It applies the returned `sec::*` label to the MR.
  5. 5A branch checks the verdict.
  6. 6On a deny, it posts the policy reason and MR link to the security Teams channel.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect GitLabRepos, MRs, pipelines, registry.
  2. 2
    Connect Custom MCP serverConnect any MCP-compatible tool you own.
  3. 3
    Connect Microsoft TeamsChannels, chats, files.
  4. 4
    Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
  5. 5
    Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
  6. 6
    Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.

Run this workflow in your colony.

14-day trial. No DevOps. No Sales call. Provisioned in under a minute.