Skip to main content
Glama

NVD 数据库 MCP 服务器

PyPI - 版本

模型上下文协议服务器实现,通过其 API 查询 NIST 国家漏洞数据库 (NVD)。https ://nvd.nist.gov/

作为先决条件,需要 NVD API 密钥。(在此处请求)。

地位

与 Claude Desktop 应用程序和其他使用stdiosse传输的 MCP 兼容主机和客户端配合使用。

特征

  • 通过 ID 查询特定 CVE 以及详细的漏洞数据。

  • 使用可自定义的结果选项通过关键字搜索 NVD 数据库。

  • 支持服务器发送事件 (SSE) 传输以实现实时通信。

  • 与 Claude Desktop 等符合 MCP 标准的客户端兼容。

工具

服务器实现以下工具来查询 NVD 数据库:

  • get_cve

    • 描述:通过 ID 检索 CVE 记录。

    • 参数

      • cve_id (str): CVE ID(例如, CVE-2019-1010218 )。

      • concise (bool,默认为False ):如果为True ,则返回更短的格式。

    • 返回:详细的 CVE 信息,包括分数、弱点和参考。

  • search_cve

    • 描述:通过关键字搜索 NVD 数据库。

    • 参数

      • keyword (str):搜索词(例如, Red Hat )。

      • exact_match (bool,默认为False ):如果为True ,则需要精确的短语匹配。

      • concise (bool,默认False ):如果为True ,则返回较短的 CVE 记录。

      • results (int,默认值为10 ):CVE 记录的最大数量(1-2000)。

    • 返回:匹配的 CVE 列表及其总数。

配置

  1. 创建或编辑位于以下位置的 Claude Desktop 配置文件:

    • 在 macOS 上: ~/Library/Application Support/Claude/claude_desktop_config.json

    • 在 Windows 上: %APPDATA%/Claude/claude_desktop_config.json

  2. 添加以下内容:

{ "mcpServers": { "mcp-nvd": { "command": "/path/to/uvx", "args": ["mcp-nvd"], "env": { "NVD_API_KEY": "your-api-key" } } } }
  1. /path/to/uvx替换为uvx可执行文件的绝对路径。在终端中使用which uvx命令查找路径。这可确保启动服务器时使用正确版本的uvx

  2. 重新启动 Claude Desktop 以应用更改。

发展

设置

  1. 先决条件

  2. 克隆存储库

git clone https://github.com/marcoeg/mcp-nvd cd mcp-nvd
  1. 设置环境变量

    • 在项目根目录中创建一个.env文件:

      NVD_API_KEY=your-api-key
    • 用您的 NVD API 密钥替换your-api-key

  2. 安装依赖项

uv sync uv pip install -e .

使用 MCP 检查器运行

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

然后打开浏览器访问 MCP Inspector 指示的 URL,通常是http://localhost:8077?proxyPort=8078

在检查器中自由切换stdiosse传输类型。

使用 SSE 客户端进行测试

运行服务器:

cd /path/to/the/repo source .env uv run mcp-nvd --transport sse --port 9090
  • 默认在端口9090上使用 SSE 传输运行。

运行客户端:

测试get_cve

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

测试search_cve (默认10个结果):

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

测试search_cve (完全匹配,5个结果):

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

Docker 设置

建造

docker build -t mcp-nvd:latest .

跑步

使用.env

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

使用环境变量:

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

自定义端口:

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

测试:

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

笔记

  • 确保.env具有NVD_API_KEY=your-key或使用-e

  • 默认端口: 9090


以下是代码块内格式化为 Markdown 注释的摘要,适合包含在docker-compose.yamlREADME.md等文件中:

使用 Docker Compose 进行测试

docker-compose.yaml位于tests/目录中,它定义了一个使用预构建 Docker 镜像测试 MCP-NVD 服务器的服务。它专为测试用例而设计,类似于clickhouse之类的独立服务,并且假定镜像是预先构建的,而不是每次都重新构建。

假设

  • 预构建镜像:该服务使用标记为mcp-nvd:test的预构建镜像,该镜像可在本地或镜像仓库中获取。该镜像基于父目录中的Dockerfile ,该文件使用uv设置了 MCP-NVD 服务器,并在端口 9090 上以 SSE 模式运行它。

如何构建图像

要创建mcp-nvd:test图像:

  1. 导航到项目根目录:

    cd ./mcp-nvd
  2. 使用 Dockerfile 构建镜像:

    docker build -t mcp-nvd:test .
    • 这将使用来自pyproject.tomlmcp_nvd/模块的所有依赖项构建图像,并设置运行服务器的默认命令。

运行服务

tests/目录:

cd tests docker-compose up
  • 访问:服务器运行在http://localhost:9090

  • 停止docker-compose down

  • 环境:确保NVD_API_KEY../.env中或使用docker-compose --env-file ../.env up

在 Docker Compose 场景中运行test_tools.py

要在 Docker 环境中运行单元测试( test_tools.py ):

  1. 启动服务:确保mcp-nvd服务正在通过docker-compose up运行。

  2. 执行到容器中

    • 使用以下命令识别容器名称(例如mcp-nvd-mcp-nvd-1 ):

      docker ps
    • 在容器内运行测试:

      docker exec -it mcp-nvd-mcp-nvd-1 python /app/tests/test_tools.py
    • 注意:假设test_tools.py已复制到镜像的/app/tests/下。如果没有,请修改 Dockerfile 以包含以下内容:

      COPY tests/ ./tests/

      然后使用docker build -t mcp-nvd:test .从根目录重建映像。

  3. 替代方案:针对容器化服务在本地运行测试:

    cd tests python test_tools.py
    • 这会在服务运行时针对http://localhost:9090进行测试。

关键细节

  • 端口:9090 暴露给 SSE 访问。

  • 日志:存储在log-data卷中(可选)。

  • 图像:在运行docker-compose之前必须构建一次并标记为mcp-nvd:test


感谢@sidharthrajaram为基于 SSE 的 MCP 客户端和服务器提供的工作模式: https://github.com/sidharthrajaram/mcp-sse

-
security - not tested
-
license - not tested
-
quality - not tested

Related MCP Servers

  • -
    security
    A
    license
    -
    quality
    A Model Context Protocol server that enables AI assistants to search and retrieve information about security exploits and vulnerabilities from the Exploit Database, enhancing cybersecurity research capabilities.
    Last updated -
    14
    MIT License
    • Linux
    • Apple
  • A
    security
    -
    license
    A
    quality
    A Model Context Protocol server designed for testing backend APIs for security vulnerabilities like authentication bypass, injection attacks, and data leakage.
    Last updated -
    14
    11
    MIT License
  • A
    security
    -
    license
    A
    quality
    A Model Context Protocol server that enables AI-powered analysis of NPM packages through multiple tools for security vulnerability scanning, dependency analysis, package comparison, and quality assessment.
    Last updated -
    19
    183
    8
    TypeScript
    MIT License
    • Apple
    • Linux
  • A
    security
    -
    license
    A
    quality
    A Model Context Protocol server that retrieves CVE information from the National Vulnerability Database, allowing AI models to access up-to-date vulnerability data.
    Last updated -
    1
    7
    Apache 2.0
    • Linux

View all related MCP servers

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/marcoeg/mcp-nvd'

If you have feedback or need assistance with the MCP directory API, please join our Discord server