EUVD-MCP
Provides tools for querying the European Union Vulnerability Database (EUVD) maintained by ENISA, including searching for vulnerabilities, getting latest critical or exploited vulnerabilities, and looking up specific vulnerabilities and advisories.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@EUVD-MCPFind recent exploited vulnerabilities"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
EUVD-MCP
MCP server for the European Union Vulnerability Database (EUVD) maintained by ENISA.
Features
Search vulnerabilities with flexible filters (CVSS, EPSS, dates, product, vendor, exploited status, etc.)
Get latest, critical, and exploited vulnerabilities
Lookup specific vulnerabilities and advisories by ID
Automatic retries with exponential backoff
Bounded TTL cache (
cachetools.TTLCache) for list endpointsStructured logging (always to stderr — safe for stdio transport)
/healthliveness endpoint and/metricsobservability endpoint (HTTP mode)Startup connectivity check to the EUVD API
Two transport modes: HTTP (standalone/Docker) and stdio (subprocess/Claude Desktop)
Related MCP server: vuln-nist-mcp-server
Requirements
Python 3.14+
Installation
git clone <repository-url>
cd euvdmcp
poetry installCopy the example environment file and adjust as needed:
cp .env.template .envConfiguration
All settings are read from environment variables (or a .env file at the project root).
Variable | Default | Description |
|
| Transport mode: |
|
| Server bind address (HTTP mode only) |
|
| Server port (HTTP mode only) |
|
| EUVD API base URL |
|
| HTTP request timeout (seconds) |
|
| Max retries on transient failures |
|
| TTL for cached list responses (seconds) |
|
| Maximum entries in the response cache |
|
| Logging level ( |
|
| User-Agent header sent to the EUVD API |
Running
uvicorn (recommended)
uvicorn euvd_mcp.main:app --host 127.0.0.1 --port 8000With live reload during development:
uvicorn euvd_mcp.main:app --host 127.0.0.1 --port 8000 --reloadPoetry
poetry run python -m euvd_mcp.mainServer runs on http://127.0.0.1:8000/mcp by default.
Docker
Build the image:
make docker-buildRun with a .env file (configuration is not baked into the image):
make docker-run # uses .env automaticallyOr docker-compose:
make compose-up # start
make compose-logs # tail logs
make compose-down # stopstdio (Claude Desktop / subprocess)
TRANSPORT=stdio poetry run python -m euvd_mcp.mainNote: In stdio mode the
/healthand/metricsendpoints are not available. Logs go to stderr so they do not interfere with the MCP protocol on stdout.
Integrating with LLM Clients
Claude Desktop — HTTP (server running separately)
Add to your Claude Desktop configuration file:
macOS/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"euvd": {
"url": "http://127.0.0.1:8000/mcp"
}
}
}Claude Desktop — stdio (subprocess)
{
"mcpServers": {
"euvd": {
"command": "poetry",
"args": ["run", "python", "-m", "euvd_mcp.main"],
"env": { "TRANSPORT": "stdio" }
}
}
}Claude Desktop — Docker
{
"mcpServers": {
"euvd": {
"command": "docker",
"args": [
"run", "--rm", "-p", "8000:8000",
"--env-file", "/absolute/path/to/.env",
"euvd-mcp:local"
]
}
}
}Example queries
"What are the latest critical vulnerabilities?"
"Search for exploited vulnerabilities with CVSS score above 8.0"
"Get details for vulnerability EUVD-2024-45012"
"Find vulnerabilities from Microsoft published in the last 30 days"
Available Tools
Tool | Description |
| Latest vulnerabilities (up to 8) |
| Latest exploited vulnerabilities |
| Latest critical vulnerabilities (CVSS ≥ 9.0) |
| Search with CVSS, EPSS, date, vendor, product, and exploited filters |
| Fetch a single vulnerability by EUVD ID (e.g. |
| Fetch an advisory by its vendor-assigned ID |
Observability
Two endpoints are available in HTTP mode:
Endpoint | Description |
| Liveness probe — returns |
| Request counts, per-tool latencies, cache hit/miss ratio, error breakdown |
Project Structure
euvdmcp/
├── euvd_mcp/
│ ├── main.py # MCP server, tool definitions, health/metrics routes
│ ├── controllers/
│ │ └── euvd_api.py # Async API client with retry and TTL cache
│ ├── models/
│ │ ├── input_models.py # Pydantic input validation models
│ │ └── vulnerability.py # Response data models
│ ├── utils/
│ │ ├── settings.py # Configuration (pydantic-settings)
│ │ ├── logging_config.py # Structured logging setup
│ │ └── metrics.py # In-process metrics collector
│ └── tests/ # pytest test suite
├── Dockerfile # Multi-stage build, non-root user, HEALTHCHECK
├── docker-compose.yml
├── Makefile
└── pyproject.tomlDevelopment
poetry install # install all dependencies (incl. dev)
make pre-commit-setup # install git hooks
make test # run tests
make test-cov # run tests with coverage report
make lint # ruff + mypy
make format # auto-format with ruff
make security # bandit + pip-auditCI
Three GitHub Actions workflows run on every PR to main:
CI — tests, security scan (bandit + pip-audit), lock-file check, Docker build
Code Quality — ruff lint/format, mypy type check, markdown validation
Security Scan — Trivy container scan, results uploaded to GitHub Security tab
License
See LICENSE
Author
Duarte Dias
Acknowledgments
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/TLDart/EUVD-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server