mcp-nvd

by marcoeg
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Enables searching for vulnerabilities related to Red Hat products in the NVD database using keyword search functionality

Servidor MCP de base de datos NVD

Una implementación de servidor de Protocolo de Contexto Modelo para consultar la Base de Datos Nacional de Vulnerabilidades (NVD) del NIST a través de su API. https://nvd.nist.gov/

Como requisito previo, se requiere una clave API NVD. ( Solicitar aquí ).

Estado

Funciona con la aplicación Claude Desktop y otros hosts y clientes compatibles con MCP utilizando los transportes stdio y sse .

Características

  • Consulta CVE específicos por ID con datos de vulnerabilidad detallados.
  • Busque en la base de datos NVD por palabra clave con opciones de resultados personalizables.
  • Admite el transporte de eventos enviados por el servidor (SSE) para la comunicación en tiempo real.
  • Compatible con clientes compatibles con MCP como Claude Desktop.

Herramientas

El servidor implementa las siguientes herramientas para consultar la base de datos NVD:

  • get_cve :
    • Descripción : Recupera un registro CVE por su ID.
    • Parámetros :
      • cve_id (str): El ID de CVE (por ejemplo, CVE-2019-1010218 ).
      • concise (bool, predeterminado False ): si es True , devuelve un formato más corto.
    • Devuelve : información CVE detallada que incluye puntuaciones, debilidades y referencias.
  • search_cve :
    • Descripción : Busca en la base de datos NVD por palabra clave.
    • Parámetros :
      • keyword (str): término de búsqueda (por ejemplo, Red Hat ).
      • exact_match (bool, predeterminado False ): si es True , requiere una coincidencia de frase exacta.
      • concise (bool, predeterminado False ): si es True , devuelve registros CVE más cortos.
      • results (int, predeterminado 10 ): número máximo de registros CVE (1-2000).
    • Devuelve : Lista de CVE coincidentes con recuento total.

Configuración

  1. Cree o edite el archivo de configuración de Claude Desktop ubicado en:
    • En macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • En Windows: %APPDATA%/Claude/claude_desktop_config.json
  2. Añade lo siguiente:
{ "mcpServers": { "mcp-nvd": { "command": "/path/to/uvx", "args": ["mcp-nvd"], "env": { "NVD_API_KEY": "your-api-key" } } } }
  1. Reemplace /path/to/uvx con la ruta absoluta al ejecutable uvx . Busque la ruta con which uvx en una terminal. Esto garantiza que se use la versión correcta de uvx al iniciar el servidor.
  2. Reinicie Claude Desktop para aplicar los cambios.

Desarrollo

Configuración

  1. Prerrequisitos :
  2. Clonar el repositorio :
git clone https://github.com/marcoeg/mcp-nvd cd mcp-nvd
  1. Establecer variables de entorno :
    • Cree un archivo .env en la raíz del proyecto:
      NVD_API_KEY=your-api-key
    • Reemplace your-api-key con su clave API de NVD.
  2. Instalar dependencias :
uv sync uv pip install -e .

Ejecutar con el inspector MCP

cd /path/to/the/repo source .env npx @modelcontextprotocol/inspector uv \ --directory /path/to/repo/mcp-nvd run mcp-nvd

Luego abra el navegador en la URL indicada por el Inspector MCP, normalmente http://localhost:8077?proxyPort=8078

Cambie libremente entre los tipos de transporte stdio y sse en el inspector.

Pruebas con el cliente SSE

Ejecutar el servidor:

cd /path/to/the/repo source .env uv run mcp-nvd --transport sse --port 9090
  • Se ejecuta con transporte SSE en el puerto 9090 de forma predeterminada.

Ejecutar el cliente:

Prueba get_cve :

uv run client.py http://localhost:9090/sse CVE-2019-1010218

Prueba search_cve (10 resultados predeterminados):

uv run client.py http://localhost:9090/sse "search:Red Hat"

Prueba search_cve (coincidencia exacta, 5 resultados):

uv run client.py http://localhost:9090/sse "search:Microsoft Windows:exact:5"

Configuración de Docker

Construir

docker build -t mcp-nvd:latest .

Correr

Con .env :

docker run -d -p 9090:9090 -v /path/to/.env:/app/.env mcp-nvd:latest

Con variable de entorno:

docker run -d -p 9090:9090 -e NVD_API_KEY="your-key" mcp-nvd:latest

Puerto personalizado:

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

Verificar

docker logs <container_id> # Expect: INFO: Uvicorn running on http://0.0.0.0:9090

Prueba:

uv run client.py http://localhost:9090/sse CVE-2019-1010218

Notas

  • Asegúrese de que .env tenga NVD_API_KEY=your-key o use -e .
  • Puerto predeterminado: 9090 .

Aquí está el resumen formateado como comentarios Markdown dentro de un bloque de código, adecuado para su inclusión en un archivo como docker-compose.yaml o README.md :

Uso de Docker Compose para pruebas

Este docker-compose.yaml , ubicado en el directorio tests/ , define un servicio para probar el servidor MCP-NVD mediante una imagen de Docker precompilada. Está diseñado para un caso de uso de prueba, similar a un servicio independiente como clickhouse , y asume que la imagen se compila previamente en lugar de reconstruirse cada vez.

Suposiciones

  • Imagen precompilada : El servicio utiliza una imagen precompilada etiquetada como mcp-nvd:test , disponible localmente o en el registro. La imagen se basa en el Dockerfile del directorio principal, que configura el servidor MCP-NVD con uv y lo ejecuta en modo SSE en el puerto 9090.

Cómo construir la imagen

Para crear la imagen mcp-nvd:test :

  1. Vaya a la raíz del proyecto:
    cd ./mcp-nvd
  2. Construya la imagen usando el Dockerfile:
    docker build -t mcp-nvd:test .
    • Esto crea la imagen con todas las dependencias de pyproject.toml y el módulo mcp_nvd/ , configurando el comando predeterminado para ejecutar el servidor.

Ejecución del servicio

Desde el directorio tests/ :

cd tests docker-compose up
  • Acceso : El servidor se ejecuta en http://localhost:9090 .
  • Detener : docker-compose down .
  • Entorno : asegúrese de que NVD_API_KEY esté en ../.env o use docker-compose --env-file ../.env up .

Ejecución test_tools.py en el escenario de Docker Compose

Para ejecutar las pruebas unitarias ( test_tools.py ) dentro del entorno Docker:

  1. Iniciar el servicio : asegúrese de que el servicio mcp-nvd se esté ejecutando mediante docker-compose up .
  2. Ejecutar en el contenedor :
    • Identifique el nombre del contenedor (por ejemplo, mcp-nvd-mcp-nvd-1 ) con:
      docker ps
    • Ejecute las pruebas dentro del contenedor:
      docker exec -it mcp-nvd-mcp-nvd-1 python /app/tests/test_tools.py
    • Nota : Se asume que test_tools.py se copia en la imagen en /app/tests/ . De lo contrario, modifique el Dockerfile para incluir:
      COPY tests/ ./tests/
      Luego reconstruya la imagen con docker build -t mcp-nvd:test . desde la raíz.
  3. Alternativa : ejecutar pruebas localmente contra el servicio en contenedor:
    cd tests python test_tools.py
    • Esta prueba se realiza contra http://localhost:9090 mientras se ejecuta el servicio.

Detalles clave

  • Puerto : 9090 está expuesto para acceso SSE.
  • Registros : se almacenan en un volumen log-data (opcional).
  • Imagen : debe compilarse una vez y etiquetarse como mcp-nvd:test antes de ejecutar docker-compose .

Créditos a @sidharthrajaram por su patrón de trabajo para clientes y servidores MCP basados en SSE: https://github.com/sidharthrajaram/mcp-sse

-
security - not tested
A
license - permissive license
-
quality - not tested

Una implementación de servidor de Protocolo de Contexto Modelo para consultar la Base de Datos de Vulnerabilidad Nacional (NVD) del NIST a través de su API.

  1. Status
    1. Features
      1. Tools
    2. Configuration
      1. Development
        1. Setup
        2. Run with the MCP Inspector
        3. Testing with the SSE Client
      2. Docker Setup
        1. Build
        2. Run
        3. Verify
        4. Notes
        5. Using Docker Compose for Testing
      ID: 7dfi396x58