MCP-Server: URL optional – URL-lose Einträge als reine Allowlist-Freigabe
Entkoppelt "Server erzeugen" von "Server erlauben": Ein MCP-Eintrag ohne URL erzeugt keinen eigenen (kollidierenden) HTTP-Server mehr, steuert aber weiterhin die Allowlist-Freigabe mcp__<name>__* bei. Gedacht für extern (z.B. stdio via ~/.claude.json) laufende Server, die gott nur erlauben, aber nicht selbst starten soll – sonst kollidiert gotts URL-Server mit dem gleichnamigen externen und der Server verschwindet ganz. - ParseMcpServers: Url optional (null erlaubt), nur Name+leer wird verworfen - Frontend: Name genügt, URL-Placeholder + Hinweistext angepasst Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
9d21138e62
commit
4d29b09488
3 files changed
+13
-9
No files matched your search
@@ -259,8 +259,12 @@ public class ClaudeCliService
|
||||
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// </summary>
|
||||
public static List<McpServerDef> 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 */ }
|
||||
|
||||
Reference in new issue
Block a user