Skip to main content
Glama

NVD 데이터베이스 MCP 서버

PyPI - 버전

API를 통해 NIST 국가 취약성 데이터베이스(NVD)를 쿼리하기 위한 모델 컨텍스트 프로토콜 서버 구현. https://nvd.nist.gov/

필수 조건으로 NVD API 키가 필요합니다. ( 여기서 요청하세요 )

상태

stdiosse 전송을 모두 사용하는 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 목록입니다.

구성

  1. 다음 위치에 있는 Claude Desktop 구성 파일을 만들거나 편집하세요.

    • macOS의 경우: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows의 경우: %APPDATA%/Claude/claude_desktop_config.json

  2. 다음을 추가합니다.

지엑스피1

  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 검사관과 함께 실행

cd /path/to/the/repo source .env npx @modelcontextprotocol/inspector uv \ --directory /path/to/repo/mcp-nvd run mcp-nvd

그런 다음 MCP 검사기에서 지정한 URL(일반적으로 http://localhost:8077?proxyPort=8078 로 브라우저를 엽니다.

검사기에서 stdiosse 전송 유형을 자유롭게 전환합니다.

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

env var를 사용하여:

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

노트

  • .envNVD_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 이미지를 생성하려면:

  1. 프로젝트 루트로 이동합니다.

    cd ./mcp-nvd
  2. Dockerfile을 사용하여 이미지를 빌드합니다.

    docker build -t mcp-nvd:test .
    • 이렇게 하면 pyproject.tomlmcp_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 볼륨에 저장됩니다(선택 사항).

  • 이미지 : docker-compose 실행하기 전에 한 번 빌드하고 mcp-nvd:test 로 태그를 지정해야 합니다.


SSE 기반 MCP 클라이언트 및 서버에 대한 작업 패턴에 대한 @sidharthrajaram 의 공로를 인정합니다: https://github.com/sidharthrajaram/mcp-sse

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/marcoeg/mcp-nvd'

If you have feedback or need assistance with the MCP directory API, please join our Discord server