项目简介

这是一个基于Model Context Protocol (MCP) 实现的服务器应用,专门用于与美国国家漏洞数据库(NVD)进行交互。它将NVD提供的CVE(Common Vulnerabilities and Exposures)漏洞信息封装成一个MCP工具,使得支持MCP协议的大型语言模型(LLM)客户端能够通过标准化的方式查询特定的CVE详细信息。

主要功能点

  • CVE数据查询: 提供一个名为 'nvd_tool' 的工具,允许LLM客户端通过指定CVE ID(例如 'CVE-2025-12345')来获取该漏洞的详细数据。
  • 标准协议通信: 通过JSON-RPC over Stdio等传输方式与MCP客户端进行通信。
  • 能力声明: 向连接的MCP客户端声明其提供的工具('nvd_tool')及其输入参数要求。

安装步骤

  1. 安装必备工具:

    • 安装 'uv':一个快速的Python包管理器和构建工具。
    • 安装 Node.js:用于使用MCP Inspector等工具。
  2. 同步依赖:

    • 进入项目目录。
    • 运行 'uv sync' 命令安装项目所需的Python依赖,并更新lockfile。
  3. 配置NVD API密钥 (可选): 如果需要更高的速率限制,可以从NVD网站申请API密钥,并将其配置在 '.env' 文件中(项目代码中提到了加载dotenv,但未直接使用API key参数,这可能需要根据NVD库的具体实现调整或确认其如何读取环境变量)。

服务器配置

MCP服务器通常由MCP客户端(例如,支持MCP的LLM应用程序或调试工具)启动和管理。客户端需要知道如何执行服务器程序。对于此MCP NVD服务器,典型的客户端配置信息如下:

// 这是一个JSON格式的配置示例,供MCP客户端使用。
// 实际配置方式取决于你使用的MCP客户端软件。
{
  "server": {
    "name": "mcp-nvd", // 服务器在MCP中的名称
    "command": "python", // 启动服务器的命令
    "args": [
      "-m",
      "mcp_nvd" // 作为Python模块运行服务器
    ]
  },
  // 其他可能的配置,如传输协议等
  // "protocol": "stdio" // 例如使用标准输入输出协议
}
  • 'name': MCP客户端用来引用此服务器的标识符,这里是 'mcp-nvd'。
  • 'command': 执行服务器程序的可执行文件路径,这里是 'python'。
  • 'args': 传递给 'command' 的命令行参数, '-m mcp_nvd' 指示Python解释器运行 'mcp_nvd' 模块中的主函数(即 'src/mcp_nvd/init.py' 里的 'main' 函数,它会启动服务器)。

基本使用方法

  1. 启动服务器: 通过兼容的MCP客户端启动此服务器进程,如上面的“服务器配置”所示。
  2. LLM调用工具: 支持MCP协议的LLM客户端(例如,通过LangChain, LlamaIndex等框架集成)在需要获取某个CVE的详细信息时,可以通过其MCP集成调用服务器提供的 'nvd_tool' 工具。
  3. 提供参数: LLM客户端在调用 'nvd_tool' 时,需要提供一个名为 'cve_id' 的字符串参数,其值就是要查询的CVE ID(例如 '"cve_id": "CVE-2025-30065"')。
  4. 接收结果: MCP服务器会查询NVD,并将获取到的CVE数据(通常是JSON格式的字符串表示)返回给LLM客户端,LLM可以解析和利用这些信息。

可以使用 MCP Inspector 工具来测试服务器:

# 假设你已经在项目目录下,并且uv和Node.js已安装
npx @modelcontextprotocol/inspector uv --directory . run mcp-nvd

这会启动MCP Inspector并尝试连接到通过 'uv run mcp-nvd' 启动的MCP服务器。

信息

分类

网页与API