73 lines
2.8 KiB
C#
73 lines
2.8 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Sozsoft.Platform;
|
|
|
|
namespace Sozsoft.Mcp;
|
|
|
|
/// <summary>
|
|
/// /mcp ucunda yayinlanan arac adlari. Ayni degerler MCP Servers ekranindaki
|
|
/// <c>AllowedTools</c> alaninin secenek listesini besler; buraya bir arac eklenirse ekranin
|
|
/// statik lookup listesi de guncellenir.
|
|
/// </summary>
|
|
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";
|
|
|
|
/// <summary>
|
|
/// Veri yazan araclar. Sunucu kaydinda <c>AllowWrite</c> kapaliysa bunlar arac listesinde
|
|
/// hic yer almaz.
|
|
/// </summary>
|
|
public static readonly string[] WriteTools = [InsertRow, UpdateRow, DeleteRow];
|
|
|
|
/// <summary>
|
|
/// Sunucu kaydi olmasa da acik kalan araclar. Istemcinin baglantisinin neden bos
|
|
/// gorundugunu anlayabilmesi icin gereklidir.
|
|
/// </summary>
|
|
public static readonly string[] AlwaysAvailableTools = [ServerInfo];
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
public static readonly IReadOnlyDictionary<string, string> RequiredPermissions = new Dictionary<string, string>
|
|
{
|
|
[RunSelect] = PlatformConsts.AppCodes.SqlQueryManagers.Default,
|
|
[InsertRow] = PlatformConsts.AppCodes.DeveloperKits.McpServers.Write,
|
|
[UpdateRow] = PlatformConsts.AppCodes.DeveloperKits.McpServers.Write,
|
|
[DeleteRow] = PlatformConsts.AppCodes.DeveloperKits.McpServers.Write,
|
|
};
|
|
|
|
/// <summary>Yayinlanan tum araclar, arac listesindeki siralarina gore.</summary>
|
|
public static readonly string[] All =
|
|
[
|
|
ServerInfo,
|
|
ListLists,
|
|
DescribeList,
|
|
SearchSchema,
|
|
QueryList,
|
|
RunSelect,
|
|
ListQueries,
|
|
RunQuery,
|
|
InsertRow,
|
|
UpdateRow,
|
|
DeleteRow
|
|
];
|
|
|
|
/// <summary>
|
|
/// <c>AllowedTools</c> alaninda secilebilen araclar. Her zaman acik olanlar secenek
|
|
/// olarak sunulmaz; onlari kapatmak mumkun degildir.
|
|
/// </summary>
|
|
public static IEnumerable<string> SelectableTools
|
|
=> All.Where(name => !AlwaysAvailableTools.Contains(name));
|
|
}
|