Enginedrift

io.github.CloudCorpRecordsPublished by GitHub account CloudCorpRecordsv0.1.0Updated Nov 3, 2026

Detect Node engine drift across package.json, CI config, and Dockerfile before it breaks a build.

VerifiedSTDIODesktop only

Overview

Enginedrift's local MCP server; no sign-in required; STDIO.

No AI overview yet: these facts come from the registry entry and the server itself.

Installation

In SourceWeft

  1. Open Enginedrift in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

enginedrift

Three places in a Node project quietly name a Node version: engines.node in package.json, the node-version values in CI, and the FROM node:... tags in a Dockerfile. When they disagree, the failure usually shows up late — a CI job running a different major than the container, or a syntax feature that works in one place and not another. enginedrift extracts what each source actually declares and reports the drift up front.

It answers with:

  • drift — true when sources declare conflicting majors, or a source sits entirely below package.json's declared minimum
  • sources — one entry per provided source, with the raw declared strings, the majors found (ascending, unique), and a note when a source cannot pin a major (for example a CI node-version-file key)
  • issues — in a fixed order: MAJOR_MISMATCH (distinct majors across sources), BELOW_MINIMUM (a source entirely below package.json's minimum major), UNPINNED_IMAGE (a Dockerfile FROM node with no numeric tag, such as lts-alpine or latest), and NO_ENGINES (package.json declares no engines.node)

Extraction notes: for an engines range, the declared minimum is the smallest major mentioned (>=20 means 20, ^18.2 means 18, 20.x means 20, and a bare * declares nothing). CI values may be scalars, inline matrix lists such as [20, 22], or YAML block lists under the key. Every Dockerfile stage is scanned, so multi-stage builds report each FROM node line. An absent CI config or Dockerfile is never an issue by itself. Pure local computation: no network, no configuration, no files read by the tool itself.

CLI

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

The --ci and --dockerfile flags are optional. The result is printed as JSON. Exit codes: 0 when the check ran (drift is data, not an error), 1 on a runtime error (including an unreadable file or an invalid package.json), 2 on a usage error.

MCP server

bash
npx -y @reneturcios/enginedrift mcp

MCP client config:

json
{  "mcpServers": {    "enginedrift": {      "command": "npx",      "args": ["-y", "@reneturcios/enginedrift", "mcp"]    }  }}

Tools

  • check_engine_drift — Compare Node majors declared in package.json, CI config, and a Dockerfile, and report drift.
    • package_json (string, required) — package.json text; its engines.node range is the anchor source
    • ci_yaml (string, optional) — CI workflow YAML text; node-version values are extracted
    • dockerfile (string, optional) — Dockerfile text; FROM node image tags are extracted

Docker

bash
docker run -i ghcr.io/cloudcorprecords/enginedriftdocker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/enginedrift check --package-json /w/package.json --dockerfile /w/Dockerfile

Development

bash
npm installnpm run build   # tsc -> dist/npm test        # tsx --test test/*.test.ts (pure local, no network)npm run dev     # run the CLI from source

License

MIT — Copyright (c) 2026 Rene Turcios

Source: README.md at commit d1a41b7

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.0LatestNov 3, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts