Docker Compose Audit

io.github.UnbearableDev由 GitHub 账号 UnbearableDev 发布v1.0.0更新于 Oct 24, 2026

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

发布方自己的服务:audit.domains - Domain Valuation

已验证Streamable HTTP可网页运行云端与基础设施开发者工具安全与监控

概览

AI 生成的概览

一个远程 MCP 服务器,用于审计 docker-compose.yml 的安全配置错误,返回带严重级别、修复说明和 YAML 修复片段的报告。

可以做什么
对 compose 文件执行完整安全审计,返回结构化报告,包含严重级别、受影响服务、问题描述、修复建议和可直接粘贴的 YAML 修复片段;输入可以是粘贴的 YAML 或公开 HTTPS 链接。按类别单独检查:权限与能力、网络暴露、卷挂载与文件系统、密钥卫生、资源限制、镜像固定、健康检查与重启策略、日志、Compose 规范卫生。浏览检查项目录,可按类别筛选。
适用场景
适合在部署前让助手审查 docker-compose.yml,排查权限、网络、密钥或卷相关风险,或为正在编辑的 compose 文件生成具体修复建议。
运行要求
远程 streamable HTTP 端点;需要 Apify API 令牌,通过 Authorization bearer 请求头发送。审计接受不超过 1 MB 的粘贴 YAML 或公开 HTTPS 链接(抓取超时 5 秒,最多 3 次重定向)。会话闲置 5 分钟后超时。
安装前请注意
按事件计费:每次审计或分类检查调用 0.02 美元,目录查询 0.005 美元,重复调用会产生费用。Apify 令牌属于凭据,应妥善保密。compose 内容或你提供的链接会发送到远程服务。仅做静态分析,不扫描镜像,也不检查运行中的容器。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Docker Compose Audit,将其添加到工作区。
  2. 连接 Authorization token 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.UnbearableDev%2Fdocker-compose-audit/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

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

来源:README.md,提交 5bd2e2b

工具

0
该服务器需要 API 密钥等凭据,因此 SourceWeft 无法在没有凭据的情况下读取其工具,也未收录。

版本历史

1
  1. v1.0.0最新Sep 16, 2026

评分

已满足适用检查项的 75%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。

其他 Audit 集成