Add client-side tool call interceptor (annotation-aware policy enforcement)
Maintainer antworten meist innerhalb von 2 Tagen
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 45/100
Rechercherichtung
Lesen Sie zunächst McpClientTool.ProtocolTool.Annotations sowie die APIs McpClientOptions und McpClientHandlers, und vergleichen Sie sie anschließend mit der serverseitigen AddCallToolFilter-Pipeline. Legen Sie fest, wie der vorgeschlagene ToolCallFilter Annotationen untersuchen und Richtlinien über die Aufrufpfade für Client-Tools hinweg durchsetzen kann, mit Tests, die blockierte destruktive Aufrufe zeigen und dass erlaubte Aufrufe über next fortgesetzt werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
The MCP C# SDK v1.1.0 exposes ToolAnnotations via McpClientTool.ProtocolTool.Annotations, but provides no built-in mechanism for a host to inspect those annotations and decide whether to allow invocation.
The server-side filter pipeline (WithRequestFilters(f => f.AddCallToolFilter(...))) has no client-side equivalent. McpClientOptions has no ToolCallPolicy or BeforeToolCall hook. McpClientHandlers only handles server→client requests (Sampling, Elicitation).
Proposed API
var client = await McpClient.CreateAsync(transport, new McpClientOptions
{
ToolCallFilter = async (toolName, annotations, args, next, ct) =>
{
if (annotations?.DestructiveHint == true)
throw new ToolBlockedException("Requires confirmation");
return await next(toolName, args, ct);
}
});
Without this, hosts must manually wrap every McpClientTool before passing to an IChatClient, and any unwrapped path bypasses policy entirely.
See also: https://modelcontextprotocol.io/blog/2026-03-16-tool-annotations (lethal trifecta attack pattern)
- Vorherrschende Sprache
- C#
- Sterne
- 4.6k
- Forks
- 852
- Ø Merge
- 9 T. 3 Std.
- Gemergte PRs (30 T.)
- 3
Entwicklungsumgebung
Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus modelcontextprotocol/csharp-sdk
-
Reserved URI-template expansion throws for supplementary Unicode charactersEvtl. vergeben @pournasserian hat das vor 5 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
modelcontextprotocol/csharp-sdk#1913 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 2 Tagen
-
ClaimsPrincipal parameter injection sample requestEvtl. vergeben @utsavjain2809 hat das vor 15 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
modelcontextprotocol/csharp-sdk#1899 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Document ClientOAuthOptions.ScopeSelector usageEvtl. vergeben @z0rimo hat das vor 38 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
modelcontextprotocol/csharp-sdk#1867 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 2 Tagen
-
HTTP+SSE client: POST responses are never disposed, leaking one connection per sent messageEvtl. vergeben @yalcinfu22 hat das vor 53 Tagen übernommen. Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
modelcontextprotocol/csharp-sdk#1840 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 2 Tagen
-
enhancement needs confirmation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 64/100
modelcontextprotocol/csharp-sdk#678 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 2 Tagen
Alle Issues in modelcontextprotocol/csharp-sdk
Ähnliche Issues
-
bug priority: P2
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 84/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
Maintainer antworten meist innerhalb von 1 Tag
-
[Docs] README/PRIVACY still name AppCenter although v1.5.6.0+ uses the Microsoft Store Services SDKOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
needs-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Azure/azure-sdk-tools#17317 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
swisstopo/swissgeol-boreholes-suite#3086 ·
Maintainer antworten meist innerhalb von 1 Tag