Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Compare dotenv files and report which keys are missing or extra, by name only.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"envsync-le": {
"command": "npx",
"args": [
"-y",
"envsync-le-mcp"
]
}
}
}在终端中运行这条命令
claude mcp add envsync-le -- npx -y envsync-le-mcp粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"envsync-le": {
"command": "npx",
"args": [
"-y",
"envsync-le-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"envsync-le": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"envsync-le-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 nolindnaidoo 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(2.5.0)于10天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Spec Driven Development, Remote Desktop Commander, sync. labs
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Lipsync videos, dub them into other languages, make talking videos and open sync. Studio.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
EnvSync-LE: Zero Hassle .env Sync
Spot missing keys across your .env files before they bite
Automatic checks, a status bar counter, and a plain markdown report
Useful? A star or rating is how other developers find it —
★ GitHub ·
EnvSync-LE compares the variable names across the .env files in your workspace and tells you which files are missing which keys. It never reads or compares values, and it never modifies your files. Works in VS Code and in VS Code–based editors like Cursor and VSCodium (installable from Open VSX).
.env file changesShow Details lists every missing key per fileauto (union of all keys), manual (only the files you list), template (validate everything against one reference file; also reports keys a file has that the template lacks).env.example) from checking| Where | What you get | Install |
|---|---|---|
| VS Code | The same comparison, live, in your editor | Marketplace |
| Cursor, VSCodium, Windsurf | The same extension | Open VSX |
| A terminal or a CI step | The same run over a whole tree, with exit codes | npx envsync-le · npm or cargo install envsync-le · crates.io |
| Any MCP agent, via Node | compare_env_files over stdio | npx envsync-le-mcp · npm |
The same engine runs as an MCP server, so an agent can call it directly instead of you running a command.
| Editor | How |
|---|---|
| VS Code 1.101+ | Nothing to install — the extension registers compare_env_files with agent mode |
| Claude Code | claude mcp add envsync-le -- npx -y envsync-le-mcp |
| Cursor, Windsurf, anything else | point it at npx envsync-le-mcp |
compare_env_files(files[], mode?, templatePath?, caseSensitive?, maxResults?)
Takes file contents directly and reports which keys are missing from which file. Only key names are returned, never values — a dotenv file is where credentials live and the answer does not need them.
The server takes content and returns data — it reads no files and makes no network requests of its own. Published as envsync-le-mcp on npm and as io.github.nolindnaidoo/envsync-le in the MCP registry.
Configuring it by hand — any host with an MCP config file
Most hosts read a JSON config. Add one entry:
{
"mcpServers": { "envsync-le": { "command": "npx", "args": ["-y", "envsync-le-mcp"] } } }
-y skips the install prompt on first run. Pin a version if you would rather not track releases — envsync-le-mcp@2.3.0.
Prefer not to go through npx on every launch? Install it once and point at the binary instead:
npm install -g envsync-le-mcp
{
"mcpServers": { "envsync-le": { "command": "envsync-le-mcp" } } }
It speaks MCP over stdio and needs no environment variables, no API key and 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
That prints the tool list and exits — if you see compare_env_files, the server works.
| Filename | Type |
|---|---|
.env | base |
.env.local, .env.*.local | local override |
.env.example, .env.template | template |
.env.production, .env.prod | production |
.env.development, .env.dev | development |
.env.test | test |
anything.env, unknown segments | base |
Classification is segment-based on the basename — app.device.env is not "development", and Windows paths classify correctly.
The same comparison runs from a terminal or a CI step: a Rust CLI in crate/, sharing one corpus with the extension — crate/fixtures/ — so the two can never read a dotenv file differently. Install it from npm with npm install -g envsync-le (or run it with npx envsync-le) or from crates.io with cargo install envsync-le. Both install the same command and are held to the same output byte for byte.
envsync-le . # have these environments drifted? JSON on stdout when piped
envsync-le --template .env.example . # will this deploy break? envsync-le mcp # the same comparison over MCP on stdio
Install it from npm (envsync-le) or from crates.io (envsync-le). Both install the same envsync-le command.
npm install -g envsync-le # or run it once: npx envsync-le
cargo install envsync-le
.env: missing STRIPE_KEY, SENTRY_DSN (in .env.example) .env.production: missing SENTRY_DSN (in .env.example) out of sync — 2 files with mismatches across 3 files
The exit code is the product — 0 in sync, 1 out of sync, 2 malformed question. Finding no dotenv files at all is 0: there is nothing to be out of sync with. Unlike the extractors in this family there is no list to pipe onward; the number is the answer.
It never reads a value. Only key names are parsed, compared or reported, and three separate checks enforce that rather than a promise.
| Command | Description |
|---|---|
EnvSync-LE: Show Details | Run a sync check and open the markdown report |
EnvSync-LE: Compare Files | Compare the key sets of two or more selected .env files |
EnvSync-LE: Set Template | Mark a .env file as the reference template |
EnvSync-LE: Clear Template | Return to automatic comparison |
EnvSync-LE: Ignore File | Exclude a .env file from sync checking |
EnvSync-LE: Unignore File | Re-include a previously ignored file |
EnvSync-LE: Clear Ignored Files | Empty the ignore list |
EnvSync-LE: Open Settings | Open VS Code settings filtered to EnvSync-LE |
EnvSync-LE: Help & Troubleshooting | Built-in documentation |
No command is bound to a key by default. Give any of them one under Keyboard Shortcuts in the editor.
| Setting | Default | Description |
|---|---|---|
envsync-le.enabled | true | Master switch for sync checking |
envsync-le.watchPatterns | [".env*"] | Glob patterns for files to watch and compare |
envsync-le.excludePatterns | [] | Glob patterns to exclude; patterns without / match the basename (so .env.*.local excludes nested files too) |
envsync-le.notificationLevel | important | all = missing + extra keys, important = missing keys + errors, silent = nothing |
envsync-le.statusBar.enabled | true | Show the status bar item (applies immediately) |
envsync-le.debounceMs | 1000 | Delay between a file change and the sync check |
envsync-le.caseSensitive | true | Treat DB_URL and db_url as different keys |
envsync-le.comparisonMode | auto | auto, manual, or template |
envsync-le.compareOnlyFiles | [] | In manual mode, only compare these files (workspace-relative) |
envsync-le.templateFile | — | The reference file for template mode (set via Set Template) |
envsync-le.temporaryIgnore | [] | Files currently ignored (managed by the ignore commands) |
envsync-le.telemetryEnabled | false | Local-only event log (see Privacy) |
A-Za-z_*, so dotted names such as spring.datasource.url count; anything else left of = is reported as a parse error for that line (the rest of the file still counts).export KEY=value is accepted; duplicate keys count once.", ', or ` may span multiple lines; an unterminated quote is reported as an error.auto mode the reference is the union of all keys, so "extra keys" only exist in template mode.Twelve languages besides English:
German · Spanish · French · Indonesian · Italian · Japanese · Korean · Portuguese (Brazil) · Russian · Ukrainian · Vietnamese · Chinese (Simplified)
Both halves are covered — the manifest (command titles, setting names and descriptions) and everything shown while the extension runs (notifications, the status bar, quick-picks and prompts, and the headings of the report). The help page is written in English. The extension follows VS Code's display language, so it matches whatever the editor is already set to; no setting of its own.
telemetryEnabled setting only writes events to a local Output Channel you can inspect (envsync-le).只显示了开头部分;其余内容请在仓库中阅读