Docker Compose Audit

io.github.UnbearableDevPublished by GitHub account UnbearableDevv1.0.0Updated Oct 24, 2026

Security audit for docker-compose.yml — 25 checks: secrets, privileges, network, volumes, images.

The publisher's own server: audit.domains - Domain Valuation

Overview

AI-generated overview

A remote MCP server that audits docker-compose.yml files for security misconfigurations, returning severity-rated findings with remediation text and YAML fixs.

What you can do
Run a full security audit of a compose file and get a structured report with severity, affected service, description, remediation and a paste-ready YAML fix snippet, either from pasted YAML or a public HTTPS URL. Run category-specific checks for privileges and capabilities, network exposure, volume mounts and filesystem, secret hygiene, resource limits, image pinning, healthchecks and restart policy, logging, and Compose-spec hygiene. Browse the check catalog with optional category filtering.
When to use it
Useful when you want an assistant to review a docker-compose.yml before deployment, triage privilege, network, secrets or volume risks, or produce concrete fixes for a compose file you are editing.
Requirements
Remote streamable HTTP endpoint; an Apify API token sent as an Authorization bearer header is required. Audits accept pasted YAML up to 1 MB or a public HTTPS URL (5-second fetch timeout, max 3 redirects). Sessions time out after 5 minutes of inactivity.
Before you install
Usage is metered per event: each audit or category check call costs $0.02 and a catalog listing costs $0.005, so repeated calls spend money. The Apify token is a credential and should be kept private. Compose contents, or the URL you supply, are sent to the remote service. It is static analysis only and does not scan images or inspect running containers.

Installation

In SourceWeft

  1. Open Docker Compose Audit in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.UnbearableDev%2Fdocker-compose-audit/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "docker-compose-audit": {
      "type": "http",
      "url": "https://unbearable-dev--docker-compose-audit.apify.actor/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

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)

json
{  "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:

json
{  "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).

Source: README.md at commit 5bd2e2b

Tools

0
This server asks for a credential such as an API key, so SourceWeft could not read its tools without one and has not indexed them.

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

75% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.

Other Audit integrations