项目简介
这是一个基于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')及其输入参数要求。
安装步骤
-
安装必备工具:
- 安装 'uv':一个快速的Python包管理器和构建工具。
- 安装 Node.js:用于使用MCP Inspector等工具。
-
同步依赖:
- 进入项目目录。
- 运行 'uv sync' 命令安装项目所需的Python依赖,并更新lockfile。
-
配置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' 函数,它会启动服务器)。
基本使用方法
- 启动服务器: 通过兼容的MCP客户端启动此服务器进程,如上面的“服务器配置”所示。
- LLM调用工具: 支持MCP协议的LLM客户端(例如,通过LangChain, LlamaIndex等框架集成)在需要获取某个CVE的详细信息时,可以通过其MCP集成调用服务器提供的 'nvd_tool' 工具。
- 提供参数: LLM客户端在调用 'nvd_tool' 时,需要提供一个名为 'cve_id' 的字符串参数,其值就是要查询的CVE ID(例如 '"cve_id": "CVE-2025-30065"')。
- 接收结果: 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