mcpField
L
layercheck

layercheck

本地服务
github.com/CloudCorpRecords开发工具01 周前更新

关于 layercheck

layercheck 是无需 Docker daemon 或镜像构建即可分析 Dockerfile 的命令行工具和 stdio MCP 服务。它面向开发者,检查层数与大小,并识别可能浪费镜像空间或构建缓存的特定写法。

主要功能

  1. 01解析 Dockerfile 指令及续行
  2. 02统计产生镜像层的指令
  3. 03按大小排列提供的镜像层
  4. 04标记连续的 RUN 指令
  5. 05检测过早的宽泛 COPY、APT 残留和本地 ADD

适用场景

  1. 01根据提供的 docker history 大小定位大镜像层
  2. 02发现可能浪费镜像空间的 Dockerfile 写法
  3. 03检查影响缓存的 COPY 位置
  4. 04核对镜像层大小输入与指令数量

MCP 相关

提供 `analyze_dockerfile_layers` 工具,接收 Dockerfile 文本和可选的镜像层大小,并返回层数、大小排序和浪费标记等分析结果。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-layercheck": {
"command": "npx",
"args": [
"-y",
"@reneturcios/layercheck"
]
}
}
}
启动命令npx -y @reneturcios/layercheck

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@reneturcios/layercheck0.1.0
ocighcr.io/cloudcorprecords/layercheck:0.1.0

工具

1

收录的工具列表 · 更新于 1 周前

参数类型必填说明
dockerfilestring是Dockerfile 文本
layer_sizesarray否每条生成层的指令(RUN、COPY、ADD)的字节大小,按 Dockerfile 中的顺序排列,与 docker history 的报告方式一致;数组长度必须等于生成层的指令数量

详细介绍

layercheck

Dockerfile 中的每条 RUN、COPY 和 ADD 指令都会在镜像中留下一个层,而镜像大小和构建缓存问题都与这些层有关。layercheck 会将 Dockerfile 作为纯文本读取——无需 Docker 守护进程,也无需构建——并报告分析结果:

  • 列出每条指令,将 \ 续行合并,并跳过空行和 # 注释;同时标明该指令是否会生成一个层
  • 列出层数;如果你提供每层大小(如 docker history 所示),还会列出总大小和按大小从大到小排序的层,让最大的层首先呈现
  • 标记可确定的浪费,并指出触发标记的行:
    • CONSECUTIVE_RUN — 一条 RUN 紧接在另一条 RUN 后;两者可以合并为一个层
    • BROAD_COPY_EARLY — 在依赖安装步骤之前放置了 COPY . .(或 ./),每次源代码变更都会破坏其缓存
    • APT_LEFTOVER — apt-get install 所在的同一条 RUN 指令中,没有删除 /var/lib/apt/lists
    • ADD_LOCAL — 使用 ADD 处理普通本地文件,而 COPY 是更清晰的指令(远程 URL 和压缩包不受此限)

如果提供的大小数量与会生成层的指令数量不一致,layercheck 会指出这一情况,并列出两边的数量,而不会静默地错位匹配。

CLI

npx @reneturcios/layercheck analyze --dockerfile Dockerfile
npx @reneturcios/layercheck analyze --dockerfile Dockerfile --sizes sizes.json
npx @reneturcios/layercheck --version

sizes.json 是一个 JSON 数组,其中的数字表示每条会生成层的指令对应的字节数,顺序与 Dockerfile 中的指令一致。 分析结果会以一个 JSON 对象输出: {layer_count, total_size_bytes, instructions, biggest_layers, waste_flags}。

退出码:成功时为 0,运行时错误(包括文件无法读取或 sizes 数量不匹配)时为 1,用法错误时为 2。

MCP 服务

npx -y @reneturcios/layercheck mcp

MCP 客户端配置:

{
  "mcpServers": {
    "layercheck": {
      "command": "npx",
      "args": ["-y", "@reneturcios/layercheck", "mcp"]
    }
  }
}
工具
  • analyze_dockerfile_layers — 分析 Dockerfile 的层,并标记浪费的层。
    • dockerfile(字符串,必填)— Dockerfile 文本
    • layer_sizes(数字数组,可选)— 每条会生成层的指令对应的字节数,顺序与 Dockerfile 中的指令一致;数组长度必须等于会生成层的指令数量

Docker

docker run -i ghcr.io/cloudcorprecords/layercheck
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/layercheck analyze --dockerfile /w/Dockerfile

开发

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (pure local, no network)
npm run dev     # run the CLI from source

许可证

MIT — Copyright (c) 2026 Rene Turcios

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。