frontmcp@1.11.3
VERIFIED· startup onlyPublisher claims: "The FrontMCP CLI: create, run, test and build MCP servers, and install FrontMCP skills for coding agents" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Startup only; authenticated tool behavior not tested.- Tested
- server startup over stdio (initialize sent) · every file read, file written and host contacted by what ran
- Not tested
- the tool list (the server exited before answering) · what the tools do when called with real credentials
What this means for the label: Verified here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.
Before you give it your token
- It will ask for
MY_API_KEYConfiguration, not credentials: LOGIN_PATH, QUESTIONS_PATH- Where it talks to
- frontmcp.dev (its own)
- What the honeypot saw
- no credential files read · no network
- What we could not test
- the tool list (the server exited before answering) · what the tools do when called with real credentials
Connect it with a scoped credential, under the guard. It asks for MY_API_KEY and talks to frontmcp.dev. Give the credential to the guard, not the server: the value never enters the server's environment and only travels to the host you bind. What the tools do with a real credential was not observed.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; startup only; authenticated tool behavior not tested) on 2026-11-11 and scored it 81/100 (Verified). In what ran, nothing we could detect went wrong: no undeclared network egress, no credential reads, no persistent instruction writes. What it does with a real credential was not observed; the static findings and the publisher carry the rest of the score. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 28 s · 2 scenarios · 0 deviationsStatic findings
* then the real environment \u2014 which already contains `.env` values, loadedFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose./** Where notices (port, `.env`) go; `--stdio` keeps stdout for JSON-RPC. */Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// included via `resolved.effectiveEnv`. `.env`/`.env.local` already loadedFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// under the real environment (incl. .env), which winsFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* then the real environment — which already contains `.env` values, loadedFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// directory (bundle + the .env the installer wrote) unless --entry overrides.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// Load .env and .env.local files (these win over config env overlays forFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* frontmcp test --no-env # Skip .env loading for a hermetic runFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* Issue #540: `frontmcp dev` loaded `.env` / `.env.local` but `frontmcp test`Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* local `.env`.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* command reads (`tsconfig.json`, `package.json`, `.env`) is relative to theFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.runtimeEnv: { ...(0, deployment_env_1.serverRuntimeEnv)(server, { listens }), ...deployment?.env },Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// frontmcp.config `env.shared` \u2295 `env.ship`; the real environment (incl. .env) still winsFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* frontmcp test --no-env # Skip .env loading for a hermetic runFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* local `.env`.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.env: deployment?.env,Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* Callers layer the real environment on top, so OS / CI / `.env` values win \u2014Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* Issue #540: `frontmcp dev` loaded `.env` / `.env.local` but `frontmcp test`Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// Set by npm for every script it runs (`npm run dev`, `npx frontmcp`).Fix: Pin versions and sources; vendor anything fetched at install time.console.log((0, colors_1.c)('green', ` Created deployment output structure`));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// Run the project's Jest with node, without a shell (npx when it is notFix: Pin versions and sources; vendor anything fetched at install time.// #731 \u2014 the project's tsx run with node (npx when it is not installed); no shell, so it starts on Windows too.Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.'npx frontmcp create my-mcp # Scaffold a new project',Fix: Pin versions and sources; vendor anything fetched at install time.* Build the args passed to `npx jest`. Extracted from `runTest` so the argsFix: Pin versions and sources; vendor anything fetched at install time.// The restarted child belongs to this process; exiting here would kill it.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.* Issue #534: the build used to shell out to `npx tsc`. `npx` starts a freshFix: Pin versions and sources; vendor anything fetched at install time.// Wait for graceful shutdown, then force killFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.// #731 \u2014 the project's tsx run with node (npx when it is not installed); no shell, so it starts on Windows too.Fix: Pin versions and sources; vendor anything fetched at install time..option('-f, --force', 'Force kill (SIGKILL instead of SIGTERM)')Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.* Parse a .env file content into key-value pairs.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* Parse a .env file content into key-value pairs.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// #679 \u2014 `kill <pid>` (SIGTERM or SIGINT to this process alone) used to exitFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.* NOT the TypeScript compiler \u2014 a bare `npx -y tsc` would download and run it.Fix: Pin versions and sources; vendor anything fetched at install time.* Issue #534: the build used to shell out to `npx tsc`. `npx` starts a freshFix: Pin versions and sources; vendor anything fetched at install time.* Load environment variables from .env files (synchronous).Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* Load environment variables from .env files (synchronous).Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.console.log((0, colors_1.c)('green', ` Updated ${template.configFileName} (build output reference)`));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.// No local supervisor \u2014 try to kill by PID fileFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.* Build the args passed to `npx jest`. Extracted from `runTest` so the argsFix: Pin versions and sources; vendor anything fetched at install time.* NOT the TypeScript compiler — a bare `npx -y tsc` would download and run it.Fix: Pin versions and sources; vendor anything fetched at install time.* fallback names the `typescript` package: `npx -y tsc` would fetch theFix: Pin versions and sources; vendor anything fetched at install time.// Force kill if still aliveFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.console.log((0, colors_1.c)('green', ` Created bundle: ${template.bundleOutput}`));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.* @param content - Raw content of a .env fileFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* `process.execPath`, or `npx <spec.npx> <args>` when no directory in `from`Fix: Pin versions and sources; vendor anything fetched at install time.* fallback names the `typescript` package: `npx -y tsc` would fetch theFix: Pin versions and sources; vendor anything fetched at install time.console.log((0, colors_1.c)('gray', `Output placed in ${path.relative(cwd, outDir)}`));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.* @param content - Raw content of a .env fileFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.console.log((0, colors_1.c)('gray', `No log output for "${name}".`));Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.* 2. npm / npx on Windows: npm's own `npm-cli.js` / `npx-cli.js` \u2014 fromFix: Pin versions and sources; vendor anything fetched at install time.* Follows NestJS-style priority: .env.local overrides .envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* Follows NestJS-style priority: .env.local overrides .envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// #731 \u2014 on Windows yarn/pnpm/npx are `.cmd` shims a shell-less spawn cannot start.Fix: Pin versions and sources; vendor anything fetched at install time.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
No advisories in OSV for frontmcp@1.11.3 as of 3d ago. This is the package itself, not its dependencies.