dtrack-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DTRACK_URL | Yes | Base URL of your Dependency-Track instance. | |
| DTRACK_USER | No | Username for JWT-based authentication. | |
| DTRACK_API_KEY | No | API key for authentication. Requires VIEW_PORTFOLIO + VULNERABILITY_ANALYSIS permissions. | |
| DTRACK_TIMEOUT | No | HTTP timeout in seconds. | 30 |
| DTRACK_PASSWORD | No | Password for JWT-based authentication. | |
| DTRACK_LOG_LEVEL | No | Logging level. | INFO |
| DTRACK_RETRY_MAX | No | Maximum number of retries on transient errors. | 3 |
| DTRACK_VERIFY_TLS | No | Whether to verify TLS certificate. | false |
| DTRACK_WRITE_DELAY_MS | No | Sleep between writes in bulk operations. | 0 |
| DTRACK_RETRY_BACKOFF_MS | No | Base for exponential backoff in milliseconds. | 500 |
| DTRACK_SKIP_VERSION_CHECK | No | Skip version check at startup. | false |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_projectsA | List Dependency-Track projects. List projects in the Dependency-Track instance, optionally filtered by a substring of the project name. Returns normalized projects with per-severity vulnerability counts. Read-only. Args: name_filter: Case-insensitive substring on project name. active_only: If true, exclude projects marked inactive in DT. page: 1-based page number. page_size: Items per page (max 500). |
| resolve_projectA | Resolve a project by UUID or by exact (name, version). Two lookup paths — use whichever you have:
When Args:
project_uuid: DT project UUID. Takes precedence when provided.
name: Exact project name (requires |
| list_findingsA | List vulnerability findings for a project with optional filters. Returns normalized findings — each one bundles the vulnerability
(severity, CVSS v3/v4, CWE, EPSS, aliases), the affected component
(name, version, purl, latest known version), and the analysis state.
All filters are applied client-side before pagination, so When Args: project_uuid: DT project UUID (get it from list_projects or lookup_project). suppressed: Include findings suppressed by an analyst. analysis_states: Whitelist, e.g. ["NOT_SET", "IN_TRIAGE", "EXPLOITABLE", "FALSE_POSITIVE", "NOT_AFFECTED", "RESOLVED"]. severities: Whitelist, e.g. ["CRITICAL", "HIGH", "MEDIUM", "LOW", "UNASSIGNED"]. page: 1-based page number (applied after filtering). page_size: Items per page (max 500). include_details: If true, embed title/description/references in each finding's vulnerability summary (v0.3). Default false. |
| find_vulnerabilityA | Fetch the full detail record of a vulnerability. When Returns title, description, CVSS v2/v3/v4 scores and vectors, CWEs, EPSS score and percentile, KEV flag, references, and alias list. Args: vuln_id: Vulnerability id, e.g. "CVE-2024-1234", "GHSA-xxxx-yyyy-zzzz". source: Optional DT source namespace — "NVD", "GITHUB", "OSV", "SNYK", "SONATYPE", "VULNDB", "INTERNAL", etc. When omitted the source is inferred from the id prefix. |
| search_vulnerabilityA | Search which projects are affected by a vulnerability. Given a vulnerability id (e.g. "CVE-2024-1234"), resolves it, then finds every DT project that contains a finding for this vulnerability (or any of its aliases). For each project returns the analysis state per affected component. Use this to answer "which products are affected by CVE-X and what's been decided?" without manually iterating over projects. Read-only. Args: vuln_id: Vulnerability id (e.g. "CVE-2024-1234", "GHSA-xxxx"). active_only: Skip inactive/archived projects. Default True. only_analyzed: Only include projects/findings with a non-NOT_SET analysis state. Default False. |
| group_findings_by_aliasA | Group findings by alias (transitive closure) — dedup CVE/GHSA/OSV. Vulnerabilities reported under different ids (e.g. CVE-2024-X and
GHSA-Y-Z) often refer to the same issue and are linked via DT's
aliases. This tool runs union-find over that alias graph and returns
one cluster per real issue. Each cluster carries a canonical id
(CVE first, then GHSA, then OSV, then SNYK, then INTERNAL, then
alphabetical), the full alias list, a Same filters as list_findings. Pagination applies to groups, not to the findings inside them — a group always ships with all its findings intact. Sorted by highest CVSS score (v3 or v4) descending. Read-only.
Args: project_uuid: DT project UUID. suppressed: Include suppressed findings. analysis_states: Whitelist of analysis state strings. severities: Whitelist of severity strings. page: 1-based page of groups (not findings). page_size: Groups per page (max 500). include_details: If true, embed title/description/references in each finding's vulnerability summary (v0.3). Default false. |
| get_analysisA | Fetch the analysis record for one finding. Returns the analysis state, justification, response, details,
suppressed flag, and the full comment history. If DT has no analysis
row yet, returns an empty-analysis default (state Args: project_uuid: DT project UUID. component_uuid: DT component UUID inside that project. vulnerability_uuid: DT vulnerability UUID. |
| find_duplicate_analysesA | Find analyses of duplicates of a finding across DT. Given one finding, returns three parallel lists of duplicates with their current analysis (state + comment history), intended for a triage loop that wants to reuse prior decisions:
Each entry bundles Filters (v0.4):
Args:
project_uuid: DT project UUID of the target finding.
component_uuid: DT component UUID of the target finding.
vulnerability_uuid: DT vulnerability UUID of the target finding.
states: Whitelist of analysis state strings, e.g.
|
| set_analysisA | ⚠ WRITE. Update the analysis record for one finding. Two ways to identify the finding:
When Issues Args:
project_uuid: DT project UUID.
state: One of NOT_SET, IN_TRIAGE, EXPLOITABLE, FALSE_POSITIVE,
NOT_AFFECTED, RESOLVED.
component_uuid: DT component UUID (required unless |
| upload_bomA | ⚠ WRITE. Upload a CycloneDX/SPDX SBOM to Dependency-Track. Issues Args: project_name: Target project name (must exist unless auto_create=True). project_version: Target project version. bom: Base64-encoded SBOM document (CycloneDX or SPDX). auto_create: Create project/version if missing. Requires extra permission. parent_name: Optional parent project name for hierarchy. parent_version: Optional parent project version. |
| get_project_versionsA | List all versions of a project by exact name. Returns Args: name: Exact project name. active_only: Exclude projects marked inactive in DT. |
| diff_findingsA | Compute carried / updated_component / new / gone between two versions. Typical use: upgrading a product v1 → v2.
Component matching uses Args: source_project_uuid: Old version UUID (usually with existing triage). target_project_uuid: New version UUID. include_analysis: Load current analysis for each source finding (needed for carry_over; adds one HTTP call per finding). |
| carry_over_triageA | ⚠ WRITE (when mode="exact"). Transfer triage decisions v1 → v2. ALWAYS run with Skip rules:
Safety caps:
Args: source_project_uuid: Old version UUID with existing triage. target_project_uuid: New version UUID to populate. mode: "dry_run" (no writes, returns plan) or "exact" (performs writes). include_updated_components: Also transfer updated_component matches (same CVE, different component version). Default False — conservative. overwrite_not_set: Transfer over target entries in state NOT_SET. Default True. overwrite_any: Transfer over target entries in any state. Default False. comment_prefix: Prepended to every carry-over comment. max_operations: Sanity cap against hallucination-driven bulk writes in exact mode. Raise if you genuinely need to transfer more. |
| broadcast_triageA | ⚠ WRITE (when mode="exact"). Fan out triage decisions to all versions. A specialised form of Steps:
ALWAYS run Args: reference_project_uuid: UUID of the version that already has the triage decision to broadcast. project_name: Exact project name (used to find all other versions). mode: "dry_run" (no writes) or "exact" (performs writes). include_updated_components: Also transfer updated_component matches. Default False — conservative. overwrite_not_set: Transfer over targets in state NOT_SET. Default True. overwrite_any: Transfer over targets in any state. Default False. comment_prefix: Prepended to every carry-over comment. max_operations: Per-target cap. Raise if a single target needs more. active_only: Skip inactive/archived versions. Default True. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/drewrukin/dtrack-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server