mcpField
D
Dockerfile Lint

Dockerfile Lint

本地服务
basitalisandhu.github.io开发工具1今天更新

关于 Dockerfile Lint

Dockerfile Lint 是面向开发者的 Dockerfile 静态分析 MCP 服务,可解析构建指令并报告生产镜像相关问题,不会调用 Docker。

主要功能

  1. 01检查安全与镜像构建规则
  2. 02解析阶段和指令位置
  3. 03说明规则严重性及修复方法
  4. 04读取文件或传入内容

适用场景

  1. 01提交前检查 Dockerfile
  2. 02审查镜像构建安全实践
  3. 03了解报告中的规则

MCP 相关

通过 stdio 向 MCP 客户端提供 `lint_dockerfile`、`parse_dockerfile` 和 `explain_rule` 工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"basitalisandhu-mcp-dockerfile-lint": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/basitalisandhu/mcp-dockerfile-lint:0.3.0"
]
}
}
}
启动命令docker run -i --rm ghcr.io/basitalisandhu/mcp-dockerfile-lint:0.3.0

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

安装包
ocighcr.io/basitalisandhu/mcp-dockerfile-lint:0.3.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

dockerfile-lint MCP 服务

解析 Dockerfile(注释、escape 指令、续行、heredoc、多阶段构建),并检查那些会影响生产镜像的错误。仅进行静态分析;绝不会调用 Docker。

属于 dev-mcp-servers 的一部分。仅支持 Stdio 传输;服务绝不会开放端口。

工具

工具输入返回内容
lint_dockerfilepath 或 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_dockerfilepath 或 content包含行范围和阶段索引的指令、包含 AS 名称和基础镜像的阶段、转义字符。
explain_rulerule单条规则的严重程度、描述和修复建议。

安装

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。

评论

支持 Markdown

第一次接触 MCP?

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

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