WARDEN — MCP security firewall: vets an MCP server's tool definitions against static-scan rules, a signed threat feed, origin and tool-def pinning before any tool reaches the model. Zero-dependency TypeScript library.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http
verified
reported
listed in the official MCP registry counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 8d9ca82 · analyzer v33 · 5d ago
danger signals2
- over-broad OAuth scope delete_repo alexar76-warden-8d9ca82/src/mcp-tools.ts :309
ify_sensitive_tools({ tools: [{ name: \"delete_repo\", description: \"Delete a repository.\", inputSchema: { type: \"object\" } }], patterns: [\"*delete*\"] }).", - over-broad OAuth scope delete_repo alexar76-warden-8d9ca82/test/mcp-server.test.ts :77
{ name: "delete_repo", description: "Delete a repository.", inputSchema: { type: "object" } },
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 34
filesystem 8
- fs (weak) alexar76-warden-8d9ca82/scripts/check-published-ruleset.mjs :22
import { mkdtempSync, readFileSync, rmSync } from "node:fs"; - fs (weak) alexar76-warden-8d9ca82/scripts/make-badges.mjs :8
import { readFileSync, writeFileSync, mkdirSync } from "node:fs"; - fs (weak) alexar76-warden-8d9ca82/scripts/mcp-survey/scan.mjs :3
import { readFileSync, writeFileSync } from "node:fs"; - fs alexar76-warden-8d9ca82/src/mcp-rpc.ts :5
import { readFileSync } from "node:fs"; - fs (weak) alexar76-warden-8d9ca82/test/docs.test.ts :2
import { existsSync, readFileSync, readdirSync } from "node:fs"; - fs (weak) alexar76-warden-8d9ca82/test/landing.test.ts :2
import { readFileSync, existsSync } from "node:fs"; - fs (weak) alexar76-warden-8d9ca82/test/no-phantom-gate.test.ts :2
import { readdirSync, readFileSync } from "node:fs"; - fs (weak) alexar76-warden-8d9ca82/test/packaging.test.ts :2
import { readFileSync, readdirSync } from "node:fs";
shell / exec 3
- shell (weak) alexar76-warden-8d9ca82/scripts/check-published-ruleset.mjs :21
import { execFileSync } from "node:child_process"; - shell (weak) alexar76-warden-8d9ca82/scripts/make-badges.mjs :9
import { execFileSync } from "node:child_process"; - shell (weak) alexar76-warden-8d9ca82/test/mcp-server.test.ts :2
import { spawn } from "node:child_process";
network 1
- net alexar76-warden-8d9ca82/src/threat-feed.ts :282
const res = await fetch(feedUrl, { signal: ctrl.signal }).finally(() => clearTimeout(timer));
install hooks 1
- prepublishOnly alexar76-warden-8d9ca82/package.json :55
npm run build && npm test && npm run check:ruleset
declared dependencies 4
- @types/node@^22.10.2
- @vitest/coverage-v8@^2.1.9
- typescript@^5.7.2
- vitest@^2.1.8