diff --git a/README.md b/README.md index 6d85417..6ada9db 100644 --- a/README.md +++ b/README.md @@ -1 +1,90 @@ -TEst \ No newline at end of file +# 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) |