This commit is contained in:
@@ -1 +1,90 @@
|
|||||||
TEst
|
# dependencyTrack-MCP
|
||||||
|
|
||||||
|
MCP-Server fuer [OWASP Dependency-Track](https://dependencytrack.org/), 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
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Lokal
|
||||||
|
cargo build --release --bin dtrack-stdio
|
||||||
|
|
||||||
|
# Container
|
||||||
|
podman build -t dtrack-mcp:latest -f Containerfile .
|
||||||
|
```
|
||||||
|
|
||||||
|
## Transfer auf den Arbeitsrechner (ohne Registry)
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# 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:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"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) |
|
||||||
|
|||||||
Reference in New Issue
Block a user