frontmcp@1.12.2
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: FRONTMCP_CONFIG, 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-15 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 · 29 s · 2 scenarios · 0 deviationsStatic findings
// 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.* 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./** 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.env: deployment?.env,Fix: 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.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.* Build the args passed to `npx jest`. Extracted from `runTest` so the argsFix: Pin versions and sources; vendor anything fetched at install time.* 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.// 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.* 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.* 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.* 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.* 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.// Force kill if still aliveFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// #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.* 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..option('-f, --force', 'Force kill (SIGKILL instead of SIGTERM)')Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// 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.* `process.execPath`, or `npx <spec.npx> <args>` when no directory in `from`Fix: 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.* 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.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.* @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.'npx frontmcp create my-mcp # Scaffold a new project',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.* local `.env`.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// Wait for graceful shutdown, then force killFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.* fallback names the `typescript` package: `npx -y tsc` would fetch theFix: Pin versions and sources; vendor anything fetched at install time.// 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.* 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.* 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.// 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.* 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.* 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.* Build the args passed to `npx jest`. Extracted from `runTest` so the argsFix: 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.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.* 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.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.// No local supervisor \u2014 try to kill by PID fileFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.* fallback names the `typescript` package: `npx -y tsc` would fetch theFix: Pin versions and sources; vendor anything fetched at install time.* @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.* local `.env`.Fix: 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.* 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.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.* 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.// #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.* 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.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.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.12.2 as of 24 min ago. This is the package itself, not its dependencies.