v1.0.1 to v2.0.0

51 added, 108 removed. Audit A to A.

---
name: mcp-config-sync
- version: 1.0.1
+ version: 2.0.0
type: skill
- author: Lukas Geiger + Claude
+ author: Lukas Geiger + Claude + Codex
created: 2026-05-16
- updated: 2026-06-13
+ updated: 2026-07-27
description: >
- Synchronisiert MCP-Server zwischen den Agent-Apps Claude Code und Claude Desktop auf demselben Rechner. Aktiviert sich, wenn der User einen MCP-Server in beiden Apps verfuegbar machen will, einen MCP-Server hinzufuegt/aendert/entfernt, fragt "warum sieht Claude Desktop den Server nicht", "sync zwischen claude-code und claude-desktop", "MCP in beiden", "shared mcp", oder Plugins/Extensions zwischen beiden Apps koordinieren will. Auch beim Umzug auf ein neues System nutzen, sobald beide Apps installiert sind, damit beide denselben MCP-Stand haben. Skill enthaelt Sync-Skripte fuer Windows (PowerShell) und macOS (zsh+jq) sowie eine Master-Datei-Vorlage.
-
+ Anbieterneutraler Einstieg zum Erkennen, Planen und Synchronisieren von
+ MCP-Konfigurationen zwischen frei gewählten Agent-Anbietern und App-Klassen.
+ Der User bestimmt Quelle, Ziele und Umfang. Der Skill inventarisiert bekannte
+ Möglichkeiten auf dem aktuellen System und bietet Topologien an, ohne
+ automatisch eine Truth-Quelle festzulegen.
standalone: true
anthropic_compatible: true
bach_compatible: true
bach_origin: false
-
category: infrastructure
- tags: [mcp, claude-code, claude-desktop, sync, windows, macos]
+ tags: [mcp, config, sync, provider-neutral, discovery, multi-agent]
language: de
status: active
-
dependencies:
- tools: [powershell, jq]
+ tools: [python]
services: []
- protocols: []
+ protocols: [agent-config-sync]
python: []
-
provenance:
origin: "custom"
- origin_path: "~/.claude/skills/mcp-config-sync/"
- origin_version: "1.0.0"
- last_sync_from_origin: "2026-05-16"
+ origin_path: "skills/infrastructure/mcp-config-sync/"
+ origin_version: "2.0.0"
+ last_sync_from_origin: null
last_sync_to_origin: null
local_changes_since_sync: false
---
<img src="banner.png" width="100%" alt="mcp-config-sync banner">
# MCP Config Sync
- Synchronisiert die drei Bereiche, in denen Claude Code und Claude Desktop sich Inhalte teilen koennen — MCP-Server, Skills-Status, Plugin/Extension-Paritaet.
-
- ## Ueberblick — was ist synchronisierbar?
-
- | Bereich | Sync-Status | Mechanik |
- |---|---|---|
- | **MCP-Server** | automatisch | Master-Datei + Skript spiegelt in beide Configs |
- | **User-Skills** | teilweise | Claude Code liest `~/.claude/skills/`, Claude Desktop nicht direkt — siehe `references/skills-sync-options.md` |
- | **Plugins/Extensions** | nur Mapping | unterschiedliche Marketplaces — siehe `references/plugin-extension-parity.md` |
-
- ## Erstmaliger Setup
-
- 1. Master-Datei am Ziel-Pfad anlegen:
- - Windows: `%USERPROFILE%\.claude\_shared-mcp.json`
- - macOS: `~/.claude/_shared-mcp.json`
-
- Vorlage: `assets/_shared-mcp.template.json`. Pfade fuer das jeweilige System anpassen.
-
- 2. Sync-Skript am gleichen Ort ablegen:
- - Windows: `scripts/sync-tools.ps1` -> `%USERPROFILE%\.claude\sync-tools.ps1`
- - macOS: `scripts/sync-tools.sh` -> `~/.claude/sync-tools.sh` (`chmod +x` nicht vergessen)
-
- 3. macOS-Voraussetzung: `brew install jq`
-
- ## Routine-Sync (jedes Mal nach Aenderung der Master-Datei)
-
- **Windows:**
- ```powershell
- powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\.claude\sync-tools.ps1"
- ```
-
- **macOS:**
- ```zsh
- ~/.claude/sync-tools.sh
- ```
-
- **Danach:**
- - Claude Desktop **vollstaendig** beenden (Tray-Icon -> Quit, nicht nur Fenster schliessen) und neu starten
- - In Claude Code wahlweise mit `claude --mcp-config ~/.claude/profiles/shared.json` starten
-
- ## Was passiert beim Sync?
-
- Das Skript nimmt den `mcpServers`-Block aus der Master-Datei und schreibt ihn an zwei Stellen:
-
- 1. **Claude Code**: `~/.claude/profiles/shared.json` (Datei wird komplett ueberschrieben — andere Profile bleiben unberuehrt)
- 2. **Claude Desktop**: `<AppData>/Claude/claude_desktop_config.json` — der `mcpServers`-Block wird ersetzt, alle anderen Felder (`isUsingBuiltInNodeForMcp`, `preferences`, ...) bleiben erhalten. Vorher wird ein Backup mit Zeitstempel angelegt.
-
- ## Master-Datei-Schema
-
- ```json
- {
- "_comment": "Optional, wird ignoriert.",
- "_stand": "YYYY-MM-DD",
- "mcpServers": {
- "<server-name>": {
- "command": "node | npx | absolute path",
- "args": ["..."],
- "env": { "OPTIONAL_VAR": "value" }
- }
- }
- }
- ```
-
- Zusaetzliche Top-Level-Felder werden vom Skript ignoriert. Fuer absolute Pfade, die plattformuebergreifend sind, im Master Slash-Pfade (`C:/Users/<user>/...`) verwenden — Windows akzeptiert beides, macOS nutzt eh Forward-Slashes.
-
- ## Wenn ein MCP-Server nur in einer App laufen soll
-
- Nicht in die Master-Datei aufnehmen. Stattdessen:
- - Claude Code only: in einem anderen Profile-File (`~/.claude/profiles/<name>.json`) eintragen, dann `claude --mcp-config ...`
- - Claude Desktop only: per Hand in `claude_desktop_config.json` ergaenzen — der Sync-Lauf laesst andere Server in der Config unangetastet, weil er nur den `mcpServers`-Block ersetzt.
+ Dieser Skill ist der MCP-spezifische Einstieg zu `agent-config-sync`. Er nimmt
+ keinen Anbieter, keine App und keine zentrale Datei als Standard an.
- > **Beachten:** Wenn ein neuer Master-Sync laeuft, geht der nicht in der Master-Datei stehende Server in Claude Desktop verloren. Wenn Claude-Desktop-only-Server gepflegt werden sollen, **immer manuell in der Master-Datei eintragen** und das Skript zum einzigen Schreiber machen — sonst gehen sie beim naechsten Sync verloren.
+ ## Pflichtablauf
- ## Aufbau dieses Skills
+ 1. Frage in der Form: „Zwischen welchen Endpoints soll synchronisiert werden?“
+ Zulässig sind konkrete Namen oder Auswahlachsen:
+ - innerhalb eines Anbieters zwischen App-Klassen,
+ - innerhalb einer App-Klasse zwischen Anbietern,
+ - explizite Endpoint-Liste,
+ - alle erkannten Anbieter und Klassen.
+ 2. Führe im benachbarten Skill `agent-config-sync` aus:
+ `python scripts/sync.py --discover`, danach `--offer`.
+ 3. Zeige nur live belegte Endpoints als erkannt. Bekannte, aber nicht belegte
+ Möglichkeiten bleiben als Kandidaten gekennzeichnet.
+ 4. Lasse den User Truth-Quelle, Ziele, Richtung und Konfliktregel bestimmen.
+ 5. Erzeuge `registry.json`, zeige `--plan`, und schreibe erst nach expliziter
+ Freigabe mit `--apply --yes`.
- ```
- mcp-config-sync/
- ├── SKILL.md (diese Datei)
- ├── scripts/
- │ ├── sync-tools.ps1 Windows-Sync (PowerShell)
- │ └── sync-tools.sh macOS-Sync (zsh+jq)
- ├── assets/
- │ └── _shared-mcp.template.json Master-Datei-Vorlage
- └── references/
- ├── plugin-extension-parity.md Mapping Claude-Code-Plugins ↔ Claude-Desktop-Extensions
- └── skills-sync-options.md Optionen, User-Skills auch in Claude Desktop nutzbar zu machen
- ```
+ ## Auswahlbeispiele
- Bei den meisten Anfragen reicht die SKILL.md. Reference-Dateien nur dann lesen, wenn der User explizit nach Plugin-Mapping oder Skills-Sync-Optionen fragt.
+ - „MCP zwischen Claude Code und Claude Desktop.“
+ - „MCP zwischen allen installierten CLI-Anbietern.“
+ - „MCP von dieser JSON-Datei nach Codex und Cursor.“
+ - „Zeig erst alle Sync-Möglichkeiten auf diesem Rechner.“
- ## Anti-Pattern
+ Die alte Claude-Code↔Claude-Desktop-Automation liegt nur noch als
+ Migrationsreferenz unter `agent-config-sync/references/legacy-mcp-config-sync.md`.
+ Die Skripte in diesem Ordner sind nicht mehr der generische Standard und dürfen
+ nur für bewusst gewählte Legacy-Profile verwendet werden.
- - **Nicht** den `mcpServers`-Block in `claude_desktop_config.json` haendisch editieren, wenn die Master-Datei der wahre Quellort ist — der naechste Sync ueberschreibt das.
- - **Nicht** versuchen, das Skill-Verzeichnis `~/.claude/skills/` per Junction in Claude Desktops session-internen Skill-Pfad zu binden — das ist fragil und wird durch Anthropic-Updates regelmaessig zerstoert. Stattdessen einen Index-/Bridge-Skill verwenden (siehe `references/skills-sync-options.md`, Option 1).
- - **Nicht** Claude-Code-Plugins und Claude-Desktop-Extensions 1:1 abgleichen wollen — die Toolkits sind komplementaer, nicht spiegelbar.
+ ## Sicherheitsgrenzen
- ---
+ - Discovery und Angebote sind read-only.
+ - Kein impliziter Hub und kein implizites „alles“.
+ - Unverifizierte Pfade oder Formate werden nicht beschrieben.
+ - Vor jedem Write: Plan, Backup, Verifikation.
+ - App-/Marketplace-Erweiterungen werden als Mapping behandelt, nicht blind
+ gespiegelt.
## Changelog
- ### 1.0.1 (2026-06-13)
- - Erstveroeffentlichung in der Skill-Bibliothek: hartkodierte User-Pfade in SKILL.md, Sync-Skript und Master-Vorlage durch `%USERPROFILE%`/`$HOME`-Platzhalter ersetzt
+ ### 2.0.0 (2026-07-27)
- ### 1.0.0 (2026-05-16)
- - Initiale Fassung: Master-Datei + Sync-Skripte (Windows/macOS), Plugin-Paritaets- und Skills-Sync-Referenzen
+ - Anbieter- und app-klassenneutral.
+ - Systeminventar und Topologieangebote vor jeder Auswahl.
+ - Truth-Quelle wird ausschließlich vom User festgelegt.
+ - Claude-Paar wird zum optionalen Legacy-Profil.