preflight

https://github.com/Abhishekkumar2021/mcp-suite

mcp-suite

Hostile

Score 0 / 100 · 80 files read · 0 critical, 8 high, 8 medium, 7 low findings

Report 93c1346f47f6b196 · first scanned 2026-10-28 · scanned 4× · keyed to the exact package contents, so this link always shows this version

Listed in the Agent Census directory data

Subscores

credentials0
exfiltration78
execution52
injection100
obfuscation100
files92

100 is clean. Deductions come only from the cited findings below.

Findings

highReferences the SSH directory (~/.ssh)
servers/files/CHANGELOG.md · line 10 · rule H1
of) `.env`/`*.pem`/`.ssh/**`/etc. blocked by default, plus per-root `.mcpignore`; `FS_ALLOW_SECRETS=1` overrides. ## 0.1.0 — Init
highReferences the SSH directory (~/.ssh)
servers/files/README.md · line 54 · rule H1
*.key`, `id_rsa*`, `.ssh/**`, `.aws/**`, `.npmrc`, `credentials`, and more. Add your own patterns in a per-root **`.mcpignore`** (
highReferences the SSH directory (~/.ssh)
servers/files/src/denylist.ts · line 27 · rule H1
"id_ed25519.*", ".ssh/", ".aws/", ".gnupg/", ".netrc", ".npmrc", ".pypirc", ".git-credentials", "credentials",
highReferences an SSH private key file
servers/files/src/denylist.ts · line 21 · rule H1
"*.keystore", "id_rsa", "id_rsa.*", "id_dsa", "id_ecdsa", "id_ed25519", "id_ed25519.*", ".ssh/", ".aws/", ".g
highReferences the GPG keyring (~/.gnupg)
servers/files/src/denylist.ts · line 29 · rule H1
sh/", ".aws/", ".gnupg/", ".netrc", ".npmrc", ".pypirc", ".git-credentials", "credentials", "secrets.*", "*.secr
highReferences the .netrc credentials file
servers/files/src/denylist.ts · line 30 · rule H1
/", ".gnupg/", ".netrc", ".npmrc", ".pypirc", ".git-credentials", "credentials", "secrets.*", "*.secret", ]; cons
highReferences stored git credentials
servers/files/src/denylist.ts · line 33 · rule H1
c", ".pypirc", ".git-credentials", "credentials", "secrets.*", "*.secret", ]; const cache = new Map<string, Ignore>();
highThis package both touches credential material and sends data over the network (in different files) — review the flow before installing
servers/files/src/denylist.ts · line 1 · rule H1
mediumEnumerates the full process environment (all variables, not one named key)
docs/superpowers/plans/2026-07-04-sql-server.md · line 194 · rule M2
; for (const k of Object.keys(process.env)) if (k.startsWith("DB_CONN_")) { saved[k] = process.env[k]; delete process.env[k]; }
mediumCan run shell commands from code
servers/files/scripts/build-mcpb.mjs · line 15 · rule M1
leSync } from "node:child_process"; import { promises as fs } from "node:fs"; import path from "node:path"; import { fileURLToPath
mediumCan run shell commands from code
servers/files/test/_helpers.mjs · line 2 · rule M1
spawn } from "node:child_process"; import { promises as fs } from "node:fs"; import os from "node:os"; import path from "node:pat
mediumCan run shell commands from code
servers/files/test/hardening.test.mjs · line 5 · rule M1
spawn } from "node:child_process"; import { promises as fs } from "node:fs"; import os from "node:os"; import path from "node:pat
mediumCan run shell commands from code
servers/git/scripts/build-mcpb.mjs · line 15 · rule M1
leSync } from "node:child_process"; import { promises as fs } from "node:fs"; import path from "node:path"; import { fileURLToPath
mediumCan run shell commands from code
servers/git/test/git.test.mjs · line 5 · rule M1
spawn } from "node:child_process"; import { promises as fsp } from "node:fs"; import fs from "node:fs"; import os from "node:os";
mediumCan run shell commands from code
servers/github/scripts/build-mcpb.mjs · line 15 · rule M1
leSync } from "node:child_process"; import { promises as fs } from "node:fs"; import path from "node:path"; import { fileURLToPath
mediumWrites files under the user home directory
servers/github/src/auth.ts · line 57 · rule M5
.pid}.tmp`; await fs.writeFile(tmp, JSON.stringify(cache, null, 2), { mode: 0o600 }); await fs.rename(tmp, file); await fs.c
lowReads named environment variables (normal for API keys; listed in the permission summary)
servers/files/src/config.ts · line 31 · rule L1
g[] { const raw = process.env.FS_ROOTS; if (!raw || !raw.trim()) return []; return raw .split(/[,:;]/) .map((s) => s
lowReads named environment variables (normal for API keys; listed in the permission summary)
servers/files/test/_helpers.mjs · line 25 · rule L1
ERVER], { env: { ...process.env, ...env }, stdio: ["pipe", "pipe", "ignore"] }); const rl = readline.createInterface({ input: pr
lowReads named environment variables (normal for API keys; listed in the permission summary)
servers/files/test/hardening.test.mjs · line 105 · rule L1
ERVER], { env: { ...process.env, FS_ROOTS: "" }, stdio: ["pipe", "pipe", "ignore"] }); const code = await new Promise((r) => pro
lowReads named environment variables (normal for API keys; listed in the permission summary)
servers/files/test/runtime.test.mjs · line 5 · rule L1
de:assert/strict"; process.env.FS_OP_TIMEOUT_MS = "20"; process.env.FS_MAX_CONCURRENCY = "4"; const { guard } = await import("../
lowReads named environment variables (normal for API keys; listed in the permission summary)
servers/git/src/config.ts · line 9 · rule L1
defined { return (process.env.GIT_TOKEN || process.env.GITHUB_TOKEN)?.trim() || undefined; } /** Optional username for HTTPS ba
lowReads named environment variables (normal for API keys; listed in the permission summary)
servers/git/test/git.test.mjs · line 40 · rule L1
ERVER], { env: { ...process.env, ...env }, stdio: ["pipe", "pipe", "ignore"] }); const rl = readline.createInterface({ input: pr
lowReads named environment variables (normal for API keys; listed in the permission summary)
servers/github/src/config.ts · line 15 · rule L1
const n = Number(process.env.GITHUB_TIMEOUT_MS); return Number.isFinite(n) && n > 0 ? n : 30_000; } /** Max items returned b

Permission surface

Network endpoints
api.github.comdocs.npmjs.comexample.comgithub.comhuggingface.coimg.shields.iokeepachangelog.commodelcontextprotocol.ionodejs.orgraw.githubusercontent.comstatic.modelcontextprotocol.iowww.contributor-covenant.orgwww.npmjs.com
Environment read
DB_MAX_ROWSDB_WRITABLEFS_ALLOW_SECRETSFS_AUDIT_LOGFS_MAX_CONCURRENCYFS_OP_TIMEOUT_MSFS_READONLYFS_ROOTSGITHUB_API_URLGITHUB_AUDIT_LOGGITHUB_CLIENT_IDGITHUB_PERSONAL_ACCESS_TOKENGITHUB_READONLYGITHUB_TIMEOUT_MSGITHUB_TOKENGIT_ROOTSGIT_TOKENGIT_USERNAMEGIT_WRITABLEHTTP_ALLOW_HOSTSHTTP_ALLOW_PRIVATEHTTP_AUDIT_LOGHTTP_DIRHTTP_SECRET_HTTP_WRITABLESQL_AUDIT_LOGXDG_CONFIG_HOME
Shell execution
yes — code or scripts can run shell commands
Install hooks
none
Credential material
Enumerates the full process environment (all variables, not one named key)
References the SSH directory (~/.ssh)
Reads named environment variables (normal for API keys; listed in the permission summary)
References an SSH private key file
References the GPG keyring (~/.gnupg)
References the .netrc credentials file
References stored git credentials

Provenance

Source
GitHub
Repository
Abhishekkumar2021/mcp-suite
Owner
Abhishekkumar2021
Stars
1
Forks
0
Repo created
2026-06-27
Last push
2026-07-04
License
MIT

Watch this package

Interest list only. We store the address and this report link, nothing else. No mail is sent in v1.

Share this report: https://preflight.orbitaldeskllc.com/r/93c1346f47f6b196