
Research
/Security News
Critical Vulnerability in NestJS Devtools: Localhost RCE via Sandbox Escape
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
A Model Context Protocol server implementation to query the NIST National Vulnerability Database (NVD) via its API. https://nvd.nist.gov/
As a prerequisite an NVD API key is required. (Request here).
Works with Claude Desktop app and other MCP compliant hosts and clients using both the stdio
and sse
transports.
The server implements the following tools to query the NVD Database:
get_cve
:
cve_id
(str): The CVE ID (e.g., CVE-2019-1010218
).concise
(bool, default False
): If True
, returns a shorter format.search_cve
:
keyword
(str): Search term (e.g., Red Hat
).exact_match
(bool, default False
): If True
, requires an exact phrase match.concise
(bool, default False
): If True
, returns shorter CVE records.results
(int, default 10
): Maximum number of CVE records (1-2000).Create or edit the Claude Desktop configuration file located at:
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%/Claude/claude_desktop_config.json
Add the following:
{
"mcpServers": {
"mcp-nvd": {
"command": "/path/to/uv",
"args": ["run", "mcp-nvd"],
"env": {
"NVD_API_KEY": "your-api-key"
}
}
}
}
Replace /path/to/uv
with the absolute path to the uv
executable. Find the path with which uv
command in a terminal. This ensures that the correct version of uv
is used when starting the server.
Restart Claude Desktop to apply the changes.
Prerequisites:
uv
package manager (installation).Clone the Repository:
git clone https://github.com/marcoeg/mcp-nvd
cd mcp-nvd
Set Environment Variables:
.env
file in the project root:
NVD_API_KEY=your-api-key
your-api-key
with your NVD API key.Install Dependencies:
uv sync
uv pip install -e .
cd /path/to/the/repo
source .env
npx @modelcontextprotocol/inspector uv \
--directory /path/to/repo/mcp-nvd run mcp-nvd
Then open the browser to the URL indicated by the MCP Inspector, typically http://localhost:8077?proxyPort=8078
Switch freely between
stdio
andsse
transport types in the inspector.
cd /path/to/the/repo
source .env
uv run mcp-nvd --transport sse --port 9090
9090
by default.Test get_cve
:
uv run client.py http://localhost:9090/sse CVE-2019-1010218
Test search_cve
(default 10 results):
uv run client.py http://localhost:9090/sse "search:Red Hat"
Test search_cve
(exact match, 5 results):
uv run client.py http://localhost:9090/sse "search:Microsoft Windows:exact:5"
docker build -t mcp-nvd:latest .
With .env
:
docker run -d -p 9090:9090 -v /path/to/.env:/app/.env mcp-nvd:latest
With env var:
docker run -d -p 9090:9090 -e NVD_API_KEY="your-key" mcp-nvd:latest
Custom port:
docker run -d -p 8080:8080 -v /path/to/.env:/app/.env mcp-nvd:latest uv run mcp-nvd --transport sse --port 8080 --host 0.0.0.0
docker logs <container_id>
# Expect: INFO: Uvicorn running on http://0.0.0.0:9090
Test:
uv run client.py http://localhost:9090/sse CVE-2019-1010218
.env
has NVD_API_KEY=your-key
or use -e
.9090
.Here’s the summary formatted as Markdown comments within a code block, suitable for inclusion in a file like docker-compose.yaml
or README.md
:
This docker-compose.yaml
, located in the tests/
directory, defines a service for testing the MCP-NVD server using a pre-built Docker image. It’s designed for a testing use case, similar to a standalone service like clickhouse
, and assumes the image is built beforehand rather than rebuilt each time.
mcp-nvd:test
, available locally or in a registry. The image is based on the Dockerfile
in the parent directory, which sets up the MCP-NVD server with uv
and runs it in SSE mode on port 9090.To create the mcp-nvd:test
image:
cd ./mcp-nvd
docker build -t mcp-nvd:test .
pyproject.toml
and the mcp_nvd/
module, setting the default command to run the server.From the tests/
directory:
cd tests
docker-compose up
http://localhost:9090
.docker-compose down
.NVD_API_KEY
is in ../.env
or use docker-compose --env-file ../.env up
.test_tools.py
in the Docker Compose ScenarioTo run the unit tests (test_tools.py
) within the Docker environment:
mcp-nvd
service is running via docker-compose up
.mcp-nvd-mcp-nvd-1
) with:
docker ps
docker exec -it mcp-nvd-mcp-nvd-1 python /app/tests/test_tools.py
test_tools.py
is copied into the image at /app/tests/
. If not, modify the Dockerfile to include:
COPY tests/ ./tests/
Then rebuild the image with docker build -t mcp-nvd:test .
from the root.cd tests
python test_tools.py
http://localhost:9090
while the service runs.log-data
volume (optional).mcp-nvd:test
before running docker-compose
.Credits to @sidharthrajaram for its working pattern for SSE-based MCP clients and servers: https://github.com/sidharthrajaram/mcp-sse
FAQs
An MCP server to interact with a the NVD Database API.
We found that mcp-nvd demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
Product
Customize license detection with Socket’s new license overlays: gain control, reduce noise, and handle edge cases with precision.
Product
Socket now supports Rust and Cargo, offering package search for all users and experimental SBOM generation for enterprise projects.