Envdoctor

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

Local environment doctor: runtime, tools, env files, and services, pass or fail.

VerifiedSTDIODesktop onlyDeveloper ToolsSecurity & Monitoring

Overview

AI-generated overview

Local environment doctor that checks a repo directory for Node version, git, npm, lockfile and .env key names, returning a pass/fail report.

What you can do
  • Run deterministic environment checks on a repo directory and get a JSON report with a HEALTHY or ISSUES verdict.
  • Compare the running Node version against the engines.node range in package.json, and confirm git and npm are available.
  • Check that a lockfile (npm, yarn or pnpm) exists and report which one was found.
  • Compare key names in .env against .env.example and flag missing keys, without reading values.
  • Report counts of checks run, passed, failed, warned and skipped, plus findings by severity.
When to use it
Useful when an assistant needs to diagnose why a project will not build or start on the current machine, or to verify a freshly cloned repo meets its stated prerequisites before setup. It is a narrow, read-only check, not a general system or service monitor.
Requirements
Runs as a local stdio process, either via npx with the npm package or via the published container image. Needs Node.js and npm on the machine, and git for the git check. No accounts, API keys, environment variables or headers are declared.
Before you install
Read-only: it does not execute code from the target repo and only runs git --version and npm --version. It parses .env but discards values, reporting key names only. It does not check ports, running services, databases, network reachability or disk space, so a HEALTHY verdict is limited to the five checks listed.

Installation

In SourceWeft

  1. Open Envdoctor 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

envdoctor

envdoctor checks whether this machine's environment matches what a repo says it needs. Point it at a repo directory and it runs a small set of deterministic checks, each one passing or failing with the fix named. It never runs code from the repo, and it never prints a secret value.

Install

Run it without installing:

sh
npx @reneturcios/envdoctor doctor [path]

Or install it globally:

sh
npm install -g @reneturcios/envdoctor

CLI

sh
envdoctor doctor [path] [--json]envdoctor mcpenvdoctor --version
  • doctor [path] checks the repo at path (default: the current directory) and prints a human readable report. Add --json for the machine readable report.
  • mcp starts the MCP server on stdio.
  • --version prints the version.

Exit codes: 0 when the verdict is HEALTHY, 1 when the verdict is ISSUES, 2 for a usage error such as a target that does not exist, and 141 when the reader closed the output pipe early.

MCP

The MCP server exposes one tool:

  • doctor_env takes a path argument, runs the same checks as the CLI, and returns the JSON report.

Checks

v0.1 runs five checks, in this order:

  1. NODE-VERSION - Compares the running Node version (process.version) against the engines.node range in the target's package.json. Supported range syntax: >=, <=, >, <, =, caret ranges such as ^20.0.0, tilde ranges such as ~20.11.0, exact versions such as 20.11.0, x-ranges such as 20.x and 20.11.x, partial versions, and space separated combinations such as >=18 <21. A range outside that syntax is reported as an info finding with rule RANGE-UNSUPPORTED instead of a guess. When the target has no package.json, this check is skipped with an info finding with rule NO-PACKAGE-JSON, and the remaining checks still run.
  2. GIT-PRESENT - Passes when git --version succeeds.
  3. NPM-PRESENT - Passes when npm --version succeeds.
  4. LOCKFILE - Passes when one of package-lock.json, yarn.lock, or pnpm-lock.yaml exists at the target (the report says which one). A missing lockfile is a medium finding with rule NO-LOCKFILE.
  5. ENV-FILE - Only applies when .env.example exists at the target. If .env is missing, that is a medium finding with rule ENV-MISSING and the fix "copy .env.example to .env and fill values". If .env exists, the key names in .env.example are compared against the key names in .env, and each name missing from .env is a medium finding with rule ENV-KEYS-MISSING. When there is no .env.example, the check passes because no env file is required.

Every passed check is counted in counts.checksPassed and appears in the report findings as an info entry with rule CHECK-PASS, so the printed report lists every check that ran.

Env values are never read into output

This guarantee is plain: envdoctor compares key names only.

  • Both .env.example and .env are parsed by reading only the text left of the first = on each line. That text is the key name.
  • Everything from the first = onward is a value. Values are discarded at parse time. They are not stored, not returned, not logged, and not printed in any report, finding, summary, or error.
  • Findings about env files name keys, never values. For example, an ENV-KEYS-MISSING finding says a key named in .env.example is missing from .env; it says nothing about any value.

Verdict rules

  • HEALTHY - No medium or high findings. Passed checks, skipped checks with a stated reason, and info notes such as RANGE-UNSUPPORTED do not change this verdict.
  • ISSUES - At least one medium or high finding exists.

The report counts are checksRun, checksPassed, checksFailed, checksWarned, and checksSkipped, plus a findings total broken down by severity.

Limits

  • v0.1 checks Node, git, npm, and files only: the engines.node range, the two tool versions, the lockfile, and the env files described above.
  • Ports, running services, databases, and network reachability are not checked in v0.1. Port and service checks are future work.
  • Disk space is out of scope.
  • Only the Node range syntax listed under NODE-VERSION is supported. Any other range syntax produces a RANGE-UNSUPPORTED info finding rather than a pass or fail.
  • Nothing in the target repo is executed. The only commands envdoctor runs are git --version and npm --version.

Source: README.md at commit 2e224a4

Tools

1

doctor_env

Run environment checks for a repo directory: node version satisfies package.json engines, git is available, the expected lockfile for the project exists, a .env file is present when .env.example declares one is needed (only key names compared, values never read), and npm is on PATH. Each check reports pass or fail with the fix. Verdict HEALTHY or ISSUES.

Parameterspathrequired

Version history

1
  1. v0.1.0LatestOct 30, 2026

Score

90% 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
  • 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 listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts