Diffs declared MCP server env vars (per host config) against what actually reaches the launched subprocess.
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"mcp-env-linter","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# mcp-env-linter Diffs the env vars an MCP host *declares* for a server (in `claude_desktop_config.json` / `.mcp.json` / `mcp.json`) against what the launched subprocess *actually receives*, and flags two specific, well-documented propagation failure modes. ## Why this exists The "MCP doctor/linter" space already has several entrants — four or more `mcp-doctor`-named repos, plus the official `modelcontextprotocol/inspector` and `mcp-validator`. Checked directly, they cover handshake health, credential leaks, and tool-description quality. None of them diff declared env vars against what actually reaches the server subprocess — the specific bug reported independently against `modelcontextprotocol/servers` (#1018, #692), `copilot-cli` (#744), and `claude-code` (#10955, #1254), where hosts silently drop or fail to propagate env vars to npx-launched/subprocess MCP servers. That gap is what this tool checks. It does not attempt to duplicate handshake or credential checks that the other tools already do. Concretely, it runs two diagnostics per configured server: 1. **`${VAR}` / `$VAR` placeholder detection.** Claude Desktop's `env` field does not expand shell-style variable references — a declared value like `"${APPDATA}"` is passed to the server *literally*, not substituted. The linter flags any declared value that looks like an unexpanded placeholder. 2. **`--spawn-mode replace` PATH-drop detection.** Some reported failures are consistent with a host passing an `env` object that *replaces* the inherited environment rather than merging into it, which drops `PATH` and breaks `npx` resolution for the launched server. `--spawn-mode replace` constructs the environment under that hypothesis and reports whether the declared command still resolves. ## Install Not yet published to PyPI. Install from a local clone: ```bash git clone <this-repo> cd mcp-env-linter pip install -e . ``` Requires Python >= 3.9. No runtime dependencies. ## Quick sta…
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.