mcpField
E
enginedrift

enginedrift

ローカル
github.com/CloudCorpRecords開発ツール01 週間前に更新

enginedrift について

enginedriftは、package.json、CI設定、Dockerfileに記載されたNodeのバージョンをローカルで照合するツールです。ネットワーク接続なしで、CLIまたはMCPツールから不一致や関連する問題を報告します。

主な機能

  1. 01宣言されたNodeバージョンを比較
  2. 02package.json、CI YAML、Dockerfileを解析
  3. 03メジャー不一致と最低要件未満を報告
  4. 04タグ未指定のDocker Nodeイメージを検出
  5. 05構造化JSONの結果を出力

活用シーン

  1. 01ビルド前にNodeバージョンを確認
  2. 02CIとコンテナのバージョン不一致を発見
  3. 03ビルドステージごとのNode宣言を確認

MCP 対応

MCPクライアントにcheck_engine_driftツールを提供します。package.jsonのテキストと、任意のCI YAMLおよびDockerfileのテキストを受け取り、バージョンのずれや問題を報告します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"cloudcorprecords-enginedrift": {
"command": "npx",
"args": [
"-y",
"@reneturcios/enginedrift"
]
}
}
}
起動コマンドnpx -y @reneturcios/enginedrift

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@reneturcios/enginedrift0.1.0
ocighcr.io/cloudcorprecords/enginedrift:0.1.0

ツール

1

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
ci_yamlstringいいえCI ワークフローの YAML テキスト(任意)。node-version 値が抽出されます。
dockerfilestringいいえDockerfile のテキスト(任意)。FROM に指定された node イメージタグが抽出されます
package_jsonstringはいpackage.json のテキスト。engines.node の範囲が基準となります

詳細

enginedrift

Node プロジェクトでは、3 か所で Node のバージョンがひそかに指定されています。 package.json の engines.node、CI の node-version の値、Dockerfile の FROM node:... タグです。これらが一致しない場合、コンテナーとは異なるメジャーバージョンで CI ジョブが実行されたり、ある場所では使える構文機能が別の場所では使えなかったりと、問題が後になってから発生することがほとんどです。enginedrift は各ソースで実際に宣言されている内容を抽出し、不一致を事前に報告します。

次の情報を返します。

  • drift — ソース間で異なるメジャーバージョンが宣言されている場合、またはソースのバージョンが package.json で宣言された最小バージョンを完全に下回る場合は true
  • sources — 提供されたソースごとに 1 件のエントリーが含まれます。生の宣言文字列、検出されたメジャーバージョン(昇順、重複なし)、およびソースでメジャーバージョンを固定できない場合の注記(CI の node-version-file キーなど)が含まれます
  • issues — 次の固定順で表示されます。MAJOR_MISMATCH(ソース間でメジャーバージョンが異なる)、BELOW_MINIMUM(ソースが package.json の最小メジャーバージョンを完全に下回る)、UNPINNED_IMAGE(数値タグのない Dockerfile の FROM node。例:lts-alpine や latest)、NO_ENGINES(package.json に engines.node が宣言されていない)

抽出に関する注記:engines の範囲では、宣言された最小バージョンは言及されている最も小さいメジャーバージョンです(>=20 は 20、^18.2 は 18、20.x は 20、単独の * は何も宣言しません)。CI の値には、単一の値、[20, 22] のようなインラインのマトリックスリスト、またはキーの下にある YAML のブロックリストを指定できます。すべての Dockerfile ステージがスキャンされるため、マルチステージビルドでは各 FROM node 行が報告されます。CI 設定や Dockerfile が存在しないこと自体は問題になりません。ローカルでの純粋な計算のみを行います。ネットワーク接続、設定、ツール自体によるファイル読み取りはありません。

CLI

npx @reneturcios/enginedrift check --package-json package.json --ci .github/workflows/ci.yml --dockerfile Dockerfile
npx @reneturcios/enginedrift --version

--ci フラグと --dockerfile フラグは省略可能です。結果は JSON で出力されます。終了コード:チェックが実行された場合は 0(ドリフトはエラーではなくデータです)、実行時エラー(ファイルを読み取れない場合や package.json が無効な場合を含む)は 1、使用方法のエラーは 2 です。

MCP サーバー

npx -y @reneturcios/enginedrift mcp

MCP クライアントの設定:

{
  "mcpServers": {
    "enginedrift": {
      "command": "npx",
      "args": ["-y", "@reneturcios/enginedrift", "mcp"]
    }
  }
}
ツール
  • check_engine_drift — package.json、CI 設定、Dockerfile で宣言されている Node のメジャーバージョンを比較し、ドリフトを報告します。
    • package_json(文字列、必須)— package.json のテキスト。engines.node の範囲が基準ソースになります
    • ci_yaml(文字列、省略可能)— CI ワークフローの YAML テキスト。node-version の値が抽出されます
    • dockerfile(文字列、省略可能)— Dockerfile のテキスト。FROM node のイメージタグが抽出されます

Docker

docker run -i ghcr.io/cloudcorprecords/enginedrift
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/enginedrift check --package-json /w/package.json --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

コメント

MCP は初めてですか?

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

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