AppThreat Vulnerability Database MCP server
Project description
Introduction
This folder contains the source code for running VDB as a Model Context Protocol (MCP) server. Below you can find the configuration for running the VDB MCP server with Claude Desktop. Please feel free to share the configuration for other clients via pull requests.
What is available
The MCP server provides:
- Structured JSON tool results with summaries and machine-readable evidence.
- Bulk search tools for package lists and CycloneDX BOMs.
- Filter-aware search for severity thresholds, sources (
osv,nvd,github,aqua), date ranges, malware-only / exclude-malware, package scope (app_only,os_only), package ecosystem, and pagination. - Metadata and full-text search over aliases, references, package names, descriptions, and affected functions/modules.
- Resource templates such as
cve://{id}andpurl://{purl}. - Concrete resources such as
vdb://metadata,vdb://health,vdb://sources, andvdb://malware/latest. - Richer prompts for package-risk assessment, CVE triage, SBOM summaries, fix prioritization, version-match explanations, and overlay review.
Pre-requisites
- Python >= 3.10 installed
- docker or Rancher Desktop (or)
- uv installed
docker-based execution (Recommended)
Use our container image ghcr.io/appthreat/mcp-server-vdb:master.
Claude Desktop configuration
Edit the file using VS code or any editor of your choice. ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows, the config file is $env:AppData\Claude\claude_desktop_config.json. Use the below configuration:
{
"mcpServers": {
"vdb": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"VDB_HOME=/db",
"-v",
"$HOME/vdb:/db:rw",
"ghcr.io/appthreat/mcp-server-vdb:master"
]
}
}
}
nerdctl example.
{
"mcpServers": {
"vdb": {
"command": "nerdctl",
"args": [
"run",
"-i",
"--rm",
"-e",
"VDB_HOME=/db",
"-v",
"$HOME/vdb:/db:rw",
"ghcr.io/appthreat/mcp-server-vdb:master"
]
}
}
}
Restart the Claude Desktop application.
If you get ENOENT error, specify the full path to docker. On a mac, /Applications/Docker.app/Contents/Resources/bin/docker.
Local uv-based execution (Developers only)
git clone https://github.com/AppThreat/vulnerability-db.git
cd vulnerability-db
python -m pip install .
export VDB_HOME=$HOME/vdb
mkdir -p $VDB_HOME
vdb --download-image
uv --directory packages/mcp-server-vdb run mcp-server-vdb
Claude Desktop configuration
Edit the file using VS code or any editor of your choice. ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows, the config file is $env:AppData\Claude\claude_desktop_config.json.
Use the below configuration and adjust the following paths:
- absolute path to the
mcp-server-vdbpackage inside thepackagesdirectory. VDB_HOME- Full path to the directory containing the vulnerability database. Must have runvdb --download-image
{
"mcpServers": {
"vdb": {
"command": "uv",
"args": [
"--directory",
"/Volumes/Work/AppThreat/vulnerability-db/packages/mcp-server-vdb",
"run",
"mcp-server-vdb"
],
"env": {
"VDB_HOME": "/Users/guest/vdb"
}
}
}
}
Restart the Claude Desktop application.
Environment variables
The MCP server uses the same vdb configuration as the CLI. See the root README environment variables for the full reference. The most common MCP settings are:
| Variable | Default | Description |
|---|---|---|
VDB_HOME |
Platform user data directory for vdb |
Directory containing data.vdb6, data.index.vdb6, and vdb.meta. Set this explicitly for Docker volume mounts and local Claude Desktop configurations. |
VDB_AGE_DAYS |
2 |
Number of days before the server treats the local database as stale. When stale or missing and ORAS support is installed, the server downloads the app-only database on startup. Use an integer string. |
VDB_APP_ONLY_DATABASE_URL |
ghcr.io/appthreat/vdbxz-app:v6.7.x |
OCI image URL used by MCP automatic downloads. Override this for internally published app-only artifacts. |
VDB_SQLITE_IMMUTABLE |
unset | Open existing .vdb6 files with SQLite's immutable URI option in read-only deployments. |
If the MCP server needs extended metadata searches such as full-text, alias, reference, package-name, or symbol lookup, point VDB_APP_ONLY_DATABASE_URL at an app-only extended artifact such as ghcr.io/appthreat/vdbxz-app-extended:v6.7.x, use your own mirrored extended image, or pre-populate VDB_HOME with a database built using vdb --cache --include-metadata.
Screenshots
Claude context screen
Claude permissions on first run
Claude results
Latest malware
Configuration for MCP Inspector
- Transport Type: STDIO
- Command: uv
- Arguments:
--directory /absolute/path/to/vulnerability-db/packages/mcp-server-vdb run mcp-server-vdb
Click "Connect"
Testing
- Click "List Tools". You should see structured tools such as
search_by_purl_like,search_full_text,search_packages,search_bom_summary, andsearch_bom_detailed. - Select
search_by_purl_likeand enter a purl string such aspkg:swift/vapor/vapor@4.89.0. - Confirm that the tool returns structured JSON content with
summaryandresults. - Try resources such as
vdb://metadata,vdb://health, orcve://CVE-2024-25169.
Example common search options
Many tools accept the following optional fields in addition to their main locator:
{
"severity_threshold": "HIGH",
"source": ["osv", "github"],
"exclude_malware": true,
"package_ecosystem": "pypi",
"with_data": true,
"summary_only": false,
"include_references": true,
"include_affected_symbols": true,
"include_remediation": true,
"include_evidence": true,
"page": 1,
"page_size": 25
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_server_vdb-6.7.0.tar.gz.
File metadata
- Download URL: mcp_server_vdb-6.7.0.tar.gz
- Upload date:
- Size: 18.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14d4da48ca7d09d9668b925148406775a7c3c5864cd0bc406cae9d3e54506b01
|
|
| MD5 |
f7b756246a7731d4fbb04e8ff04589f2
|
|
| BLAKE2b-256 |
ca147024d68a5f6a2bfdfabecef58346a4efe16b7f8f852140dccac1c022b932
|
File details
Details for the file mcp_server_vdb-6.7.0-py3-none-any.whl.
File metadata
- Download URL: mcp_server_vdb-6.7.0-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15aaf10f1c961370f845b4f179e958d19b72eb48e7adc20302392ad0235fd4fe
|
|
| MD5 |
6f0a492ca854b5bd3d0d87580844e94f
|
|
| BLAKE2b-256 |
7bbd0ed957d1bb92f5e610b0f34302e8ef3820f7e3c1dbeff348b54fadcbc0de
|