diff --git a/Services/ClaudeCliService.cs b/Services/ClaudeCliService.cs
index 922e5c9..3f7f3f1 100644
--- a/Services/ClaudeCliService.cs
+++ b/Services/ClaudeCliService.cs
@@ -259,8 +259,12 @@ public class ClaudeCliService
///
/// Parst die in der Session hinterlegte MCP-Server-Liste (JSON-Array von {name,url,token}).
- /// Säubert die Namen (glob-/config-tauglich), filtert reservierte Namen, Duplikate und
- /// Einträge ohne URL. Wirft nie – ungültige Eingaben ergeben eine leere Liste.
+ /// Säubert die Namen (glob-/config-tauglich), filtert reservierte Namen und Duplikate.
+ /// Einträge OHNE URL sind erlaubt (Url = null): sie erzeugen KEINEN eigenen Server,
+ /// steuern aber die Allowlist-Freigabe mcp__<name>__* bei – gedacht für Server, die
+ /// bereits extern (z.B. stdio via ~/.claude.json) laufen und die gott nur erlauben, aber
+ /// nicht selbst starten soll (sonst kollidiert gotts URL-Server mit dem externen gleichen
+ /// Namens). Nur Name+leer wird verworfen. Wirft nie – ungültige Eingaben ergeben leere Liste.
///
public static List ParseMcpServers(string json)
{
@@ -278,10 +282,10 @@ public class ClaudeCliService
var url = el.TryGetProperty("url", out var u) && u.ValueKind == JsonValueKind.String ? u.GetString() : null;
var token = el.TryGetProperty("token", out var t) && t.ValueKind == JsonValueKind.String ? t.GetString() : null;
var name = SanitizeMcpName(rawName);
- if (string.IsNullOrEmpty(name) || string.IsNullOrWhiteSpace(url)) continue;
+ if (string.IsNullOrEmpty(name)) continue; // URL optional: ohne URL = reiner Allowlist-Eintrag
if (_reservedMcpNames.Contains(name)) continue;
if (!seen.Add(name)) continue; // doppelter Name → ignorieren
- result.Add(new McpServerDef { Name = name, Url = url.Trim(), Token = string.IsNullOrWhiteSpace(token) ? null : token.Trim() });
+ result.Add(new McpServerDef { Name = name, Url = string.IsNullOrWhiteSpace(url) ? null : url.Trim(), Token = string.IsNullOrWhiteSpace(token) ? null : token.Trim() });
}
}
catch { /* ungültiges JSON → leere Liste */ }
diff --git a/wwwroot/index.html b/wwwroot/index.html
index c86aa30..0432d31 100644
--- a/wwwroot/index.html
+++ b/wwwroot/index.html
@@ -172,10 +172,10 @@
-
+
- Pro Eintrag: Name, URL (http/sse) und optionaler Token. Der Name muss exakt dem Tool-Präfix entsprechen (z.B. UnityMCP, nicht Unity). Tools werden headless als mcp__<name>__* freigegeben.
+ Pro Eintrag: Name, optionale URL (http/sse) und optionaler Token. Der Name muss exakt dem Tool-Präfix entsprechen (z.B. UnityMCP, nicht Unity); Tools werden headless als mcp__<name>__* freigegeben. URL leer lassen, wenn der Server bereits extern läuft (z.B. stdio via ~/.claude.json) – dann gibt gott ihn nur frei und erzeugt keinen eigenen, kollidierenden Server.