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 がない、クリーンアップまたは --no-install-recommends を指定しない apt-get、apt-get upgrade、--no-cache を指定しない apk add、--no-cache-dir を指定しない pip、通常のファイルや URL に対する ADD、`curl |
parse_dockerfile | path または content | 行範囲とステージインデックスを含む命令、AS の名前とベースイメージを含むステージ、エスケープ文字。 |
explain_rule | rule | 1 つのルールの重大度、説明、修正方法。 |
インストール
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 つ読み込みます。上限は 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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。