Add self-maintaining Athena platform context MCP
This commit is contained in:
@@ -145,6 +145,7 @@ Allzweck-MCP mit sämtlichen Zugangsdaten.
|
||||
|
||||
```text
|
||||
Open WebUI ── internes Netz ───────────┬── web-mcp
|
||||
├── platform-context-mcp
|
||||
├── home-assistant-mcp
|
||||
├── arr-mcp
|
||||
├── github-mcp-read
|
||||
@@ -158,6 +159,7 @@ weitere MCP-Clients ──────┴── mcp-gateway (später) ── das
|
||||
| Container | Werkzeugbereich | Standardrecht |
|
||||
|---|---|---|
|
||||
| `web-mcp` | Websuche, Seitenabruf, Hugging Face und öffentliche Quellen | nur lesen |
|
||||
| `platform-context-mcp` | Architektur, Quellen, Snapshot und Docs-Pflege | kein Docker-Socket; Docs nur Preview/Approval |
|
||||
| `github-mcp-read` | Repositorysuche, Baum, Dateiinhalt und Code-Suche | vier Tools, strikt nur lesen |
|
||||
| `home-assistant-mcp-read` | Entities, Bereiche, Historie, Diagnose | nur lesen |
|
||||
| `home-assistant-mcp-write` | kontrollierte HA-Änderungen | Preview/Approval |
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
| ARR-MCP | `arr-mcp` 1.0.1 plus dokumentierter Sonarr-Patch | eigener optionaler Container | optional |
|
||||
| Navidrome-MCP | Blakeem/Navidrome-MCP 2.2.0, Image per OCI-Digest | eigener optionaler Container ohne mpv | optional |
|
||||
| GitHub-MCP | offizieller `github/github-mcp-server` 1.10.1, vier read-only Werkzeuge | eigener optionaler Container hinter Streamable-HTTP-Brücke | optional |
|
||||
| Platform Context MCP | Athena-/MikeAI-Wissen, begrenzter Laufzeitsnapshot und kontrollierte Dokumentationspflege | eigener Container ohne Docker-Socket, Shell, Egress oder Secrets | Kern |
|
||||
| Operator-Kontext | `docs/QWEN_OPERATOR_CONTEXT.md` plus `config/operator-system-prompt.txt` | versionierte Selbstbeschreibung und Sicherheitsregeln für Qwen | Kern |
|
||||
| Unraid-MCP | lokales `runraid`-Binary | eigener optionaler Container | optional |
|
||||
| Whisper | ggml-org/whisper.cpp | Service im Router-Deploy | optional |
|
||||
|
||||
@@ -150,12 +150,14 @@ Der isolierte Eignungs- und Ausfalltest ist in
|
||||
- TinySearch ausschließlich im internen Docker-Netz, ohne Host-Port
|
||||
- lokale ONNX-Embeddings
|
||||
- kompakte Web-MCP-Fassade mit vier Werkzeugen
|
||||
- strukturierte API-Pfade für GitHub und Hugging Face
|
||||
- strukturierter API-Pfad für Hugging Face; GitHub-Quellcode läuft über den
|
||||
getrennten offiziellen GitHub-MCP
|
||||
|
||||
## MCP-Referenz
|
||||
|
||||
Aktuell existieren funktionale Adapter für:
|
||||
|
||||
- Athena-Plattformwissen, Laufzeitsnapshot und kontrollierte Docs-Pflege
|
||||
- Websuche
|
||||
- Home Assistant
|
||||
- Sonarr/Radarr
|
||||
@@ -164,9 +166,14 @@ Aktuell existieren funktionale Adapter für:
|
||||
- Unraid read-only
|
||||
- eigener Unraid-Administrationsserver
|
||||
|
||||
Der GitHub-Container und sein Streamable-HTTP-Handshake sind verifiziert. Er
|
||||
startet erst produktiv, wenn `/etc/mike-ai/github-mcp.env` einen dedizierten
|
||||
Read-only-Token enthält; ein leerer Platzhalter aktiviert den Dienst nicht.
|
||||
Der GitHub-Container läuft produktiv. Token-Datei, interner
|
||||
Streamable-HTTP-Handshake, fehlende Host-Portfreigabe und exakt vier
|
||||
read-only Werkzeuge wurden am 23. August 2026 verifiziert.
|
||||
|
||||
Der Platform Context MCP läuft ohne Docker-Socket, Shell, Egress oder Secrets.
|
||||
Ein root-eigener Minutentimer erzeugt nur einen begrenzten Laufzeitsnapshot.
|
||||
Der Schreibpfad ist auf `docs/*.md`, Vorschau, ausdrückliche Freigabe, atomare
|
||||
Sicherung und sichtbare Git-/Recovery-Nacharbeit begrenzt.
|
||||
|
||||
Der frühere allgemeine Shell-MCP und doppelte, schreibende Werkzeuge gehören
|
||||
nicht zum Sicherheitsziel und werden nicht ungeprüft wiederhergestellt.
|
||||
|
||||
@@ -72,6 +72,10 @@ laufen, sondern alle fachlichen Funktionen geprüft wurden.
|
||||
- [ ] kein Secret erscheint in Toolantworten oder Logs
|
||||
- [ ] `PLATFORM_OVERVIEW.md`, `QWEN_OPERATOR_CONTEXT.md` und der Operator-
|
||||
System-Prompt entsprechen dem wiederhergestellten Stand
|
||||
- [ ] Platform-Context-Snapshot aktuell; offene Vorschläge und angewandte
|
||||
Dokumentationsänderungen mit `athena_get_maintenance_status` geprüft
|
||||
- [ ] lokales Dokumentations-Overlay ist auch im privaten Git enthalten und
|
||||
der Recovery-Koffer wurde danach neu erzeugt
|
||||
|
||||
## Phase E – Vision, Bild und Sprache
|
||||
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
# Athena Platform Context MCP
|
||||
|
||||
Stand: 23. August 2026
|
||||
|
||||
## Zweck
|
||||
|
||||
`mike-ai-mcp-platform-context` gibt jedem MCP-fähigen Client dasselbe
|
||||
versionierte Wissen über Athena und MikeAI. Dadurch kann in Open WebUI zwischen
|
||||
Fast, Medium, Large und Ultra gewechselt werden, ohne den vollständigen
|
||||
Operator-Kontext in jeden Prompt zu kopieren.
|
||||
|
||||
Der MCP ist zugleich das kontrollierte Pflegefenster für seine eigene
|
||||
Dokumentation. Er ist **kein** allgemeiner Athena-Administrator und erhält
|
||||
weder Docker-Socket noch Shell, Netzwerkzugang, Git-Schlüssel oder Secrets.
|
||||
|
||||
## Werkzeuge
|
||||
|
||||
| Werkzeug | Wirkung |
|
||||
|---|---|
|
||||
| `athena_get_overview` | kurze Architektur und Quellenhierarchie |
|
||||
| `athena_get_current_state` | begrenzter aktueller Snapshot ohne Nutzdaten |
|
||||
| `athena_search_knowledge` | Suche in Dokumentation und versionierten Quellen |
|
||||
| `athena_read_source` | begrenzter Ausschnitt einer ausgewählten Textdatei |
|
||||
| `athena_get_change_workflow` | verbindlicher Ablauf je Änderungstyp |
|
||||
| `athena_prepare_documentation_update` | erzeugt nur eine prüfbare Vorschau |
|
||||
| `athena_apply_documentation_update` | schreibt nach Freigabe ausschließlich `docs/*.md` |
|
||||
| `athena_get_maintenance_status` | zeigt offene Git-/Recovery-Schulden |
|
||||
| `athena_close_maintenance_record` | schließt Schulden erst nach geprüftem Git-Deploy und neuerem Recovery-Koffer |
|
||||
|
||||
## Aktueller Zustand ohne Docker-Socket
|
||||
|
||||
`mike-ai-platform-context-snapshot.timer` startet jede Minute einen kurzen,
|
||||
fest programmierten Host-Snapshot. Er erfasst ausschließlich:
|
||||
|
||||
- Hostname, Debian-/Kernel-Version und Uptime
|
||||
- grobe RAM- und Dateisystembelegung
|
||||
- GPU-Name, UUID, VRAM-Belegung und Treiberversion
|
||||
- Name, Image und Status der laufenden `mike-ai-*`-Container
|
||||
- aktives Inferenzprofil
|
||||
- installierten Quellcommit, Hash des Dokumentationsbaums und Status des
|
||||
Recovery-Koffers
|
||||
|
||||
Nicht erfasst werden Logs, Prompts, Chats, Toolinhalte, Container-Umgebungen,
|
||||
Dateiinhalte außerhalb der versionierten Dokumentation oder Secretwerte. Der
|
||||
Container liest nur die erzeugte JSON-Datei. Ein Snapshot älter als drei
|
||||
Minuten gilt als veraltet.
|
||||
|
||||
## Dokumentationspflege
|
||||
|
||||
Die Pflege ist absichtlich zweistufig:
|
||||
|
||||
1. Qwen prüft Laufzeit und Quellen und ruft
|
||||
`athena_prepare_documentation_update` auf.
|
||||
2. Das Werkzeug speichert einen Vorschlag unter
|
||||
`/data/mike-ai-platform-context/pending` und liefert ID, Hashes und die
|
||||
genaue Freigabezeichenfolge zurück. Noch wurde nichts geändert.
|
||||
3. Qwen zeigt den Vorschlag dem Benutzer und beendet die autonome Werkzeugkette.
|
||||
4. Erst nach ausdrücklicher Freigabe darf
|
||||
`athena_apply_documentation_update` mit `APPLY <proposal-id>` aufgerufen
|
||||
werden.
|
||||
5. Vorherige Dateien werden unter
|
||||
`/data/mike-ai-platform-context/backups` gesichert, neue Inhalte atomar
|
||||
geschrieben und unter `applied` protokolliert.
|
||||
|
||||
Der Server akzeptiert nur einfache Markdown-Dateien direkt unter `docs/`.
|
||||
Code, Compose, Profile, Installer, Netzwerke, Services, Git und Secrets können
|
||||
über diesen Schreibweg nicht verändert werden.
|
||||
|
||||
## Git und Recovery
|
||||
|
||||
Die kanonische Quelle ist der private Gitea-Stand
|
||||
`git@192.168.1.2:michael/AI-Profile-Router.git`, Branch `main`. Das
|
||||
Installationsverzeichnis `/opt/mike-ai/stack` ist eine ausgerollte Kopie und
|
||||
kein Git-Working-Tree; `.mike-ai-source-commit` benennt den ausgerollten
|
||||
Commit. Der offizielle GitHub-MCP ist read-only und kann dieses private
|
||||
Gitea-Repository weder ändern noch pushen. Dafür ist ein getrennt
|
||||
autorisiertes Git-Werkzeug beziehungsweise ein administrativer Git-Workflow
|
||||
notwendig.
|
||||
|
||||
Eine angewandte Dokumentationspflege ist erst vollständig abgeschlossen, wenn
|
||||
getrennte, dafür autorisierte Werkzeuge Folgendes bestätigt haben:
|
||||
|
||||
1. dieselbe Änderung ist im privaten Quellrepository geprüft, committed und
|
||||
gepusht;
|
||||
2. der Commit wurde nach Athena ausgerollt und `.mike-ai-source-commit` stimmt;
|
||||
3. ein neues verschlüsseltes Recovery-Bundle und ein neues
|
||||
`/data/mike-ai-recovery-kit` wurden erzeugt und geprüft.
|
||||
|
||||
Der Context MCP meldet diese Punkte nach jeder Anwendung ausdrücklich als
|
||||
offen. Er darf sie nicht selbst als erledigt markieren. Lokale Vorschläge,
|
||||
Backups und Dokumentations-Overlays werden im verschlüsselten Recovery-Bundle
|
||||
mitgesichert, sodass ungepushte Dokumentationspflege bei einem SSD-Ausfall
|
||||
nicht vollständig verloren geht. Das ersetzt keinen Git-Commit.
|
||||
|
||||
## Verwendung in Open WebUI
|
||||
|
||||
Das Werkzeug `Athena Plattformwissen` wird nur bei Arbeiten an Athena/MikeAI
|
||||
aktiviert. Ein geeigneter Startauftrag lautet:
|
||||
|
||||
> Nutze zuerst das Athena-Plattformwissen. Prüfe den aktuellen Zustand und die
|
||||
> relevanten Quellen. Plane danach die gewünschte Änderung mit Rückweg. Nimm
|
||||
> keine risikoreiche Aktion und keine Dokumentationsanwendung ohne meine
|
||||
> ausdrückliche Freigabe vor.
|
||||
|
||||
Das funktioniert unabhängig vom gewählten Textprofil. Für normale Gespräche
|
||||
bleibt der MCP deaktiviert und verbraucht damit keinen Werkzeugkontext.
|
||||
@@ -12,6 +12,13 @@ Router stellt eine OpenAI-kompatible API bereit und schaltet zwischen mehreren
|
||||
reproduzierbaren llama.cpp-Profilen um. Fachwerkzeuge laufen als getrennte MCP-
|
||||
Container; Zugangsdaten gelangen weder in llama.cpp noch in Modellprompts.
|
||||
|
||||
Der zuschaltbare `mike-ai-mcp-platform-context` stellt allen Textprofilen das
|
||||
gleiche versionierte Plattformwissen zur Verfügung. Ein begrenzter
|
||||
Host-Snapshot ersetzt einen Docker-Socket. Dokumentationsänderungen laufen nur
|
||||
über Vorschau, ausdrückliche Freigabe und atomare Sicherung; Git und Recovery
|
||||
bleiben getrennte, nachzuweisende Abschlussarbeiten. Details stehen in
|
||||
`PLATFORM_CONTEXT_MCP.md`.
|
||||
|
||||
## Hardware
|
||||
|
||||
- Debian 13 `trixie`, Kernel 6.12
|
||||
@@ -42,6 +49,7 @@ Open WebUI ---> Profile Router ---> Profile Controller ---> genau ein llama.cpp-
|
||||
| +-- TTS-Gateway -> XTTS-v2 -> Piper-Fallback
|
||||
|
|
||||
+-- internes MCP-Netz
|
||||
+-- Athena Plattformwissen
|
||||
+-- Web
|
||||
+-- GitHub Repository read-only
|
||||
+-- Home Assistant
|
||||
|
||||
@@ -29,6 +29,14 @@ Priorität der Informationsquellen:
|
||||
Bei einem Widerspruch stoppst du vor jeder Änderung, benennst die Abweichung und
|
||||
klärst, ob Laufzeit oder Dokumentation korrigiert werden soll.
|
||||
|
||||
Wenn der zuschaltbare MCP `Athena Plattformwissen` verfügbar ist, beginne
|
||||
Athena-/MikeAI-Aufgaben mit `athena_get_overview` und nutze danach gezielt
|
||||
`athena_get_current_state`, `athena_search_knowledge` und
|
||||
`athena_read_source`. Der MCP ersetzt nicht die Fachwerkzeuge. Sein
|
||||
Dokumentations-Schreibweg darf erst nach Vorschau und ausdrücklicher Freigabe
|
||||
verwendet werden. Eine lokale Dokumentationsänderung ist ohne separaten
|
||||
Git-Commit/Push und erneuerten Recovery-Koffer nicht abgeschlossen.
|
||||
|
||||
## 2. Auftrag und Einsatzumgebung
|
||||
|
||||
MikeAI stellt lokal Inferenz, multimodale Bildanalyse, Bildgenerierung,
|
||||
@@ -81,6 +89,12 @@ Inferenzcontainer eingehängt. Dauerhafte
|
||||
Änderungen gehören zuerst in das private Repository `AI-Profile-Router`, nicht
|
||||
nur in einen laufenden Container. Die Hauptbestandteile sind:
|
||||
|
||||
Die kanonische Git-Quelle ist der private Gitea-Branch `main` unter
|
||||
`git@192.168.1.2:michael/AI-Profile-Router.git`. `/opt/mike-ai/stack` ist kein
|
||||
Working Tree; `.mike-ai-source-commit` bezeichnet den ausgerollten Stand. Der
|
||||
offizielle GitHub-MCP ist strikt read-only und kann Gitea nicht pflegen. Für
|
||||
Commit und Push ist daher ein getrennt autorisierter Git-Arbeitsweg nötig.
|
||||
|
||||
- Open WebUI als Benutzeroberfläche und Speicher für Arbeitsbereichsmodelle,
|
||||
Filter, Aktionen und Chats
|
||||
- Profile Router als OpenAI-kompatible API und zentrale Medien-/Profilfassade
|
||||
@@ -211,6 +225,7 @@ Netzzugriff. Kein MCP-Port wird am Host veröffentlicht.
|
||||
|
||||
| Bereich | Aufgabe | Rechte |
|
||||
|---|---|---|
|
||||
| Athena-Plattform | Architektur, Quellen, Laufzeitsnapshot, Dokumentationspflege | Lesen; Markdown nur Preview/Approval |
|
||||
| Web | aktuelle öffentliche Recherche über SearXNG/TinySearch | read-only |
|
||||
| GitHub | Repositorysuche, Baum, Dateiinhalt, Code-Suche | strikt read-only, vier Tools |
|
||||
| Home Assistant | Zustände, Historie, Diagnose, begrenzte YAML-Abläufe | Lesen; Schreiben nur Preview/Approval |
|
||||
|
||||
Reference in New Issue
Block a user