mcpField
D
Docker Compose Audit

Docker Compose Audit

Remote
github.com/UnbearableDevSecurity0Updated 21w ago
Repository

About Docker Compose Audit

Docker Compose Audit is an MCP server for static security checks of docker-compose.yml files. It returns severity-rated findings with remediation guidance and YAML fix snippets for developers and agents reviewing Compose configurations.

Key features

  1. 01Audit Compose YAML or HTTPS URLs
  2. 02Checks for privilege and network risks
  3. 03Checks secrets, volumes, and resource limits
  4. 04Review image and lifecycle settings
  5. 05Severity filters and categorized checks
  6. 06Findings include remediation and YAML fixes

Use cases

  1. 01Review a Compose file before deployment
  2. 02Locate exposed ports or risky mounts
  3. 03Identify hardcoded secrets and missing limits

MCP support

Exposes audit tools to MCP clients for full or category-specific checks of supplied Compose YAML or a public HTTPS URL. Findings include severity, remediation, and a YAML fix snippet.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://unbearable-dev--docker-compose-audit.apify.actor/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

All endpoints
Streamable HTTPhttps://unbearable-dev--docker-compose-audit.apify.actor/mcpAuth required

Tools

Details

From the project README

Docker Compose Security Audit

MCP server that audits docker-compose.yml files for security misconfigurations. Trivy-grade check catalog, designed for AI agents — every finding ships with a severity rating, full remediation text, and a YAML fix snippet you can paste.

Built by Unbearable Labs. Pay-per-event pricing — you only pay when an audit runs.


Available on

  • Apify Actor Store — primary, metered usage (PPE)
  • MCPize — pending submission
  • MCP.so — pending submission
  • PulseMCP — pending submission
  • Smithery — pending submission
  • Glama — pending submission

Newsletter: Unbearable TechTips Weekly · All Actors: github.com/UnbearableDev

What it does

Point any MCP-capable client (Claude Desktop, Cursor, n8n, Make, Zapier, custom agents) at this server, hand it the contents of a docker-compose.yml, and get back a structured report with:

  • Severity — high / medium / low / info
  • Service — which compose service the finding affects
  • Description — what's wrong and why it matters
  • Remediation — what to do about it
  • Fix snippet — YAML you can paste directly into the file

Tools

ToolPurpose
audit_compose(compose_yaml? | compose_url?, min_severity='low')Run all checks, return full report
check_privilege(...)Container privilege & capability issues only
check_network(...)Network exposure issues only
check_filesystem(...)Volume mount & filesystem issues only
check_secrets(...)Secret hygiene issues only
check_resources(...)Resource limit issues only
check_image_hygiene(...)Image tag / registry / pinning issues only
check_runtime_lifecycle(...)Healthcheck / restart / init issues only
check_logging(...)Logging driver / rotation issues only
check_compose_hygiene(...)Deprecated fields / Compose-spec hygiene only
list_checks(category?)Browse the full check catalog

All audit-running tools accept the same input:

  • compose_yaml (string) — paste the YAML content directly, OR
  • compose_url (string) — public HTTPS URL to fetch (e.g. GitHub raw URL)

Provide exactly one. min_severity defaults to low (drops info findings); set to medium or high to filter further.

Example response (truncated)

{
  "summary": {
    "total_findings": 14,
    "by_severity": {"high": 3, "medium": 6, "low": 5, "info": 0},
    "by_category": {"privilege": 4, "network": 3, "secrets": 2, "...": 5}
  },
  "findings": [
    {
      "id": "DCS-002",
      "category": "privilege",
      "severity": "high",
      "service": "web",
      "title": "Privileged mode enabled",
      "description": "Service 'web' has `privileged: true`...",
      "remediation": "Remove `privileged: true`. If you need specific capabilities...",
      "fix_yaml_snippet": "    # remove `privileged: true`; if needed, use cap_add or devices selectively",
      "references": ["CIS-Docker-5.4", "NIST-800-190"]
    },
    ...
  ]
}

Pricing

EventUSD
Any audit / check_* tool call$0.02
list_checks discovery call$0.005

You pay only when a tool is invoked. No subscription, no monthly minimums.

Check catalog (25 live in v1, growing toward 54)

CategoryLive checks
PrivilegeRoot user (DCS-001), privileged mode (DCS-002), dangerous capabilities (DCS-003), cap_add: ALL (DCS-004), cap_drop: ALL missing (DCS-005), no-new-privileges missing (DCS-006)
Networknetwork_mode: host (DCS-010), port bound to 0.0.0.0 (DCS-011), SSH port exposed (DCS-013), DB port exposed (DCS-014)
Filesystem/var/run/docker.sock mount (DCS-018), host root mount (DCS-019), sensitive host paths (DCS-020)
SecretsHardcoded secret in env (DCS-026), secret-pattern env without Docker secrets (DCS-027)
ResourcesNo memory limit (DCS-032), no CPU limit (DCS-033), no PID limit (DCS-034)
Image hygieneUnpinned / :latest image (DCS-037)
Runtime lifecycleNo healthcheck (DCS-043), no restart policy (DCS-044)
LoggingNo log driver (DCS-048), no log rotation (DCS-049)
Compose hygieneDeprecated version: field (DCS-051), depends_on without healthcheck condition (DCS-052)

Use list_checks to get the canonical, up-to-date catalog with IDs, severities, and titles.

Connecting from Claude Desktop

Add to your MCP config:

{
  "mcpServers": {
    "compose-audit": {
      "transport": "streamable-http",
      "url": "https://YOUR-ACTOR-URL.apify.actor/mcp"
    }
  }
}

(Replace YOUR-ACTOR-URL with the Standby URL shown on the Apify Store page after you start the Actor.)

Limits

  • YAML size: 1 MB cap per audit call
  • URL fetch: 5-second timeout, max 3 redirects, HTTPS only
  • Session timeout: 5 minutes of inactivity

What's NOT covered (yet)

Pure static analysis of the compose file only. Out of scope for this version:

  • Image vulnerability scanning (use Trivy / Grype for that)
  • Live container inspection
  • Kubernetes / Helm manifests (different surface)
  • Dockerfile-specific lint (use Hadolint)

The next 29 checks on the v1.x → v2 roadmap include build-context security, additional capability checks, secret-pattern detection in build args, and registry trust verification.

Source / contact

Issues, ideas, or false-positive reports: open an issue on the GitHub repo or email [email protected].

get the weekly newsletter(https://unbearabletechtips.beehiiv.com).

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.