115 lines
6.0 KiB
Markdown
115 lines
6.0 KiB
Markdown
# Handoff 2026-08-28 — MCP-Cleanup + shelly-mcp-Tote + nächste Schritte
|
|
|
|
> **Bezug:** [docs/handoff-20260827-inventur-und-architektur.md](handoff-20260827-inventur-und-architektur.md) (Master-Plan, Asymmetrie, TP34) + Inventur-Handoff bleibt der Einstieg für Master-Fragen. Diese Datei ist der **konkrete nächste Schritt** aus der Session 2026-08-28.
|
|
|
|
## TL;DR
|
|
|
|
- **MCP-Cleanup durchgeführt:** `cannaleo` + `terpene-pg` aus `~/.claude.json` UND `~/.config/opencode/opencode.jsonc` entfernt (Backup `~/.claude.json.bak-pre-mcp-cleanup`, `~/.opencode/opencode.jsonc.bak-pre-n8n-mcp`).
|
|
- **`n8n-mcp` repariert:** URL war `https://n8n-mcp.emsenhuber.net/` (kein `/mcp` am Ende) → jetzt `https://n8n-mcp.emsenhuber.net/mcp`. Bearer über `headers.Authorization` aus `{env:N8N_MCP_BEARER}`. ✅ live verifiziert.
|
|
- **`shelly-mcp` ist tot** (war in Inventur-Handoff nicht aufgefallen): läuft auf keinem Host, kein lokaler Prozess, kein Container auf NAS/pve. Config jetzt `http://127.0.0.1:3030/mcp` mit `enabled=false`.
|
|
- **CLAUDE.md erweitert:** 3 neue Lessons-for-Sessions-Regeln (MCP-Lifecycle: aktiv melden, Host vor Edit verifizieren, tote MCPs ins Projekt-Repo).
|
|
- **Commit:** `046f103` (lokal + remote synchron in `admin/bf-infra`).
|
|
|
|
## Drift-Befunde der MCP-Cleanup-Session
|
|
|
|
| # | Befund | Einschätzung „richtig" |
|
|
|---|---|---|
|
|
| **M1** | `cannaleo` + `terpene-pg` waren in `~/.claude.json` UND `~/.config/opencode/opencode.jsonc` doppelt | Beide aus globalen Configs entfernt, in terpene-Repo dokumentiert |
|
|
| **M2** | `n8n-mcp` URL war ohne `/mcp` | Korrigiert auf `https://n8n-mcp.emsenhuber.net/mcp` |
|
|
| **M3** | `shelly-mcp` zeigt auf `127.0.0.1:3030`, aber kein Prozess dort | `enabled=false`, Deploy-Folgepunkt angemerkt |
|
|
| **M4** | `ollama mcp list` zeigte Hänger nach Zeile 1 (war Race-Condition beim Initial-Connect) | Nicht in Config, sondern Cold-Start; mit etwas Wartezeit vollständig (10 Server alle ✅ oder disabled) |
|
|
|
|
## Was ich konkret geändert habe
|
|
|
|
### 1. `~/.claude.json`
|
|
- **Entfernt:** `cannaleo`, `terpene-pg`
|
|
- **Backup:** `~/.claude.json.bak-pre-mcp-cleanup`
|
|
|
|
### 2. `~/.config/opencode/opencode.jsonc`
|
|
- **Entfernt:** `cannaleo`, `terpene-pg`
|
|
- **Korrigiert:** `n8n-mcp.url` → `https://n8n-mcp.emsenhuber.net/mcp` (mit `/mcp`)
|
|
- **Markiert:** `shelly-mcp.enabled` → `false` (kein Host)
|
|
- **Kommentar:** shelly-mcp-Deploy als TODO angemerkt
|
|
- **Backup:** `~/.opencode/opencode.jsonc.bak-pre-n8n-mcp` (vor n8n-mcp-Edit)
|
|
|
|
### 3. `~/dev/bf-infra/CLAUDE.md`
|
|
- Ist-Stand-Block: shelly-mcp-Tote hinzugefügt
|
|
- Lessons-for-Sessions: 3 neue Regeln
|
|
- **MCP-Änderung = aktiv melden** (Christoph-Direktive 2026-08-27)
|
|
- **Host vor Edit verifizieren** (Live-Read: nc/ps/curl)
|
|
- **Tote MCPs → ins Projekt-Repo**, nicht global
|
|
- Checkliste um Punkt 5 erweitert: „MCP-Änderung? Vorher Live-Check"
|
|
|
|
### 5. Neue Datei in terpene-Repo
|
|
- `~/dev/blaueblueten-n8n/docs/mcp-rueckantwort-2026-08-27.md` — dokumentiert für terpene-Phase, was war und welche Optionen (A = Repo-Pattern, B = weglassen) bestehen
|
|
|
|
## Live-Verifizierung (2026-08-28)
|
|
|
|
```
|
|
n8n-mcp: ✅ connected, Bearer akzeptiert, serverInfo: n8n-documentation-mcp 2.57.1
|
|
10 MCP-Server total: 9 connected + 1 disabled (shelly-mcp)
|
|
URL-Test: curl POST /mcp mit Bearer → 200, initialize-Response
|
|
```
|
|
|
|
## Was du noch zu tun hast
|
|
|
|
### Reihenfolge (du wolltest „erst bf-network-r6 archiv, dann 1")
|
|
|
|
**1. bf-network-r6 im Gitea auf read-only + Archiv-Header** (deine Aktion):
|
|
- `https://gitea.emsenhuber.net/admin/bf-network-r6/settings`
|
|
- Archived anhaken ✓
|
|
- Read-only anhaken ✓
|
|
- Description: „Archiv — siehe admin/bf-infra für aktive Entwicklung"
|
|
|
|
**2. terpene-Caddyfile-Block** (`~/dev/bf-infra/caddy/Caddyfile`):
|
|
```
|
|
terpene.teilzeitladen.xyz {
|
|
reverse_proxy http://10.40.20.167:8890
|
|
}
|
|
```
|
|
- Mac mini (`.167`) lebt (live ping 527 µs avg, Port 8890 offen)
|
|
- Commit-Kommentar: „Quick-Win für terpene-Backfill — nicht das Pattern, TP34 ist die saubere Lösung"
|
|
|
|
**3. `STATUS.md` Z.47** in `~/dev/blaueblueten-n8n/STATUS.md` korrigieren:
|
|
- Realität: kein Tunnel hat `terpene.teilzeitladen.xyz` als Ingress, Worker läuft nur über CF-Workers-Custom-Domain `420.teilzeitladen.xyz`
|
|
- Streichen oder umformulieren
|
|
|
|
**4. `~/.claude.json` `n8n-mcp`-Eintrag nachziehen** (du wolltest „n8n-mcp auch korrekt in beide Configs"):
|
|
- Aktuell nur in `~/.config/opencode/opencode.jsonc`, nicht in `~/.claude.json`
|
|
- Block dort identisch:
|
|
```json
|
|
"n8n-mcp": {
|
|
"type": "http",
|
|
"url": "https://n8n-mcp.emsenhuber.net/mcp",
|
|
"headers": {
|
|
"Authorization": "Bearer <redacted>"
|
|
}
|
|
}
|
|
```
|
|
|
|
**5. gitea-mcp „Server not initialized"** untersuchen:
|
|
- Diese Session: MCP-Aufruf gab `Streamable HTTP error: ... "Bad Request: Server not initialized"`
|
|
- Mögliche Ursache: Container-Restart noch nicht durch, oder Backend-Init fehlt
|
|
- Erste Adress-Tests: `https://gitea-mcp.emsenhuber.net/mcp` antwortet mit 405 (Method not Allowed, nicht Init-Fehler) → MCP-Backend läuft, aber die SSE-Initialisierung klemmt
|
|
- Aktion: Portainer/Komodo-Container-Logs prüfen, ggf. manueller Restart
|
|
|
|
**6. shelly-mcp deployen** (eigener Punkt, nicht zeitkritisch):
|
|
- Skript: `~/dev/bf-infra/mcp/shelly/server.py`
|
|
- Wo deployen? Optionen:
|
|
- Container auf Mac mini (10.40.20.167) — passt zum Caddyfile-Pattern
|
|
- Container auf NAS (10.40.20.10) — wo auch Portainer läuft
|
|
- pve-LXC (10.40.20.126 oder neu) — zentral
|
|
- Sobald deployed, Config auf neue IP + `enabled=true`
|
|
|
|
## Lessons Learned (an nächste Session)
|
|
|
|
- **`~/.claude.json` ≠ `~/.config/opencode/opencode.jsonc`**: zwei separate Werkzeugkästen, müssen **manuell synchron** gehalten werden
|
|
- **MCP-Geistereinträge sind häufiger als gedacht** — regelmäßiger Audit (alle 2-4 Wochen) auf tote Hosts sinnvoll
|
|
- **`opencode mcp list` zeigt Initialisierungs-Status, nicht dauerhaften Connect** — bei Hänger: kurz warten, dann erneut prüfen
|
|
|
|
## Stand
|
|
|
|
- 2026-08-28, gegen Ende der MCP-Cleanup-Session
|
|
- Christoph + Hubert/minimax-m3
|
|
- Commits lokal + remote: `046f103` (HEAD)
|
|
- 256 Commits in `admin/bf-infra` |