mcpField
D
Dockerfile Lint

Dockerfile Lint

ローカル
basitalisandhu.github.io開発ツール11 日前に更新

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 がない、クリーンアップまたは --no-install-recommends を指定しない apt-get、apt-get upgrade、--no-cache を指定しない apk add、--no-cache-dir を指定しない pip、通常のファイルや URL に対する ADD、`curl
parse_dockerfilepath または content行範囲とステージインデックスを含む命令、AS の名前とベースイメージを含むステージ、エスケープ文字。
explain_rulerule1 つのルールの重大度、説明、修正方法。

インストール

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を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。