using System.Collections.Generic; using System.Linq; using Sozsoft.Platform; namespace Sozsoft.Mcp; /// /// /mcp ucunda yayinlanan arac adlari. Ayni degerler MCP Servers ekranindaki /// AllowedTools alaninin secenek listesini besler; buraya bir arac eklenirse ekranin /// statik lookup listesi de guncellenir. /// public static class McpToolNames { public const string ServerInfo = "server_info"; public const string ListLists = "list_lists"; public const string DescribeList = "describe_list"; public const string SearchSchema = "search_schema"; public const string QueryList = "query_list"; public const string RunSelect = "run_select"; public const string ListQueries = "list_queries"; public const string RunQuery = "run_query"; public const string InsertRow = "insert_row"; public const string UpdateRow = "update_row"; public const string DeleteRow = "delete_row"; /// /// Veri yazan araclar. Sunucu kaydinda AllowWrite kapaliysa bunlar arac listesinde /// hic yer almaz. /// public static readonly string[] WriteTools = [InsertRow, UpdateRow, DeleteRow]; /// /// Sunucu kaydi olmasa da acik kalan araclar. Istemcinin baglantisinin neden bos /// gorundugunu anlayabilmesi icin gereklidir. /// public static readonly string[] AlwaysAvailableTools = [ServerInfo]; /// /// Kullanicinin uygulamada da sahip olmasi gereken yetki. MCP yetki vermez: ham SQL'i /// uygulamada SQL Query Manager'i kullanabilen, veri yazmayi yazma yetkisi olan kullanici /// gorur. Listede olmayan araclar kendi icinde liste bazli yetkiyle suzulur. /// public static readonly IReadOnlyDictionary RequiredPermissions = new Dictionary { [RunSelect] = PlatformConsts.AppCodes.SqlQueryManagers.Default, [InsertRow] = PlatformConsts.AppCodes.DeveloperKits.McpServers.Write, [UpdateRow] = PlatformConsts.AppCodes.DeveloperKits.McpServers.Write, [DeleteRow] = PlatformConsts.AppCodes.DeveloperKits.McpServers.Write, }; /// Yayinlanan tum araclar, arac listesindeki siralarina gore. public static readonly string[] All = [ ServerInfo, ListLists, DescribeList, SearchSchema, QueryList, RunSelect, ListQueries, RunQuery, InsertRow, UpdateRow, DeleteRow ]; /// /// AllowedTools alaninda secilebilen araclar. Her zaman acik olanlar secenek /// olarak sunulmaz; onlari kapatmak mumkun degildir. /// public static IEnumerable SelectableTools => All.Where(name => !AlwaysAvailableTools.Contains(name)); }