New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

envsync-le-mcp

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

envsync-le-mcp

Compare dotenv files and report which keys are missing or extra, by name only.

Source
npmnpm
Version
2.2.9
Version published
Weekly downloads
797
1349.09%
Maintainers
1
Weekly downloads
 
Created
Source

envsync-le-mcp

Install from VS Code Marketplace Open VSX downloads envsync-le-mcp on npm LE Tools

An MCP server that compares dotenv files and reports which keys are missing from which — names only, never values — the comparison engine behind the EnvSync-LE editor extension, exposed as a tool an agent can call.

No dependencies, no network calls, no filesystem access. Content goes in, structured results come out.

Use it

Point any MCP host at npx envsync-le-mcp.

Claude Code

claude mcp add envsync-le -- npx -y envsync-le-mcp

Anything with a JSON config — Cursor, Windsurf, Claude Desktop:

{
  "mcpServers": {
    "envsync-le": {
      "command": "npx",
      "args": ["-y", "envsync-le-mcp"]
    }
  }
}

VS Code needs nothing here. Install the extension instead — it carries this server and registers it for you: VS Code Marketplace · Open VSX

No Node? The same compare_env_files tool ships in a static Rust binary: cargo install envsync-le, then envsync-le mcp (crates.io). The two servers answer identically — one fixture corpus runs against both and CI fails if they diverge. The binary additionally offers envsync_le_check, which discovers the dotenv files in a directory; this server reads no files, which is what lets an agent call it anywhere.

Prefer a global install to npx on every launch:

npm install -g envsync-le-mcp
{
  "mcpServers": {
    "envsync-le": { "command": "envsync-le-mcp" }
  }
}

No environment variables, no API key, no configuration of its own. To check it before wiring it into anything:

echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | npx -y envsync-le-mcp

If that prints the tool name, the server works.

The tool

compare_env_files

argumenttype
filesobject[]required. The dotenv files to compare, each { "path": ".env", "content": "…" }.
modestringauto (the default) compares every file against the union of all keys, so nothing can be extra; template compares every file against one.
templatePathstringWhich file is the template. Required when mode is template.
caseSensitivebooleanCompare key names case-sensitively. Default true.
maxResultsnumberDefault 500, ceiling 5000.

Returns the overall status — in-sync, missing-keys, extra-keys or parse-error — each file with its key count, and the keys missing from each file (and, in template mode, extra in it) by name only. A value never leaves the tool. maxResults caps the mismatches returned, and meta.truncated says whether any were dropped.

{
  "ok": true,
  "data": {
    "status": "missing-keys",
    "files": [
      {"path": ".env", "type": "base", "keyCount": 2},
      {"path": ".env.example", "type": "example", "keyCount": 1}
    ],
    "missingKeys": [
      {
        "filepath": ".env.example",
        "keys": ["DB_HOST"],
        "reference": ".env"
      }
    ],
    "extraKeys": []
  },
  "diagnostics": [],
  "meta": {
    "tool": "compare_env_files",
    "count": 1,
    "truncated": false
  }
}

Extraction is heuristic, and what it deliberately does not match is documented as carefully as what it does — see the extension README.

Also in the MCP registry

io.github.nolindnaidoo/envsync-le — registry.modelcontextprotocol.io

Nine more like it

One tool each, same shape: content in, structured data out, no network and no filesystem. Every one is on npm as <name>-mcp and in the MCP registry as io.github.nolindnaidoo/<name>.

PackageToolExtracts
urls-le-mcpextract_urlsURLs, with protocol and position
colors-le-mcpextract_colorscolors from stylesheets and code
dates-le-mcpextract_datesdates and timestamps
paths-le-mcpextract_pathsfile and directory paths
numbers-le-mcpextract_numbersnumeric values
string-le-mcpextract_stringsstring values
regex-le-mcpextract_patternsregexes, with a ReDoS verdict
secrets-le-mcpdetect_secretscredentials, masked — never the value
scrape-le-mcpanalyze_robots_txtwhether a path may be crawled

Every tool in the family, one page: letools.dev

Built by

Nolin Naidoo — Chief Engineer, AI/ML & Platform Architecture. nolindnaidoo.com · GitHub · LinkedIn

Also from the same workshop

Twelve Rust tools built the same way: small, single-purpose, and driven by a machine rather than a person. pixelcoords and pixelactions make up one loop — pixelcoords answers where, pixelactions acts there. The ten LE crates are the terminal half of the extensions they sit in: the same detection, held to the extension's own corpus, and an exit code instead of a results editor.

pixelcoordsFreeze your screen, mark regions, get pixel-exact coordinates and cropssite · crates.io · docs.rs
pixelactionsConsume human-verified coordinates, perform the interaction, confirm it landedsite · crates.io · docs.rs
paths-leFind every path in a codebase and report whether it still points at anythingcrates.io
secrets-leFind hardcoded credentials, and never print onecrates.io
urls-leExtract every URL from a codebase, with its protocol and exact positioncrates.io
regex-leFind every regex in a codebase and report which can be driven into catastrophic backtrackingcrates.io
string-leGet every string in a codebase out where a person can read themcrates.io
numbers-leFind every hardcoded number in a codebase so a person can check themcrates.io
envsync-leCompare the dotenv files in a tree and say which keys are missing from whichcrates.io
colors-leFind every colour in a codebase, and say which are not in your palettecrates.io
dates-leExtract every date and timestamp, and the exact instant each one resolves tocrates.io
scrape-leCheck whether a page is scrapeable before the scraper is writtencrates.io

Licence

MIT © Nolin Naidoo

Keywords

mcp

FAQs

Package last updated on 05 Oct 2026

Related posts