vdb-mcp
mcp-name: kr.ai.vdb/vdb
MCP (Model Context Protocol) server for VDB — the AI-aware vulnerability database. Lets Claude Desktop, Claude Code, Cursor, Cline, Continue, and any MCP client check packages while generating code: known CVEs, slopsquatting (LLM-hallucinated package names an attacker may have registered), CISA KEV status, MCP-server trust profiles, and more.
Quick start
uvx vdb-mcp # or: pipx run vdb-mcp
Claude Desktop (claude_desktop_config.json) / Cursor (.cursor/mcp.json):
{
"mcpServers": {
"vdb": { "command": "uvx", "args": ["vdb-mcp"] }
}
}
No install at all — point any streamable-HTTP MCP client at the hosted endpoint:
{
"mcpServers": {
"vdb": { "url": "https://vdb.ai.kr/mcp" }
}
}
That's it — the server talks to the hosted instance at https://vdb.ai.kr
by default. Every tool needs an API key (free at https://vdb.ai.kr/signup,
or the agent can request one by email itself: without a key each tool answers
agent_action: REFUSE with a request_key_url). Currently unmetered beyond
abuse protection:
{
"mcpServers": {
"vdb": {
"command": "uvx",
"args": ["vdb-mcp"],
"env": { "VDB_API_TOKEN": "vdb_..." }
}
}
}
Tools
| Tool | What it does |
|---|---|
vdb_check_package |
Check one package (purl + optional version) for vulnerabilities, slop risk, KEV |
vdb_check_packages |
Bulk slopsquatting / risk check for a list of packages |
vdb_scan_lockfile |
Merge verdict for a whole lockfile / SBOM (transitives included) |
vdb_lookup |
Fetch one advisory by ID (CVE-…, GHSA-…, VDB-SLOP-…) |
vdb_search |
Free-text search over the vulnerability corpus |
vdb_check_mcp_server |
Trust tier + permission scopes of a community MCP server |
vdb_list_slopsquatting |
Current slopsquatting candidates per ecosystem |
vdb_harden (local only) |
Call-site hardening: can attacker data reach a dangerous sink through your dependencies? Source never leaves the machine |
vdb_harden_verify (local only) |
Re-analyze after a fix and get signed evidence the path is closed |
vdb_vex (local only) |
OpenVEX document: which advisories cannot be reached |
The three local-only tools need your files, so the hosted endpoint does not
offer them — seven tools remote, ten with uvx vdb-mcp.
The vdb harden command
The same package installs the CLI behind the local tools, for use without an MCP client (0.2.2 or newer):
uvx --from vdb-mcp vdb harden app.py --manifest uv.lock # analyze a call site
uvx --from vdb-mcp vdb harden --doctor # which of network / key / service is at fault
uvx --from vdb-mcp vdb harden ./src --manifest uv.lock --vex
Where PyPI is unreachable, https://vdb.ai.kr/v1/harden/client.pyz is the
same CLI as one stdlib-only file (hash at /v1/harden/client.sha256):
python3 client.pyz --doctor. Nothing to install.
Environment
| Variable | Default | Meaning |
|---|---|---|
VDB_API_URL |
https://vdb.ai.kr |
VDB instance to query (set for self-hosted) |
VDB_API_TOKEN |
(empty) | vdb_… API key — required for every tool |
VDB_API_ADDR |
144.202.127.83 |
Where VDB lives when this machine's DNS cannot say — see below |
MCP_MODE |
stdio |
stdio or sse (long-running HTTP server) |
MCP_PORT |
7700 |
SSE port |
No outbound DNS?
Sandboxes often allow egress but not name resolution. When — and only when —
resolving vdb.ai.kr fails, the server retries against VDB_API_ADDR. That
bypasses DNS and nothing else: the TLS handshake still presents the real
hostname and validates its certificate, so a pinned connection is exactly as
authenticated as a resolved one. HTTP errors, refused connections and
timeouts are never retried — the name resolved, so the address would be the
same box.
Why
LLMs hallucinate package names; attackers register them (slopsquatting).
LLMs also happily recommend packages with known RCEs. VDB gives your agent a
guardrail: one tool call before npm install / pip install. See
https://vdb.ai.kr/connect for the one-line prompt variant that needs no MCP
at all.
License
Elastic License 2.0 — free to use, including inside commercial organizations and CI. The only restrictions: you may not offer this software to third parties as a hosted or managed service, or resell it as a product. Commercial licensing beyond that: dev@egdee.com. API usage is governed by the VDB service terms regardless of how you call it.
Release files for vdb-mcp 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vdb_mcp-0.2.2.tar.gz | 53.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vdb_mcp-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 104.8 kB
Release files / vdb_mcp-0.2.2.tar.gz
| Download URL | vdb_mcp-0.2.2.tar.gz |
|---|---|
| Size | 53.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4f70eaf202e5a3d4cb861d134614679229f498990853e4d6cbdc0d2d6ad6adc3
|
|
BLAKE2b-256 checksum How to use checksums |
bd2b1d40237c538448a040d434b7881a3ae61b5458963e7dca6acff87945ca2c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.3
|
Release files / vdb_mcp-0.2.2-py3-none-any.whl
| Download URL | vdb_mcp-0.2.2-py3-none-any.whl |
|---|---|
| Size | 50.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
29059bda803b2f7487527c3c3fffc869d97d37d073962de03054bbb9edd6ae89
|
|
BLAKE2b-256 checksum How to use checksums |
a05feb5a0db2c3cba77fd10bbdfba6812f50b1fadeadbf1e83799ebed1d69e6b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.3
|