workflowlint-mcp
Audits GitHub Actions workflow files: parses workflow YAML with exact line numbers (including inside multi-line run: blocks), models jobs, steps and triggers, detects ${{ }} expression injection risks with a rule engine supporting ignore comments, checks action pinning/supply-chain risk and produces pin plans (with optional resolution of action refs to SHAs), computes effective token permissions at workflow and job level, and validates cron schedules including next-run times and the day-of-month/day-of-week OR rule, returning actionable findings with line numbers and fixes.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
workflowlint-mcp, The Hard Way
Build an MCP server that lets an AI audit GitHub Actions workflows, from "what does on: parse to?" to a
tested stdio server. No actionlint, no framework doing the hard part for you.
At the end you will have built a small version of
workflowlint-mcp yourself, and you will understand the
things most workflow linters get wrong: YAML (PyYAML turns on: into True), line numbers (a finding
inside run: | must point at the real line), injection (${{ }} is text substitution, not a variable),
supply chain (what pinning to a SHA does and does not buy you), permissions (job-level replaces
workflow-level), and cron (the day-of-month / day-of-week rule).
Why This Exists
Most "workflow linter" write-ups are a list of regexes over raw text. That breaks on the first file that
uses an anchor, a multi-line run:, or ${{ format('}}') }}. A linter an AI relies on has to be right about
structure first, point at the exact line, and stay quiet on good files: every false positive teaches the
model to ignore you.
Related MCP server: actions-guard-mcp
Who This Is For
Developers who built a hello-world MCP server and want a real one
Anyone who writes workflows and wants to know why the usual advice (pin SHAs, set permissions, use
env:) is the usual adviceAnyone curious how GitHub cron really works
Prerequisites: Python and a rough idea of what a workflow file looks like. Nothing here talks to GitHub except one module that talks to a fake GitHub on localhost.
pip install -r requirements.txt
python verify.py # runs every module and checks itModules
# | Module | What You'll Build |
01 | Why | |
02 | Jobs, steps, triggers, and exact line numbers inside | |
03 | Finding | |
04 | The pin rule, an offline pin plan, and an online resolver that can only talk to one host | |
05 | Effective token permissions, inferring what a job needs, and admitting when the inference is partial | |
06 | A cron implementation, next run times, and the OR rule, cross-checked against brute force | |
07 | A sandboxed stdio server, |
The code lives in minilint/, one file per concern, and grows as you go. Each module has a
main.py that exercises that stage and checks its own claims with assert; verify.py runs them all.
Design rules that run through every module
Parse, then judge. Rules look at parsed nodes, never at raw text.
Every finding has a line number and a concrete fix. "Consider improving security" is not a finding.
Names, never values. Report the secret's name; the value stays out of the model's context.
Stay quiet on good files. A corpus of good workflows with zero findings is part of the test suite.
Static means static. Nothing is run, and the network is off unless you ask for it.
Fail loudly and usefully. Errors say what to do next.
This server cannot be deployed
Maintenance
Related MCP Connectors
Audit GitHub Actions workflows for script injection, unpinned actions and missing permissions.
GitHub Actions workflow security audit - 21 checks: pinning, permissions, secrets, injection.
GitHub security scanning, code audit, and workflow automation for repositories.
Scan GitHub-hosted AI skills for vulnerabilities: prompt injection, malware, OWASP LLM Top 10.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAudits GitHub Actions workflow files for supply-chain risks like script injection, leaked tokens, unpinned actions, and broad permissions.-
- AlicenseAqualityCmaintenanceScans GitHub Actions workflow files for dangerous triggers, template injection, unpinned actions, excessive permissions, and secrets in shell commands before they are committed, exposing the checks as MCP tools for agents.2MIT
- AlicenseAqualityCmaintenanceEnables reviewing GitHub Actions workflows for outdated actions, deprecated Node runtimes, retired runners, deprecated commands, and security risks, with file, line, and fix for each finding.31MIT
- AlicenseNot gradedqualityCmaintenanceEnables scanning GitHub Actions workflow YAML for real-world security vulnerabilities such as script injection from attacker-controlled expressions, unpinned third-party actions, missing permissions blocks, and dangerous pull_request_target checkouts. It returns each finding with its exact location, an explanation of the risk, and a concrete remediation.MIT