shipsecure-mcp@0.1.1
CAUTIONPublisher claims: "MCP server and agent skill that ships npm packages from GitHub securely: Snyk and npm audit scans, gated releases, trusted or staged npm publishing, SBOMs and verification reports, and public docs sync with private-data scanning." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Server started and answered tools/list.- Tested
- MCP initialize and tools/list · every tool description, for hidden instructions · every file read, file written and host contacted by what ran
- Not tested
- what the tools do when called with real credentials
Before you give it your token
- It will ask for
SHIPSECURE_MCP_NPM_TOKENSNYK_TOKENSNYK_TOKEN_PAGESOCKET_SECURITY_API_TOKENConfiguration, not credentials: CODEX_HOME, SHIPSECURE_MCP_CONFIG, SHIPSECURE_MCP_NO_BACKGROUND_NPM, SHIPSECURE_MCP_POLL_MS, SHIPSECURE_MCP_RELEASE_SETTLE_MS, SHIPSECURE_MCP_SKILL_OVERLAY, SHIPSECURE_MCP_STATE- Where it talks to
- no vendor host named in the codeAlso ntfy.sh, snyk.io, osv.dev, git-scm.com, socket.dev — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- no credential files read · no network
- What we could not test
- what the tools do when called with real credentials
Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names ntfy.sh, snyk.io, osv.dev, git-scm.com, socket.dev as well as its own vendor. The guard injects SHIPSECURE_MCP_NPM_TOKEN, SNYK_TOKEN, SNYK_TOKEN_PAGE, SOCKET_SECURITY_API_TOKEN only into requests to the host you bind (and its subdomains) and refuses the rest.
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) on 2026-11-10 and scored it 65/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Privileged sudo command; Access to sensitive file paths; Access to sensitive file paths. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 33 s · 2 scenarios · 0 deviationsStatic findings
* The npm the wizard runs through npx for `npm trust` and `npm stage`Fix: Pin versions and sources; vendor anything fetched at install time.…ail: `no ${deps.configPath}`, fix: "Run the setup wizard (shipsecure-mcp setup, npx shipsecure-mcp setup, or npm run setup in a checkout) to create it." }); } else { …Fix: Pin versions and sources; vendor anything fetched at install time.…e, detail: "secret-tool is not installed", fix: "Install it (Debian and Ubuntu: sudo apt install libsecret-tools; Fedora: sudo dnf install libsecret) with a keyring …Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.{ name: "environment file", re: /(^|\/)\.env(\.[^/]*)?$/i, severity: "never" },Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.return { ...env, ...extra };Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…ou approve it with 2FA on npmjs.com (the package's Staged Packages tab) or with npx --yes npm@${STAGE_NPM} stage approve. Your npm account needs 2FA turned on.`); …Fix: Pin versions and sources; vendor anything fetched at install time.…om/package/${pkg}, Staged Packages tab; your phone works), or in your terminal: npx --yes npm@${STAGE_NPM} stage approve ${stageId ?? "<stage id from: npx --yes npm@" + …Fix: Pin versions and sources; vendor anything fetched at install time.…il: `other users on this machine can read it (mode ${mode.toString(8)})`, fix: `chmod 600 ${deps.configPath}: it holds your redaction terms (names, hosts) and project…Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts./** The real runner: npx npm@<pinned> in a detached process group, output to a log file. */Fix: Pin versions and sources; vendor anything fetched at install time.…with ~/.npm-global/bin on your PATH) or use a Node.js version manager, then run npx shipsecure-mcp setup again.`); } else { io.print("Then Claude Code and the git…Fix: Pin versions and sources; vendor anything fetched at install time.* with the reason fed back to Claude. Gitignored files (.env) are whereFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose./** npx arguments that run PINNED_NPM with these npm arguments. */Fix: Pin versions and sources; vendor anything fetched at install time.…p wizard: it adds a Claude Code hook that blocks that (gitignored files such as .env are left alone)." }); return items; } /** This checkout's built server, for…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const r = crossSpawn.sync(cmd, args, { stdio: "inherit", env: { ...process.env, ...env } });Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.".env"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.io.print("Then Claude Code and the git hooks point at the npx copy, which can disappear when npm clears its cache: run npx shipsecure-mcp setup again if they stop working.");Fix: Pin versions and sources; vendor anything fetched at install time.* npx runs shipsecure-mcp from a temporary cache folder npm may clear, butFix: Pin versions and sources; vendor anything fetched at install time./** Documentation placeholders such as npm_xxxxxxxx, ghp_000000 or AWS's AKIAIOSFODNN7EXAMPLE are not credentials. */Fix: Never read or enumerate credential locations; accept a documented environment variable instead.* shipsecure-mcp setup the interactive wizard (npx shipsecure-mcp setup; in a checkout: npm run setup)Fix: Pin versions and sources; vendor anything fetched at install time.* dir passed as --userconfig (which also keeps any persistent ~/.npmrc tokenFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.io.print("Installed. From now on: shipsecure-mcp setup (no npx needed).");Fix: Pin versions and sources; vendor anything fetched at install time.const text = raw.replace(/^/, "");Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent." 2. Take the ones in the files out: an environment variable, a gitignored .env, or the system credential store, referenced by name.",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.out.push(`FAIL npm lists the stage of ${key} as "${status}", not ready for approval: check it with npx --yes npm@${STAGE_NPM} stage list ${pkgName} before going on.`);Fix: Pin versions and sources; vendor anything fetched at install time.… fix what is missing, run the setup wizard in a terminal: shipsecure-mcp setup, npx shipsecure-mcp setup, or npm run setup in a checkout" : ""}`); } catch (e) { …Fix: Pin versions and sources; vendor anything fetched at install time.console.log("\nRun shipsecure-mcp setup (npx shipsecure-mcp setup) in a terminal for the interactive wizard.");Fix: Pin versions and sources; vendor anything fetched at install time.// The job runs in its own process group (detached): stop npx and the npm it started together.Fix: Pin versions and sources; vendor anything fetched at install time.…rom writing a credential into a file git would commit (gitignored files such as .env are left alone). Both run on this computer, without GitHub Actions."); if (…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* shipsecure-mcp setup [--check] the setup wizard (npx shipsecure-mcp setup on a new machine)Fix: Pin versions and sources; vendor anything fetched at install time.… push. Keep the value out of tracked files: put it in a gitignored file such as .env or the system credential store, and refer to it by name (an environment variabl…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…w.npmjs.com/package/${pkg}, Staged Packages tab, with 2FA), or from a terminal: npx --yes npm@${STAGE_NPM} stage list ${pkg}, then npx --yes npm@${STAGE_NPM} stage appro…Fix: Pin versions and sources; vendor anything fetched at install time.…/ export const SNYK_SIGN_IN_HELP = "Run the setup wizard (shipsecure-mcp setup, npx shipsecure-mcp setup, or npm run setup in a checkout): it opens Snyk's sign-in page in your br…Fix: Pin versions and sources; vendor anything fetched at install time.// A gitignored file (.env) or one outside a repository is where a credential may live.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.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 shipsecure-mcp@0.1.1 as of 4d ago. This is the package itself, not its dependencies.
What would make this Verified
15 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim rcb0727: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Privileged sudo command≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- AWS access key pattern detected≈ +4 on the totalNever read or enumerate credential locations; accept a documented environment variable instead.
- References a credential file in the home directory≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Hidden zero-width characters detected≈ +4 on the totalKeep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.