NVD 데이터베이스 MCP 서버
API를 통해 NIST 국가 취약성 데이터베이스(NVD)를 쿼리하기 위한 모델 컨텍스트 프로토콜 서버 구현. https://nvd.nist.gov/
필수 조건으로 NVD API 키가 필요합니다. ( 여기서 요청하세요 )
상태
stdio 와 sse 전송을 모두 사용하는 Claude Desktop 앱 및 기타 MCP 호환 호스트와 클라이언트와 함께 작동합니다.
Related MCP server: CyberMCP
특징
자세한 취약성 데이터를 사용하여 ID로 특정 CVE를 쿼리합니다.
사용자 정의 가능한 결과 옵션을 사용하여 키워드로 NVD 데이터베이스를 검색하세요.
실시간 통신을 위해 SSE(Server-Sent Events) 전송을 지원합니다.
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(정수, 기본값10): CVE 레코드의 최대 수(1-2000).
반환 : 총 개수와 일치하는 CVE 목록입니다.
구성
다음 위치에 있는 Claude Desktop 구성 파일을 만들거나 편집하세요.
macOS의 경우:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows의 경우:
%APPDATA%/Claude/claude_desktop_config.json
다음을 추가합니다.
지엑스피1
/path/to/uvx``uvx실행 파일의 절대 경로로 바꾸세요. 터미널에서which uvx명령이 실행되는 경로를 찾으세요. 이렇게 하면 서버를 시작할 때 올바른 버전의uvx사용됩니다.변경 사항을 적용하려면 Claude Desktop을 다시 시작하세요.
개발
설정
환경 변수 설정 :
프로젝트 루트에
.env파일을 만듭니다.NVD_API_KEY=your-api-keyyour-api-keyNVD API 키로 바꾸세요.
종속성 설치 :
MCP 검사관과 함께 실행
그런 다음 MCP 검사기에서 지정한 URL(일반적으로 http://localhost:8077?proxyPort=8078 로 브라우저를 엽니다.
검사기에서
stdio와sse전송 유형을 자유롭게 전환합니다.
SSE 클라이언트로 테스트
서버를 실행합니다:
기본적으로 포트
9090에서 SSE 전송을 실행합니다.
클라이언트를 실행합니다:
get_cve 테스트:
search_cve 테스트(기본 10개 결과):
search_cve 테스트(정확히 일치, 결과 5개):
도커 설정
짓다
달리다
.env 사용하여:
env var를 사용하여:
사용자 지정 포트:
확인하다
시험:
노트
.env에NVD_API_KEY=your-key있는지 확인하거나-e사용하세요.기본 포트:
9090.
다음은 docker-compose.yaml 이나 README.md 와 같은 파일에 포함하기에 적합한 코드 블록 내의 마크다운 주석 형식으로 요약한 것입니다.
테스트를 위해 Docker Compose 사용
tests/ 디렉터리에 있는 이 docker-compose.yaml 파일은 미리 빌드된 Docker 이미지를 사용하여 MCP-NVD 서버를 테스트하는 서비스를 정의합니다. 이 파일은 clickhouse 와 같은 독립형 서비스와 유사한 테스트 사용 사례용으로 설계되었으며, 이미지가 매번 다시 빌드되는 대신 미리 빌드된다고 가정합니다.
가정
미리 빌드된 이미지 : 이 서비스는 로컬 또는 레지스트리에서 사용할 수 있는
mcp-nvd:test태그가 지정된 미리 빌드된 이미지를 사용합니다. 이미지는 상위 디렉터리의Dockerfile기반으로 하며, 이 파일은 MCP-NVD 서버를uv로 설정하고 9090 포트에서 SSE 모드로 실행합니다.
이미지를 구축하는 방법
mcp-nvd:test 이미지를 생성하려면:
프로젝트 루트로 이동합니다.
cd ./mcp-nvdDockerfile을 사용하여 이미지를 빌드합니다.
docker build -t mcp-nvd:test .이렇게 하면
pyproject.toml과mcp_nvd/모듈의 모든 종속성이 포함된 이미지가 빌드되고, 서버를 실행하기 위한 기본 명령이 설정됩니다.
서비스 실행
tests/ 디렉토리에서:
접속 : 서버는
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 )를 실행하려면:
서비스 시작 :
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에 대한 테스트입니다.
주요 세부 정보
포트 : 9090은 SSE 접속을 위해 공개되었습니다.
로그 :
log-data볼륨에 저장됩니다(선택 사항).이미지 :
docker-compose실행하기 전에 한 번 빌드하고mcp-nvd:test로 태그를 지정해야 합니다.
SSE 기반 MCP 클라이언트 및 서버에 대한 작업 패턴에 대한 @sidharthrajaram 의 공로를 인정합니다: https://github.com/sidharthrajaram/mcp-sse