DefectDojo MCP Server

MIT License
1
  • Linux
  • Apple

Integrations

  • Provides a Model Context Protocol (MCP) server implementation for DefectDojo (built on Django), enabling interaction with DefectDojo's vulnerability management system, including tools for managing findings, products, and engagements.

DefectDojo MCP 서버

이 프로젝트는 인기 있는 오픈소스 취약점 관리 도구인 DefectDojo를 위한 모델 컨텍스트 프로토콜(MCP) 서버 구현을 제공합니다. 이를 통해 AI 에이전트와 다른 MCP 클라이언트가 DefectDojo API와 프로그래밍 방식으로 상호 작용할 수 있습니다.

특징

이 MCP 서버는 주요 DefectDojo 엔터티를 관리하기 위한 도구를 제공합니다.

  • 결과: 가져오기, 검색, 생성, 상태 업데이트 및 메모 추가.
  • 제품: 구매 가능한 제품을 나열합니다.
  • 약속: 약속을 나열하고, 세부 정보를 검색하고, 약속을 만들고, 업데이트하고, 마감합니다.

설치 및 실행

이 서버를 실행하는 방법에는 여러 가지가 있습니다.

uvx 사용(권장)

uvx 임시 가상 환경에서 Python 애플리케이션을 실행하여 종속성을 자동으로 설치합니다.

지엑스피1

pip 사용하기

pip 사용하여 Python 환경에 패키지를 설치할 수 있습니다.

# Install directly from the cloned source code directory pip install . # Or, if the package is published on PyPI pip install defectdojo-mcp

pip를 통해 설치한 후 다음을 사용하여 서버를 실행합니다.

defectdojo-mcp

구성

서버에는 DefectDojo 인스턴스에 연결하기 위해 다음과 같은 환경 변수가 필요합니다.

  • DEFECTDOJO_API_TOKEN ( 필수 ): 인증을 위한 DefectDojo API 토큰입니다.
  • DEFECTDOJO_API_BASE ( 필수 ): DefectDojo 인스턴스의 기본 URL(예: https://your-defectdojo-instance.com ).

MCP 클라이언트 설정 파일에서 이러한 설정을 구성할 수 있습니다. 다음은 uvx 명령을 사용한 예시입니다.

{ "mcpServers": { "defectdojo": { "command": "uvx", "args": ["defectdojo-mcp"], "env": { "DEFECTDOJO_API_TOKEN": "YOUR_API_TOKEN_HERE", "DEFECTDOJO_API_BASE": "https://your-defectdojo-instance.com" } } } }

pip 사용하여 패키지를 설치한 경우 구성은 다음과 같습니다.

{ "mcpServers": { "defectdojo": { "command": "defectdojo-mcp", "args": [], "env": { "DEFECTDOJO_API_TOKEN": "YOUR_API_TOKEN_HERE", "DEFECTDOJO_API_BASE": "https://your-defectdojo-instance.com" } } } }

사용 가능한 도구

다음 도구는 MCP 인터페이스를 통해 사용할 수 있습니다.

  • get_findings : 필터링(product_name, status, severity) 및 페이지 매김(limit, offset)을 통해 결과를 검색합니다.
  • search_findings : 필터링과 페이지 매김 기능을 갖춘 텍스트 쿼리를 사용하여 검색 결과를 표시합니다.
  • update_finding_status : 특정 결과의 상태를 변경합니다(예: 활성, 확인됨, 거짓 양성).
  • add_finding_note : 결과에 텍스트 메모를 추가합니다.
  • create_finding : 테스트와 관련된 새로운 결과를 만듭니다.
  • list_products : (이름, 제품 유형) 필터링과 페이지 매김을 통해 제품을 나열합니다.
  • list_engagements : 필터링(product_id, status, name) 및 페이지 매김을 통해 참여 목록을 표시합니다.
  • get_engagement : ID로 특정 참여에 대한 세부 정보를 가져옵니다.
  • create_engagement : 제품에 대한 새로운 참여를 생성합니다.
  • update_engagement : 기존 참여의 세부 정보를 수정합니다.
  • close_engagement : 참여를 완료된 것으로 표시합니다.

(각 도구의 자세한 사용 예는 아래의 원본 README 내용을 참조하세요)

사용 예

(참고: 이 예제에서는 use_mcp_tool 호출할 수 있는 MCP 클라이언트 환경이 있다고 가정합니다.)

결과를 얻으세요

# Get active, high-severity findings (limit 10) result = await use_mcp_tool("defectdojo", "get_findings", { "status": "Active", "severity": "High", "limit": 10 })

검색 결과

# Search for findings containing 'SQL Injection' result = await use_mcp_tool("defectdojo", "search_findings", { "query": "SQL Injection" })

발견 상태 업데이트

# Mark finding 123 as Verified result = await use_mcp_tool("defectdojo", "update_finding_status", { "finding_id": 123, "status": "Verified" })

찾은 내용에 메모 추가

result = await use_mcp_tool("defectdojo", "add_finding_note", { "finding_id": 123, "note": "Confirmed vulnerability on staging server." })

찾기 만들기

result = await use_mcp_tool("defectdojo", "create_finding", { "title": "Reflected XSS in Search Results", "test_id": 55, # ID of the associated test "severity": "Medium", "description": "User input in search is not properly sanitized, leading to XSS.", "cwe": 79 })

제품 목록

# List products containing 'Web App' in their name result = await use_mcp_tool("defectdojo", "list_products", { "name": "Web App", "limit": 10 })

참여 목록

# List 'In Progress' engagements for product ID 42 result = await use_mcp_tool("defectdojo", "list_engagements", { "product_id": 42, "status": "In Progress" })

참여하세요

result = await use_mcp_tool("defectdojo", "get_engagement", { "engagement_id": 101 })

참여를 창출하세요

result = await use_mcp_tool("defectdojo", "create_engagement", { "product_id": 42, "name": "Q2 Security Scan", "target_start": "2025-04-01", "target_end": "2025-04-15", "status": "Not Started" })

업데이트 참여

result = await use_mcp_tool("defectdojo", "update_engagement", { "engagement_id": 101, "status": "In Progress", "description": "Scan initiated." })

긴밀한 참여

result = await use_mcp_tool("defectdojo", "close_engagement", { "engagement_id": 101 })

개발

설정

  1. 저장소를 복제합니다.
  2. 가상 환경을 사용하는 것이 좋습니다.
    python -m venv .venv source .venv/bin/activate # On Windows use `.venv\Scripts\activate`
  3. 개발 종속성을 포함한 종속성 설치:
    pip install -e ".[dev]"

특허

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.

기여하다

기여를 환영합니다! 버그, 기능 요청 또는 질문이 있으시면 언제든지 이슈를 열어주세요. 코드를 기여하고 싶으시다면, 제안된 변경 사항에 대해 논의하기 위해 먼저 이슈를 열어주세요.

You must be authenticated.

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

AI 에이전트와 다른 MCP 클라이언트가 취약성 관리 도구인 DefectDojo와 프로그래밍 방식으로 상호 작용하여 결과, 제품 및 참여를 관리할 수 있도록 하는 모델 컨텍스트 프로토콜 서버 구현을 제공합니다.

  1. Features
    1. Installation & Running
      1. Using uvx (Recommended)
      2. Using pip
    2. Configuration
      1. Available Tools
        1. Usage Examples
          1. Get Findings
          2. Search Findings
          3. Update Finding Status
          4. Add Note to Finding
          5. Create Finding
          6. List Products
          7. List Engagements
          8. Get Engagement
          9. Create Engagement
          10. Update Engagement
          11. Close Engagement
        2. Development
          1. Setup
        3. License
          1. Contributing
            ID: exlay0zmev