| 1 | using System.Collections.Frozen; |
| 2 | using System.Text.Json; |
| 3 | |
| 4 | namespace AIGuiders.SampleMcp; |
| 5 | |
| 6 | internal static class ToolHandlers |
| 7 | { |
| 8 | internal static string Handle(string name, IReadOnlyDictionary<string, JsonElement> args) |
| 9 | { |
| 10 | args ??= FrozenDictionary<string, JsonElement>.Empty; |
| 11 | return name switch |
| 12 | { |
| 13 | "hello" => HandleHello(args), |
| 14 | _ => throw new ArgumentException($"Unknown tool: {name}", nameof(name)), |
| 15 | }; |
| 16 | } |
| 17 | |
| 18 | private static string HandleHello(IReadOnlyDictionary<string, JsonElement> args) |
| 19 | { |
| 20 | var who = args.TryGetValue("name", out var el) && el.ValueKind == JsonValueKind.String |
| 21 | ? el.GetString() |
| 22 | : null; |
| 23 | |
| 24 | who = string.IsNullOrWhiteSpace(who) ? "world" : who.Trim(); |
| 25 | return $"Hello, {who}!"; |
| 26 | } |
| 27 | } |
| 28 | |
| 29 | |
View only · write via MCP/CIDE