using System; using System.Collections.Generic; using System.Text.Json; using ModelContextProtocol; using ModelContextProtocol.Protocol; namespace Sozsoft.Mcp.Tools; /// /// Servis sonucunu arac sonucuna cevirir. Deger SDK'nin donus degerini yazdigi bicimde /// () JSON metnidir. hata /// sonucudur (IsError): istisna atilmadan modele ulasir, model nedeni okuyup girdiyi duzeltir. /// internal static class McpToolResult { /// Degeri olmayan araclarin (not ekleme, silme) basari cevabi. private const string Done = "ok"; public static CallToolResult From(McpOutcome outcome) => outcome.TryGetValue(out var value, out var problem) ? Text(JsonSerializer.Serialize(value, McpJsonUtilities.DefaultOptions)) : Error(problem.Message); public static CallToolResult From(McpProblem? problem) => problem is null ? Text(Done) : Error(problem.Message); /// Degeri metin disinda icerik (resim) tasiyan araclar icin. public static CallToolResult From(McpOutcome outcome, Func> toContent) => outcome.TryGetValue(out var value, out var problem) ? new CallToolResult { Content = toContent(value) } : Error(problem.Message); public static CallToolResult Error(string message) => new() { IsError = true, Content = [new TextContentBlock { Text = message }] }; private static CallToolResult Text(string text) => new() { Content = [new TextContentBlock { Text = text }] }; }