1. Conduid
  2. AI
  3. Defectdojo MCP
MCP server · AI

Defectdojo MCP

An experimental ModelContextProtocol server connecting LLMs to DefectDojo for AI-powered security workflows. Enables natural language interaction with vulnerability data, simplifies security analysis, and automates reporting through a lightweight middleware integration.

Unclaimed MIT last commit a year ago ai
54Fair

Scored 12 days ago · breakdown

About Defectdojo MCP

Defectdojo MCP is an MCP server published by jamiesonio in the AI category: an experimental ModelContextProtocol server connecting LLMs to DefectDojo for AI-powered security workflows. Enables natural language interaction with vulnerability data, simplifies security analysis, and automates reporting through a lightweight middleware integration.

The repository has 17 stars and 9 forks, with the last commit a year ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.

Install

From source
git clone https://github.com/jamiesonio/defectdojo-mcp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Tools (11)

add_finding_noteAdd a textual note to a finding.

Parameters not published.

close_engagementMark an engagement as completed.

Parameters not published.

create_engagementCreate a new engagement for a product.

Parameters not published.

create_findingCreate a new finding associated with a test.

Parameters not published.

get_engagementGet details for a specific engagement by its ID.

Parameters not published.

get_findingsRetrieve findings with filtering (product_name, status, severity) and pagination (limit, offset).

Parameters not published.

list_engagementsList engagements with filtering (product_id, status, name) and pagination.

Parameters not published.

list_productsList products with filtering (name, prod_type) and pagination.

Parameters not published.

search_findingsSearch findings using a text query, with filtering and pagination.

Parameters not published.

update_engagementModify details of an existing engagement.

Parameters not published.

update_finding_statusChange the status of a specific finding (e.g., Active, Verified, False Positive).

Parameters not published.

Ask AI

✦

Ask AI about Defectdojo MCP

Powered by Claude · Grounded in docs

I know everything about Defectdojo MCP. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 5 days ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • !Tests presentNo tests found. Behaviour changes may go unnoticed between versions.
  • !Dependencies pinnedNo lockfile. Installs can pull different code over time.
  • ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

README

DefectDojo MCP Server

PyPI version

This project provides a Model Context Protocol (MCP) server implementation for DefectDojo, a popular open-source vulnerability management tool. It allows AI agents and other MCP clients to interact with the DefectDojo API programmatically.

Features

This MCP server exposes tools for managing key DefectDojo entities:

  • Findings: Fetch, search, create, update status, and add notes.
  • Products: List available products.
  • Engagements: List, retrieve details, create, update, and close engagements.

Installation & Running

There are a couple of ways to run this server:

Using uvx (Recommended)

uvx executes Python applications in temporary virtual environments, installing dependencies automatically.

uvx defectdojo-mcp

Using pip

You can install the package into your Python environment using pip.

# Install directly from the cloned source code directory
pip install .

# Or, if the package is published on PyPI
pip install defectdojo-mcp

Once installed via pip, run the server using:

defectdojo-mcp

Configuration

The server requires the following environment variables to connect to your DefectDojo instance:

  • DEFECTDOJO_API_TOKEN (required): Your DefectDojo API token for authentication.
  • DEFECTDOJO_API_BASE (required): The base URL of your DefectDojo instance (e.g., https://your-defectdojo-instance.com).

You can configure these in your MCP client's settings file. Here's an example using the uvx command:

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

If you installed the package using pip, the configuration would look like this:

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

Available Tools

The following tools are available via the MCP interface:

  • get_findings: Retrieve findings with filtering (product_name, status, severity) and pagination (limit, offset).
  • search_findings: Search findings using a text query, with filtering and pagination.
  • update_finding_status: Change the status of a specific finding (e.g., Active, Verified, False Positive).
  • add_finding_note: Add a textual note to a finding.
  • create_finding: Create a new finding associated with a test.
  • list_products: List products with filtering (name, prod_type) and pagination.
  • list_engagements: List engagements with filtering (product_id, status, name) and pagination.
  • get_engagement: Get details for a specific engagement by its ID.
  • create_engagement: Create a new engagement for a product.
  • update_engagement: Modify details of an existing engagement.
  • close_engagement: Mark an engagement as completed.

(See the original README content below for detailed usage examples of each tool)

Usage Examples

(Note: These examples assume an MCP client environment capable of calling use_mcp_tool)

Get Findings

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

Search Findings

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

Update Finding Status

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

Add Note to Finding

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

Create Finding

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

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

List Engagements

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

Get Engagement

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

Create Engagement

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"
})

Update Engagement

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

Close Engagement

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

Development

Setup

  1. Clone the repository.
  2. It's recommended to use a virtual environment:
    python -m venv .venv
    source .venv/bin/activate # On Windows use `.venv\Scripts\activate`
    
  3. Install dependencies, including development dependencies:
    pip install -e ".[dev]"
    

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to open an issue for bugs, feature requests, or questions. If you'd like to contribute code, please open an issue first to discuss the proposed changes.

README fetched from the repository 5 days ago. The original is authoritative.

Questions

About Defectdojo MCP

How do I install Defectdojo MCP?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Defectdojo MCP safe to use with an AI agent?

Its trust score is 54 out of 100 (fair). It passes 3 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Defectdojo MCP still maintained?

The last commit was a year ago and 3 open issues. That's long enough that you should check whether the maintainer is responding to issues before depending on it.