Dependency intelligence for AI agents. CVE scanning, health checks, upgrade planning.
io.github.runyourempire/4da-mcp-server MCP Server
This MCP server provides dependency intelligence for AI agents, including live CVE scanning, dependency health checks, and upgrade planning. Its scope includes ecosystem news and persistent decision memory, and it is designed to require no configuration. It supports use in agent workflows where dependency status and upgrade decisions matter.
๐ ๏ธ Key Features
Live CVE scanning
Dependency health checks
Upgrade planning
Ecosystem news
Persistent decision memory
Zero-config setup
๐ Use Cases
Monitoring dependencies for known vulnerabilities (CVE scanning)
Verifying the health of project dependencies
Planning dependency upgrades for AI-assisted coding work
Incorporating ecosystem news into agent decisions
Maintaining agent decision context over time
โก Developer Benefits
Integrates vulnerability scanning into AI agent pipelines
Provides health signals for dependency management
Supports upgrade planning from the same dependency-focused workflow
โ ๏ธ Limitations
Limited public details beyond the listed functionality (no additional capabilities or tooling specifics provided).
Dependency intelligence for AI coding agents. Live CVE scanning, dependency health checks, upgrade planning, ecosystem news, and persistent decision memory. Zero config, privacy-first.
code
You: "Check my dependency health"
Claude: Health: 72/100. 47 dependencies scanned, 3 vulnerable, 1 deprecated, 8 outdated.
CRITICAL openssl-sys 0.9.93 CVE-2025-4231 -> 0.9.96
HIGH serde 1.0.197 RUSTSEC-2026-12 -> 1.0.210
MEDIUM cookie 0.17.0 deprecated -> 0.18.1
Quick wins: 6 patch upgrades, 2 minor. Run upgrade_planner for full plan.
One command to install. No API keys. No accounts. No code leaves your machine.
Install
bash
claude mcp add 4da -- npx @4da/mcp-server
Cursor / Windsurf
Add to ~/.cursor/mcp.json or ~/.windsurf/mcp.json:
Then ask your AI: "Check my dependency health" or "Scan for vulnerabilities"
How It Works
On startup, the server reads your manifest and lock files (package.json, Cargo.toml, go.mod, pyproject.toml), resolves exact dependency versions, and queries live APIs. It re-reads them whenever a lockfile changes, so a long-running server never answers for yesterday's dependency set. For npm it also checks what node_modules actually holds: an installed copy that differs from the lockfile is reported with its reinstall command, instead of hiding behind a patched lockfile.
OSV.dev for known CVEs across all ecosystems
npm registry for version freshness, deprecation status, and weekly downloads
crates.io sparse index for Rust package versions (avoids the 1 req/s API limit)
PyPI JSON API for Python package metadata with license normalization
Go module proxy for Go module versions
Hacker News Algolia API for ecosystem news filtered by your tech stack
Results are cached (24h for registry data, 1h for vulnerabilities, 30min for news) and rate-limited per source.
What's sent over the network: package names + versions, generic tech keywords. The same data visible in your package.json. No source code, no file paths, no personal data. Set FOURDA_OFFLINE=true to disable all network calls.
The one exception: if you explicitly configure an OpenAI embedding provider (FOURDA_EMBED_PROVIDER=openai) for semantic recall, the decision/memory text you store is sent to OpenAI to be embedded. The default โ no embedding provider, or a local Ollama one โ keeps everything on your machine, and FOURDA_OFFLINE=true overrides it regardless.
"Check my dependency health" -> dependency_health
"Scan for vulnerabilities" -> vulnerability_scan
"Which deps should I upgrade first?" -> upgrade_planner
"What should I know before I start coding?" -> what_should_i_know
"What's happening in the ecosystem?" -> ecosystem_pulse
"What's my tech stack?" -> get_context
"Record a decision: we chose Postgres" -> decision_memory
"Does switching to MySQL align?" -> check_decision_alignment
"Remember: never use ORM for batch inserts" -> agent_memory
All 14 Tools
Dependency Security
Tool
What it does
vulnerability_scan
Live CVE scanning via OSV.dev. Severity, fix versions, CVSS scores.
dependency_health
Health score (0-100) + version freshness, deprecation, CVE counts per dependency.
upgrade_planner
Ranked upgrade recommendations. Quick wins vs. breaking changes. Risk-sorted.
Streamable HTTP -- for remote or multi-client setups:
bash
npx @4da/mcp-server --http --port 4840
The HTTP transport binds to 127.0.0.1 by default and applies a Host-header
DNS rebinding guard to every request. Exposing it beyond this machine requires
a shared secret:
bash
MCP_AUTH_SECRET=<same value as the relay's JWT_SECRET> \
MCP_ALLOWED_HOSTS=mcp.internal \
npx @4da/mcp-server --http --host 0.0.0.0
Without MCP_AUTH_SECRET a non-loopback bind is refused at startup. With it,
every request must carry a Bearer token whose HMAC-SHA256 signature verifies
against that secret, and the token's role is enforced per tool (viewer is
read-only; member and admin may write). Put TLS in front of it.
CLI Reference
code
npx @4da/mcp-server # Start server (stdio)
npx @4da/mcp-server --http # Start server (Streamable HTTP)
npx @4da/mcp-server --setup # Auto-configure your editors
npx @4da/mcp-server --doctor # Verify installation health
npx @4da/mcp-server --version # Print version
Environment Variables
Variable
Description
Default
FOURDA_DB_PATH
Path to 4DA's SQLite database
Auto-detected
FOURDA_OFFLINE
Disable all network calls
false
MCP_AUTH_SECRET
Shared secret for verifying Bearer tokens on --http (HMAC-SHA256). Falls back to JWT_SECRET. Unset means no token is accepted.
Unset
MCP_AUTH_REQUIRED
Require auth on a loopback--http bind. Always required on a non-loopback bind.
false
MCP_ALLOWED_HOSTS
Extra comma-separated hostnames accepted in Host/Origin (needed when binding to 0.0.0.0).
localhost only
FAQ
Does this send my code anywhere?
No. The server sends package names and versions to public APIs (OSV.dev, npm registry, crates.io, PyPI, Go proxy) and generic tech keywords to HN Algolia. The same public data visible in your package.json. No source code, no file paths, no personal data. Set FOURDA_OFFLINE=true to disable all network calls. (The sole exception is opt-in OpenAI embeddings โ see the network note above.)
Do I need the 4DA desktop app?
No. 9 tools work standalone: vulnerability scanning, dependency health, upgrade planning, ecosystem news, pre-task briefings, project context, decision memory, alignment checking, and agent memory. The desktop app adds a scored content feed from 20+ sources, graded against your actual stack.
Which AI tools does this work with?
Any tool that supports MCP: Claude Code, Claude Desktop, Cursor, Windsurf, VS Code (Copilot), and any custom MCP client.