返回市场
麦普-显卡驱动

麦普-显卡驱动

作者:marcoeg10 星标更新:2025-03-24

项目介绍

NVD 数据库 MCP 服务器

PyPI - 版本

<a href="https://glama.ai/mcp/servers/@marcoeg/mcp-nvd"> <img width="380" height="200" src="https://gips3.baidu.com/it/u=3189050230,2770053669&fm=3081&app=3081&f=PNG?w=760&h=400" /> </a>

这是一个实现 Model Context Protocol(MCP)的服务器,用于通过其API查询美国国家标准与技术研究院(NIST)的国家漏洞数据库(NVD)。https://nvd.nist.gov/

作为前提条件,需要一个NVD API密钥。(在这里请求)。

状态

与 Claude Desktop 应用程序和其他支持 MCP 的主机和客户端兼容,使用 stdiosse 传输方式。

功能

  • 通过ID查询特定的CVE,并获取详细的漏洞数据。
  • 使用关键词搜索NVD数据库,并可自定义结果选项。
  • 支持服务器发送事件(SSE)传输方式,以实现实时通信。
  • 兼容如 Claude Desktop 这样的 MCP 兼容客户端。

工具

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

  • get_cve:

    • 描述: 根据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
      
    • your-api-key 替换为您的 NVD API 密钥。
  2. 安装依赖项:

uv sync
uv pip install -e .

使用 MCP Inspector 运行

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

在 inspector 中自由切换 stdiosse 传输类型。

使用 SSE 客户端测试

启动服务器:

cd /path/to/the/repo
source .env

uv run mcp-nvd --transport sse --port 9090
  • 默认情况下使用 SSE 传输方式在端口 9090 上运行。

启动客户端:

测试 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>
# 期望输出: INFO: Uvicorn 正在 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

以下是适合包含在 docker-compose.yamlREADME.md 文件中的 Markdown 注释格式总结:

使用 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.toml 中的所有依赖项和 mcp_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. 启动服务: 确保通过 docker-compose up 运行 mcp-nvd 服务。
  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 卷中(可选)。
  • 镜像: 必须构建一次并标记为 mcp-nvd:test,然后再运行 docker-compose

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