MCP server and CLI that resolves config/env-var cascade across .env, docker-compose, and Kubernetes
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
💡 Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Envspeak.
resolve_variableCallable MCP tool function
DATABASE_URLCallable MCP tool function
trace_variableCallable MCP tool function
impact_previewCallable MCP tool function
config_manifestCallable MCP tool function
diff_environmentsCallable MCP tool function
MCP server and CLI that resolves config/env-var cascade across .env files, Docker Compose, and Kubernetes — tells AI agents (and you) what a variable actually evaluates to at runtime, and why.
Same problem shape as CSS cascade — several sources, non-obvious precedence rules, and a value that "wins" only because of where it's defined — applied to application configuration instead of stylesheets. A sibling project to stylesafe and stylespeak, which do the same thing for CSS.
A real app's config comes from .env, .env.local, .env.production, docker-compose.yml (environment: vs env_file:), Kubernetes ConfigMap/Secret objects, and hard-coded fallbacks in code — five-plus layers, each with its own precedence rules that don't compose the way you'd guess. The best-known gotcha: a plain .env.local overrides .env.production unless you also have a .env.production.local — because "local" outranks "environment-specific" in the conventional dotenv cascade. An agent editing config has no way to know what a variable actually resolves to, or what breaks if it changes one layer.
resolve_variable — what does DATABASE_URL actually evaluate to, and which file wins?trace_variable — every place this variable is set, across every domain and environment.impact_preview — if I change this value in this file, what actually changes downstream — and what's shielded by something higher-precedence?config_manifest — a compressed, whole-project summary: every variable, its sources, and risk hotspots (secrets sitting in a tracked file, variables read in code with no fallback and no source anywhere).diff_environments — resolve every variable under two environments/services/workloads and see what's actually different between them.If --files is omitted, envspeak auto-discovers .env*, Compose, and Kubernetes manifest files under --projectRoot (default: current directory). Pass --files a,b,c to scope it explicitly — recommended for MCP calls, so the agent controls exactly what's read.
dotenv (Next.js/Vite-style, the de facto standard): process.env (shell) > .env.[env].local > .env.local > .env.[env] > .env > code fallback (process.env.X || 'default'). Note .env.local outranks .env.[env] — the gotcha above.
Docker Compose: docker compose run -e (CLI) > environment: > env_file: (last file in the list wins on conflicts) > Dockerfile ENV (not analyzed).
Kubernetes: inline env: always overrides envFrom: (bulk ConfigMap/Secret import; last entry in the list wins among those). Env values are frozen at pod start — editing a referenced ConfigMap/Secret does not reach a running pod without a restart or rollout. impact_preview flags this.
Every result includes a confidence level and a caveat string, because a shell-exported or CLI-passed override is always possible and never visible to static analysis — envspeak says so explicitly rather than pretending certainty it doesn't have.
npm audit is clean by construction.projectRoot and refuse to escape it, even if a tool call is given a crafted relative path.__proto__, constructor, prototype) are never used for property assignment.Secret values are shown only as ab***yz, never in full, regardless of which tool surfaces them..gitignore, and surfaced as a secretFlag / risk hotspot rather than silently passed through.files list an agent can pass, the same way you'd scope any tool with filesystem access.MIT
Factual signals from GitHub, npm, and our automated checks — not a rating.
No reviews yet — be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/envspeak)<a href="https://allmcps.com/mcp/envspeak"><img src="https://allmcps.com/api/badge/envspeak?style=directory" alt="Envspeak on AllMCPs" /></a>