Fix MCP-Allowlist: exakte Server-Form mcp__<name>__* statt nie-matchendem Glob
Die Claude-CLI-Permission-Engine parst eine Allowlist-Regel via split("__")
zu {serverName, toolName} und vergleicht den Servernamen per strenger
Gleichheit (===); ein '*' wirkt ausschliesslich im Tool-Teil, nie im
Server-Teil. Die generalisierte Form "mcp__*<name>*" parste damit zu einem
Server namens "*<name>*" und matchte NIE -> jeder ueber die MCP-Liste
eingetragene Server wurde headless still abgelehnt (Regression aus 5f7dec6).
- ClaudeCliService.cs: Allowlist-Glob mcp__*<name>* -> mcp__<name>__*
(exakter Server + Tool-Wildcard, dieselbe Form wie mcp__web-search-prime__*);
Kommentar erklaert die strenge Server-Gleichheit.
- index.html: UI-Hinweis korrigiert - Name muss exakt dem Tool-Praefix
entsprechen (z.B. UnityMCP, nicht Unity); Freigabe als mcp__<name>__*.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
3ae94fb697
commit
9d21138e62
2 files changed
+9
-4
No files matched your search
@@ -410,14 +410,19 @@ public class ClaudeCliService
|
||||
tools.Add("mcp__gott-remote__memory_list");
|
||||
}
|
||||
// Benutzerdefinierte MCP-Server: alle Tools je Server erlauben.
|
||||
// Glob mcp__*<name>* ist bewusst locker (fängt Casing-/Präfix-Varianten ab,
|
||||
// z.B. Servername "unity" vs. tatsächlicher Tool-Präfix "UnityMCP").
|
||||
// WICHTIG: Die CLI-Permission-Engine vergleicht den SERVER-Namen per strenger
|
||||
// Gleichheit (Regel wird als mcp__<server>__<tool> geparst; ein '*' wirkt NUR im
|
||||
// Tool-Teil, NICHT im Server-Teil). Ein Glob wie "mcp__*<name>*" würde zu einem
|
||||
// Server namens "*<name>*" parsen und NIE matchen. Daher exakte Form
|
||||
// "mcp__<name>__*" (exakter Server + alle Tools) – dieselbe Form wie web-search-prime.
|
||||
// Konsequenz: Der eingetragene Name MUSS dem echten Tool-Präfix entsprechen
|
||||
// (z.B. "UnityMCP", nicht "Unity").
|
||||
if (mcpServerNames != null)
|
||||
{
|
||||
foreach (var mcpName in mcpServerNames)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(mcpName))
|
||||
tools.Add($"mcp__*{mcpName}*");
|
||||
tools.Add($"mcp__{mcpName}__*");
|
||||
}
|
||||
}
|
||||
args.Add("--allowed-tools");
|
||||
|
||||
Reference in new issue
Block a user