MCP, MCP server
srcbridge
A sandboxed file-access MCP server for Claude Desktop.
Compatibility: Not stated.
Grade C
One Medium finding. Read the report before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
SECRETS_PATH_CREDENTIAL
Why this grade
- SECRETS_PATH_CREDENTIAL Medium
Mentions a credential store path (~/.ssh, id_rsa, .npmrc, .aws/credentials, credentials.json, .netrc).
selftest.mjs, line 860
await fs.writeFile(sb("secz", "id_rsa"), "-----BEGIN OPENSSH PRIVATE KEY-----\nHUNTER2\n");
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Concern
can delete files.
PERMISSION_DELETE_FILES
selftest.mjs, line 29
await fs.rm(SANDBOX, { recursive: true, force: true });
lib/core.mjs, line 315
try { await fs.unlink(sib); } catch { /* best effort */ }
lib/core.mjs, line 318
try { await fs.unlink(tmp); } catch { /* best effort */ }
Show more
lib/core.mjs, line 324
try { await fs.unlink(tmp); } catch { /* best effort */ }
lib/core.mjs, line 342
if (s.isFile() && s.mtimeMs < cutoff) await fs.unlink(p);
lib/core.mjs, line 414
try { await fs.unlink(path.join(snapDir, mine[k])); pruned++; } catch { /* best effort */ }
Install and update
Pass
No install-time script found, and dependencies are pinned or absent.
Network
Pass
No network call found.
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_CREDENTIAL SECRETS_PATH_DOTENV
selftest.mjs, line 848
// Roots are whole project trees; .env and private keys live in them like any
selftest.mjs, line 858
await fs.writeFile(sb("secz", ".env"), "DATABASE_URL=postgres://u:HUNTER2@db/x\nPORT=3000\n");
selftest.mjs, line 860
await fs.writeFile(sb("secz", "id_rsa"), "-----BEGIN OPENSSH PRIVATE KEY-----\nHUNTER2\n");
Show more
selftest.mjs, line 859
await fs.writeFile(sb("secz", ".env.example"), "DATABASE_URL=postgres://user:pass@host/db\nPORT=3000\n");
selftest.mjs, line 864
await expectErr(".env read refused", handle("read_source", { path: sb("secz", ".env") }), "secret-like");
selftest.mjs, line 865
ok(".env.example is readable (template exemption)",
selftest.mjs, line 866
(await handle("read_source", { path: sb("secz", ".env.example") })).includes("PORT=3000"));
selftest.mjs, line 867
await expectErr("id_rsa read refused", handle("read_source", { path: sb("secz", "id_rsa") }), "id_rsa*");
lib/core.mjs, line 71
const EXTRA_SECRET_GLOBS = (process.env.SRCBRIDGE_SECRET_GLOBS || "")
lib/core.mjs, line 73
const SECRETS_ALLOWED = process.env.SRCBRIDGE_ALLOW_SECRETS === "1";
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Pass
No encoded or minified payload found.
Licence
Pass
A licence file is present (LICENSE).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit d932d0c05de4. can delete files. reads a credential or environment file.
Date and source
Date checked:
github.com
Commit graded: d932d0c05de473b3e33b6347731a4baaced45ff6
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.