MCP-NVD服务器添加福利群:解决AI开发者的「MCP实战痛点」
这是一个 模型上下文协议 服务器实现,通过 API 查询 NIST 国家漏洞数据库 (NVD)。https://nvd.nist.gov/
作为先决条件,需要一个 NVD API 密钥。(在此请求)。
与 Claude 桌面应用程序以及其他使用 stdio 和 sse 传输的符合 MCP 标准的主机和客户端兼容。
该服务器实现了以下工具来查询 NVD 数据库:
get_cve:
cve_id (str): CVE ID(例如:CVE-2019-1010218)。concise (bool, 默认 False): 如果为 True,则返回简短格式。search_cve:
keyword (str): 搜索词(例如:Red Hat)。exact_match (bool, 默认 False): 如果为 True,则要求完全匹配短语。concise (bool, 默认 False): 如果为 True,则返回较短的 CVE 记录。results (int, 默认 10): 最大 CVE 记录数(1-2000)。创建或编辑位于以下位置的 Claude 桌面配置文件:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%/Claude/claude_desktop_config.json添加以下内容:
{
"mcpServers": {
"mcp-nvd": {
"command": "/path/to/uvx",
"args": ["mcp-nvd"],
"env": {
"NVD_API_KEY": "your-api-key"
}
}
}
}

将 /path/to/uvx 替换为 uvx 可执行文件的绝对路径。可以在终端中使用 which uvx 命令找到路径。这确保在启动服务器时使用正确的 uvx 版本。
重启 Claude 桌面应用以应用更改。
git clone https://github.com/marcoeg/mcp-nvd
cd mcp-nvd

设置环境变量:
.env 文件:NVD_API_KEY=your-api-key
your-api-key 替换为你的 NVD API 密钥。安装依赖项:
uv sync
uv pip install -e .

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
在检查器中自由切换
stdio和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 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.yaml 或 README.md 文件中:
此 docker-compose.yaml 位于 tests/ 目录中,定义了一个用于使用预构建的 Docker 镜像测试 MCP-NVD 服务器的服务。它适用于测试用例,类似于独立服务如 clickhouse,并假设镜像是事先构建好的而不是每次重新构建。
mcp-nvd:test 的预构建镜像,可以在本地或注册表中获取。该镜像是基于父目录中的 Dockerfile 构建的,该文件设置了使用 uv 并在端口 9090 上以 SSE 模式运行的 MCP-NVD 服务器。要创建 mcp-nvd:test 镜像:
cd ./mcp-nvd

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。test_tools.py要在 Docker 环境中运行单元测试 (test_tools.py):
docker-compose up 确保 mcp-nvd 服务正在运行。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 .。cd tests
python test_tools.py

http://localhost:9090 进行测试。log-data 卷中(可选)。docker-compose 之前必须构建一次,并标记为 mcp-nvd:test。感谢 @sidharthrajaram 提供的基于 SSE 的 MCP 客户端和服务器的工作模式: https://github.com/sidharthrajaram/mcp-sse