ClawdDotNet als MCP-Server: durch dieselben Pruefstellen (#713)
Eine fremde Laufzeit oder der eigene Claude Code des Menschen spricht per MCP mit der Instanz. Der Server bietet genau die Werkzeuge des Agenten hinter dem Token an; jeder Aufruf laeuft durch die Engine wie ein Aufruf des eigenen Modells (Rechtetor, Vorpruefung, Werkzeugrechte, Staging, Audit mit Quelle mcp, Rahmung), und der Aufrufer gilt als Leser fremder Inhalte (#715). Eigener Socket mcp.sock statt manager.sock: ueber den Instanz-Socket antwortet die Verwaltung ohne Token, ueber mcp.sock gibt es nur /mcp und nur mit MCP-Token. Lauf-Tokens nur im Speicher, enden mit dem Lauf; persoenliche Tokens (hoechstens 90 Tage, widerrufbar, nur als SHA-256) in der Agentenansicht. Transporte: HTTP auf mcp.sock, Weboberflaeche und Manager (/mcp/{instanz}), stdio ueber ClawdDotNet --mcp-bridge (Token nur aus Umgebung oder 0600-Datei). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
b5f65b8cf7
commit
cb46289bb6
@@ -67,6 +67,21 @@ public sealed class AppHost : IAsyncDisposable
|
||||
/// <summary>#689: The desk a human decides at; <c>null</c> without a task board.</summary>
|
||||
public Core.Cases.ICaseDesk? CaseDesk => Engine?.CaseDesk;
|
||||
|
||||
/// <summary>#713: The tokens of the MCP server — a run's, and personal ones.</summary>
|
||||
public Core.Mcp.McpGrants? Mcp { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// #713: Whom the MCP server hands calls to — the engine. Settable so the HTTP surface can
|
||||
/// be tested without a model behind it.
|
||||
/// </summary>
|
||||
public Core.Mcp.IMcpToolHost? McpToolHost
|
||||
{
|
||||
get => _mcpToolHost ?? Engine;
|
||||
init => _mcpToolHost = value;
|
||||
}
|
||||
|
||||
private readonly Core.Mcp.IMcpToolHost? _mcpToolHost;
|
||||
|
||||
/// <summary>#717: Special budgets — one pot per task tree, approved by a human.</summary>
|
||||
public Core.Budget.ISpecialBudgetRepository? SpecialBudgets { get; init; }
|
||||
|
||||
@@ -614,6 +629,7 @@ public sealed class AppHost : IAsyncDisposable
|
||||
Transcripts = transcripts,
|
||||
Cases = cases,
|
||||
SpecialBudgets = specialBudgets,
|
||||
Mcp = new Core.Mcp.McpGrants(storage),
|
||||
Insights = new RunInsights(audit, transcripts, board, staging,
|
||||
agentId => instance.Agents.FirstOrDefault(a => a.AgentId == agentId) is { } agent
|
||||
? engine.TranscriptRetentionFor(agent)
|
||||
|
||||
Reference in New Issue
Block a user