This is a security analysis tool that runs as an MCP server to evaluate your npm dependencies. It exposes operations to calculate trust scores (0-100) based on CVE history, maintainer activity, commit frequency, download stats, and funding. You can scan entire dependency trees, check individual packages, detect typosquatting attempts, and identify zombie dependencies that haven't been maintained in over a year. The blast radius analysis shows how many files would be affected if a package were compromised. It also suggests migration paths to safer alternatives using a built-in mapping of 131 packages to 192 alternatives. Useful when you want Claude to audit your supply chain risk during development, especially for projects with deep transitive dependency trees where manual review isn't practical.
Predictive Dependency Security Engine
Quick Start · Features · Algorithm · MCP · Comparison
English | Turkce
Your dependencies have dependencies. Who's watching them?
dep-oracle is a predictive dependency security engine that calculates Trust Scores (0-100) for every package in your dependency tree. It detects zombie dependencies, measures blast radius, catches typosquatting attempts, and predicts future risks — before they become vulnerabilities.
Claude Code Security scans YOUR code. dep-oracle scans everything your code depends on.
npm audit only catches known CVEs — dep-oracle predicts future risks# Zero install — just run it
npx dep-oracle
# Or install globally
npm install -g dep-oracle
dep-oracle scan
# Check a single package
dep-oracle check express
| Feature | Description |
|---|---|
| Trust Score | 0-100 weighted score per package (security, maintainer health, activity, popularity, funding, license) |
| Zombie Detection | Finds unmaintained but critical packages (no commits in 12+ months) |
| Blast Radius | Shows how many files are affected if a dependency is compromised |
| Typosquat Detection | 1,847+ known packages + live npm registry lookup to catch suspicious names |
| Trend Prediction | 3-month risk projection based on download/commit/release trends |
| Migration Advisor | 131 package mappings with 192 safer alternatives for risky dependencies |
| Offline Mode | Works from cache without internet (--offline) |
| MCP Server | Native Claude Code integration — ask about your dependencies in natural language |
| Multi-Format Output | Terminal (colored tree), HTML, JSON, and SARIF |
| GitHub Action | Automate trust checks in your CI/CD pipeline |
# Scan current project
dep-oracle scan
# Scan with specific output format
dep-oracle scan --format json
dep-oracle scan --format html
dep-oracle scan --format sarif
# Check a single package
dep-oracle check lodash
dep-oracle check express@4.18.2
# Offline mode (uses cached data only)
dep-oracle scan --offline
# Set minimum score threshold (exit code 1 if below)
dep-oracle scan --threshold 60
# Ignore specific packages
dep-oracle scan --ignore deprecated-but-needed,legacy-pkg
# Verbose logging
dep-oracle scan --verbose
dep-oracle v1.2.0
Scanning package.json...
Found 47 direct dependencies, 683 transitive
Collecting data... [=============================] 100% (2.3s)
DEPENDENCY TRUST REPORT
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
CRITICAL (score < 50)
■ event-stream@3.3.6 Score: 12 ZOMBIE
Last commit: 2018 | 0 maintainers active
Blast radius: 14 files | Alternative: highland
WARNING (score 50-79)
■ moment@2.29.4 Score: 58 ZOMBIE
Maintenance mode | No new features
Blast radius: 23 files | Alternative: dayjs, date-fns, luxon
SAFE (score 80+): 679 packages
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SUMMARY
Overall Trust Score: 74/100
Critical: 2 | Warning: 3 | Safe: 679
Zombies: 2 | Deprecated: 1
Each package is scored 0-100 based on six weighted metrics:
| Metric | Weight | What It Measures |
|---|---|---|
| Security History | 25% | CVE count with diminishing penalty, average patch time, fast-patch bonus |
| Maintainer Health | 25% | Active maintainers (bus factor), issue response time, PR merge speed |
| Activity | 20% | Commit frequency trend, release cadence, last publish recency |
| Popularity | 15% | Weekly downloads, dependent count, GitHub stars |
| Funding | 10% | GitHub Sponsors, OpenCollective, corporate backing |
| License | 5% | MIT/Apache = safe, GPL = risk, Unknown = red flag |
Score Ranges: 80-100 Safe | 50-79 Warning | 0-49 Critical
The security metric uses a diminishing penalty model — the first vulnerability has the highest impact, and each additional one has progressively less effect:
| Vulnerabilities | Security Score |
|---|---|
| 0 | 100 |
| 1 | 85 |
| 2 | 72 |
| 3 | 60 |
| 4 | 50 |
| 5+ | max(20, 100 - n*12) |
Packages that patch vulnerabilities quickly (within 7 days) receive a +10 bonus. Slower patches (within 30 days) receive +5.
If an API is unreachable (GitHub down, no internet, rate limited), dep-oracle doesn't crash. The missing metric weight is redistributed across available metrics. If 3+ metrics are unavailable, a reliability warning is shown.
The blast radius metric counts how many of your source files directly import a given dependency:
.js, .ts, .jsx, .tsx, .mjs, .mts, .cjs, .cts filesnode_modules, .git, dist, build, coverage, and other build directoriesimport ... from 'pkg', require('pkg'), and dynamic import('pkg') patternsCurrent limitations:
import statements are not yet analyzed (blast radius returns 0 for Python-only projects)Weights are based on the principle that security vulnerabilities and maintainer abandonment are the strongest predictors of supply chain risk, followed by development activity signals. Weights are fully configurable via .dep-oraclerc.json — enterprise teams can adjust to match their specific risk tolerance.
When data is unavailable for a metric, the score is pulled toward the midpoint (50) proportionally to the fraction of missing weight, preventing artificial inflation from missing data.
dep-oracle uses a multi-layer approach to catch typosquatting:
dep-oracle check expresss # Catches: similar to "express" (distance: 1)
dep-oracle check lodashe # Catches: similar to "lodash" (distance: 1)
dep-oracle check react-js # Catches: suffix pattern of "react"
When a package scores low or is flagged as a zombie, dep-oracle suggests safer alternatives from a curated database of 131 package mappings with 192 alternatives:
moment → dayjs, date-fns, luxon
request → axios, got, node-fetch, undici
lodash → lodash-es, radash, just (native alternatives)
express → fastify, koa, hono
gulp → esbuild, tsup, vite
mocha → vitest, jest, node:test
...and 125 more
Each suggestion includes difficulty rating (easy/moderate/hard) and migration context.
dep-oracle is listed on the official MCP Registry and works as an MCP server for Claude Code:
// .claude/settings.json
{
"mcpServers": {
"dep-oracle": {
"command": "npx",
"args": ["dep-oracle", "mcp"]
}
}
}
Then in Claude Code, just ask:
Available MCP Tools:
| Tool | Description |
|---|---|
dep_oracle_scan | Full project dependency scan |
dep_oracle_trust_score | Trust score for a single package |
dep_oracle_blast_radius | Impact analysis for a package |
dep_oracle_zombies | List all zombie dependencies |
dep_oracle_suggest_migration | Get alternative package suggestions |
dep_oracle_typosquat_check | Check typosquatting risk for a package name |
dep_oracle_compare | Compare two packages side-by-side |
dep_oracle_report | Generate a JSON report, optionally to file |
name: Dependency Trust Check
on: [pull_request]
jobs:
dep-oracle:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Run dep-oracle
run: npx dep-oracle scan --format sarif --min-score 60
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Create .dep-oraclerc.json in your project root:
{
"threshold": 60,
"ignore": ["known-risky-but-needed"],
"format": "terminal",
"offline": false,
"githubToken": "$GITHUB_TOKEN",
"cacheTtl": 86400
}
Or add to package.json:
{
"dep-oracle": {
"threshold": 60,
"ignore": []
}
}
| Option | Default | Description |
|---|---|---|
threshold | 60 | Minimum trust score. Packages below trigger warnings and non-zero exit |
ignore | [] | Packages to skip during scanning |
format | "terminal" | Output format: terminal, json, html, sarif |
offline | false | Use only cached data, skip all API calls |
githubToken | null | GitHub token for higher API rate limits (5000/hr vs 60/hr) |
cacheTtl | 86400 | Cache TTL in seconds (default: 24 hours) |
| Manager | Manifest | Lock File | Status |
|---|---|---|---|
| npm | package.json | package-lock.json | Supported |
| yarn | package.json | yarn.lock | Supported |
| pnpm | package.json | pnpm-lock.yaml | Supported |
| pip | requirements.txt | Pipfile.lock | Supported |
| poetry | pyproject.toml | poetry.lock | Supported |
| Feature | npm audit | Dependabot | Socket.dev | Snyk | dep-oracle |
|---|---|---|---|---|---|
| Known CVE scan | Yes | Yes | Yes | Yes | Yes |
| Predictive risk | No | No | Partial | Partial | Yes |
| Trust Score (0-100) | No | No | No | No | Yes |
| Zombie detection | No | No | No | No | Yes |
| Blast radius | No | Partial | No | No | Yes |
| Typosquat detection | No | No | Yes | No | Yes |
| Trend prediction | No | No | No | No | Yes |
| Migration advisor | No | Partial | No | Partial | Yes (131 pkgs) |
| MCP integration | No | No | No | No | Yes |
| Zero install (npx) | Yes | No | No | No | Yes |
| Free & open source | Yes | Yes | Freemium | Freemium | Yes |
Note: dep-oracle is not a replacement for Snyk or Socket.dev in enterprise environments. They have dedicated security research teams and CVE databases. dep-oracle focuses on predictive signals (trust scores, maintenance health, funding, zombie detection) that complement existing tools.
import { scan, checkPackage } from 'dep-oracle';
// Scan a project
const report = await scan({ dir: './my-project', format: 'json' });
// Check a single package
const result = await checkPackage('express');
console.log(result.trustScore); // 74
console.log(result.isZombie); // false
dep-oracle has comprehensive test coverage:
10 test files | 144 tests | 100% passing
trust-score.test.ts 34 tests Scoring engine, metrics, edge cases
zombie-detector.test.ts 10 tests Zombie detection logic
typosquat.test.ts 15 tests Typosquat pattern matching
migration-advisor.test.ts 12 tests Migration suggestions
trend-predictor.test.ts 10 tests Trend prediction engine
parsers.test.ts 17 tests npm + Python parsers
cache.test.ts 15 tests Cache store operations
logger.test.ts 17 tests Logger utility
rate-limiter.test.ts 6 tests Rate limiter
schema.test.ts 8 tests Zod schema validation
npm test # Run all tests
npm run lint # TypeScript type checking
import { scan, checkPackage } from 'dep-oracle'dep_oracle_typosquat_check, dep_oracle_compare, dep_oracle_report (8 total)#egg= fragments in git URLsserver.json now included in npm package for MCP registryreadme field that caused npm to display literal string instead of README contentio.github.ertugrulakben/dep-oracleSee CONTRIBUTING.md for development setup, coding standards, and how to add new collectors, parsers, or analyzers.
com.exploit-intel/eip-mcp
dmontgomery40/pentest-mcp
pantheon-security/notebooklm-mcp-secure
cyanheads/pentest-mcp-server
io.github.akhilucky/ai-firewall-mcp