dependencyTrack-MCP

MCP-Server fuer OWASP Dependency-Track, in Rust. Read-only Zugriff auf Projekte, Findings und Metriken -- gedacht fuer den Einsatz mit Claude Desktop (stdio) auf dem Arbeitsrechner.

Status: Stage 0 -- stdio, read-only, 3 Tools. Multi-Client / Permissions / Admin-UI / SSO folgen in spaeteren Stages (siehe Roadmap).

Architektur

crates/dtrack-core    DT-REST-Client (reqwest+rustls, read-only)
crates/dtrack-stdio   rmcp stdio-Server  ->  ARBEIT: vom Desktop via `run -i` gestartet

Spaeter kommt ein dtrack-http-Frontend (Multi-Client, Admin-UI) dazu; die Tool-Logik in dtrack-core bleibt dabei dieselbe.

Tools

Tool Argument DT-Endpoint
list_projects -- GET /project
project_findings uuid GET /finding/project/{uuid}
project_metrics uuid GET /metrics/project/{uuid}/current

Konfiguration (Umgebungsvariablen)

Var Pflicht Bedeutung
DTRACK_URL ja Basis-URL der DT-Instanz, z.B. https://dtrack.firma.intern
DTRACK_API_KEY ja API-Key eines read-only Teams (VIEW_PORTFOLIO, VIEW_VULNERABILITY)
DTRACK_INSECURE nein 1/true -> TLS-Pruefung aus (Notbehelf bei internem CA-Cert)

Bauen

# Lokal
cargo build --release --bin dtrack-stdio

# Container
podman build -t dtrack-mcp:latest -f Containerfile .

Transfer auf den Arbeitsrechner (ohne Registry)

# daheim
podman save dtrack-mcp:latest | gzip > dtrack-mcp.tar.gz
# -> Datei uebertragen, dann auf dem Laptop:
podman load < dtrack-mcp.tar.gz

(Automatisiert spaeter ueber CI als Gitea-Release-Asset.)

Claude Desktop einbinden

--network=host, damit der Container die DT-Instanz ueber die VPN-Route des Hosts erreicht:

{
  "mcpServers": {
    "dependency-track": {
      "command": "podman",
      "args": [
        "run", "-i", "--rm", "--network=host",
        "-e", "DTRACK_URL", "-e", "DTRACK_API_KEY", "-e", "DTRACK_INSECURE",
        "dtrack-mcp:latest"
      ],
      "env": {
        "DTRACK_URL": "https://dtrack.firma.intern",
        "DTRACK_API_KEY": "odt_...",
        "DTRACK_INSECURE": "0"
      }
    }
  }
}

Roadmap

Stage Inhalt
0 (jetzt) stdio, read-only, 3 Tools, CI, Container
1 Permission-Engine (config-getrieben)
2 HTTP-Frontend + Auth-Trait, Multi-Client
3 Admin-UI (Token/URL pflegbar, maskiert) + Audit-Log
4 SSO (Gitea-OIDC)
S
Description
No description provided
Readme 159 KiB
Languages
Rust 98.3%
Dockerfile 1.7%