Add pull_image + list_registries; remove Gruppe 5 (no Volume API)

- pull_image: SYNO.Docker.Image/pull with repository+tag split via
  rpartition; polls image list every 3 s until image appears, 120 s timeout
- list_registries: SYNO.Docker.Registry/get; shows name, URL, active marker
- Gruppe 5 (Volumes) removed from roadmap — SYNO.Docker.Volume does not exist
- CLAUDE.md: tool count 17 → 19, Volumes section removed
- 28 tests all passing

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-13 19:28:45 +02:00
parent 59f7fc1d6c
commit 5fe8f5bc73
6 changed files with 421 additions and 46 deletions
+7 -44
View File
@@ -32,14 +32,17 @@ via Container Manager. Der MCP-Server ist in Claude Desktop aktiv verbunden.
## Aktueller Stand
### Implementierte Tools (17)
### Implementierte Tools (19)
| Kategorie | Tools |
|---|---|
| Projekte | `list_projects`, `get_project_status`, `start_project`, `stop_project`, `redeploy_project` |
| Container | `list_containers`, `get_container_status`, `get_container_logs`, `exec_in_container`, `container_stats` |
| Compose | `read_compose`, `update_compose`, `update_image_tag`, `update_env_var` |
| Images | `check_image_updates`, `list_images`, `delete_image` |
| Images | `check_image_updates`, `list_images`, `delete_image`, `pull_image` |
| Netzwerke | `list_networks`, `create_network`, `delete_network` |
| System | `system_df`, `system_prune` |
| Registries | `list_registries` |
### Bekannte Bugs
@@ -52,31 +55,9 @@ via Container Manager. Der MCP-Server ist in Claude Desktop aktiv verbunden.
## Roadmap (geplante Erweiterungen)
### Images
- `list_images` alle lokalen Images mit Größe, Tag, Erstellungsdatum
- `delete_image` nicht mehr benötigte Images löschen
- `pull_image` Image manuell aus Registry ziehen
~~Alle geplanten Erweiterungen implementiert.~~
### Container
- ~~`container_stats`~~ implementiert
- ~~`rename_container`~~ entfällt (DSM bietet kein Container-Umbenennen)
### Netzwerke
- `list_networks` alle Docker-Netzwerke auflisten
- `create_network` neues Netzwerk anlegen
- `delete_network` Netzwerk löschen
### Volumes
- `list_volumes` alle Docker-Volumes auflisten
- `delete_volume` verwaiste Volumes löschen
- `inspect_volume` Volume-Details anzeigen
### System
- `system_df` Docker Disk Usage (Images, Container, Volumes)
- `system_prune` Aufräumen (dangling Images, gestoppte Container)
### Registries
- `list_registries` konfigurierte Registries anzeigen
Volumes entfällt — SYNO.Docker.Volume existiert nicht (kein DSM-Endpunkt).
---
@@ -197,24 +178,6 @@ Implementiere **eine Gruppe nach der anderen**. Commit + Push nach jeder Gruppe,
---
#### Gruppe 5 Volumes `modules/volumes.py` (neu) ✦ Prio: niedrig
**`list_volumes`**
- DSM API: `SYNO.Docker.Volume`, method `list`
- Ausgabe: Name, Mountpoint, Größe, ob in Verwendung
- Confirmation: nein
**`inspect_volume`**
- Signatur: `inspect_volume(volume_name: str) -> str`
- Confirmation: nein
**`delete_volume`**
- Signatur: `delete_volume(volume_name: str, confirmed: bool = False) -> str`
- Fehler wenn Volume gemountet → klare Meldung
- Confirmation: **ja**
---
#### Gruppe 6 Images Ergänzung `modules/images.py` ✦ Prio: niedrig
**`pull_image`**