关于 Dockerfile Lint
Dockerfile Lint 是面向开发者的 Dockerfile 静态分析 MCP 服务,可解析构建指令并报告生产镜像相关问题,不会调用 Docker。
主要功能
- 01检查安全与镜像构建规则
- 02解析阶段和指令位置
- 03说明规则严重性及修复方法
- 04读取文件或传入内容
适用场景
- 01提交前检查 Dockerfile
- 02审查镜像构建安全实践
- 03了解报告中的规则
MCP 相关
通过 stdio 向 MCP 客户端提供 `lint_dockerfile`、`parse_dockerfile` 和 `explain_rule` 工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm ghcr.io/basitalisandhu/mcp-dockerfile-lint:0.3.0本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/basitalisandhu/mcp-dockerfile-lint:0.3.0stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
dockerfile-lint MCP 服务
解析 Dockerfile(注释、escape 指令、续行、heredoc、多阶段构建),并检查那些会影响生产镜像的错误。仅进行静态分析;绝不会调用 Docker。
属于 dev-mcp-servers 的一部分。仅支持 Stdio 传输;服务绝不会开放端口。
工具
| 工具 | 输入 | 返回内容 |
|---|---|---|
lint_dockerfile | path 或 content、ignore? | 问题列表,包含规则 ID、严重程度、行号和修复建议:最终阶段以 root 身份运行、使用 latest 或缺少标签、没有摘要、类似凭据的 ENV/ARG 名称和值、缺少 HEALTHCHECK、apt-get 未清理或未使用 --no-install-recommends、apt-get upgrade、apk add 未使用 --no-cache、pip 未使用 --no-cache-dir、对普通文件或 URL 使用 ADD、`curl |
parse_dockerfile | path 或 content | 包含行范围和阶段索引的指令、包含 AS 名称和基础镜像的阶段、转义字符。 |
explain_rule | rule | 单条规则的严重程度、描述和修复建议。 |
安装
Claude Code:
claude mcp add dockerfile-lint -- docker run --rm -i -v "$PWD:/work:ro" ghcr.io/basitalisandhu/mcp-dockerfile-lint:0.2.2
添加 -s user,即可在每个项目中使用。任何能读取 .mcp.json 的客户端(Claude Code、Claude Desktop、Cursor):
{
"mcpServers": {
"dockerfile-lint": {
"command": "docker",
"args": ["run", "--rm", "-i", "-v", "/path/to/your/project:/work:ro", "ghcr.io/basitalisandhu/mcp-dockerfile-lint:0.2.2"]
}
}
}
按示例固定版本,避免更新在你未察觉的情况下更改编辑器中运行的内容。容器只能看到挂载的目录,因此请传入 /work 下的路径。该软件包尚未发布到 npmjs.com,因此 npx 无法使用;有关 GitHub Packages npm,请参阅仓库 README。从代码检出目录运行时,在仓库根目录执行 npm install && npm run build,然后使用 "command": "node", "args": ["<path>/packages/dockerfile-lint/dist/index.js"]。
涉及范围
- 网络:无。
- 本地文件:仅读取指定的一个文件,最大 1 MB。
- 遥测:无。
备注
FROM $ARG基础镜像会与已声明的ARG进行核对;scratch和阶段引用不检查标签。- 规则基于文本启发式判断;检查结果干净并不意味着扫描了镜像中的软件包。
构建和测试
npm install # at the repository root
npm run build -w @basitalisandhu/mcp-dockerfile-lint
npm test -w @basitalisandhu/mcp-dockerfile-lint
测试使用 node:test 和 SDK 的内存传输;不会访问网络。
许可证
MIT。参见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。