104 lines
4.5 KiB
C#
104 lines
4.5 KiB
C#
namespace Sozsoft.Mcp;
|
|
|
|
/// <summary>MCP modulunun sabit sozlesme degerleri.</summary>
|
|
public static class McpConsts
|
|
{
|
|
/// <summary>
|
|
/// Veri sozlugu satirlarinin turu. <c>Sas_H_DbTableColumn</c> tablosunda ayni deger
|
|
/// <c>DictionaryType</c> kolonunda durur.
|
|
/// </summary>
|
|
public const string DictionaryType = "ListFormJson";
|
|
|
|
/// <summary>
|
|
/// Sozluk ureten prosedurun varsayilan <c>@TenantName</c> degeri. Host baglaminda sozluk
|
|
/// bu adla yazilir.
|
|
/// </summary>
|
|
public const string DefaultDictionaryTenantName = "Sozsoft";
|
|
|
|
/// <summary>Sunucu kaydinda satir tavani verilmediginde (ya da sifir oldugunda) uygulanan deger.</summary>
|
|
public const int DefaultMaxRows = 200;
|
|
|
|
/// <summary>
|
|
/// <c>CustomEndpoint.DataSourceCode</c> bu degeri tasidiginda istegi yapan kullanicinin
|
|
/// kiraci veritabani kullanilir.
|
|
/// </summary>
|
|
public const string TenantDataSourceMarker = "!Tenant";
|
|
|
|
/// <summary>
|
|
/// Sozluk ureten prosedurun adi. Sozluk bulunamadiginda istemciye ne yapacagi bu adla
|
|
/// bildirilir.
|
|
/// </summary>
|
|
public const string DictionaryProcedureName = "dbo.Sas_H_ListFormFieldsDictionaryJson_SaveDbTableColumns";
|
|
|
|
/// <summary>
|
|
/// Uzak MCP istemcilerinin (Claude, ChatGPT connector'lari) OAuth istemci kimligi. OpenIddict
|
|
/// uygulamasi DbMigrator'da <c>OpenIddict:Applications:Platform_Mcp</c> ayarindan seed edilir;
|
|
/// dinamik istemci kaydi yeni uygulama uretmez, bu kimligi dondurur.
|
|
/// </summary>
|
|
public const string OAuthClientId = "Platform_Mcp";
|
|
|
|
/// <summary>
|
|
/// Dinamik kayitla (RFC 7591) uretilen istemcilerin kimlik oneki. Bilinen saglayicilarin
|
|
/// (Claude, ChatGPT) disindaki MCP istemcileri bu onekle kendi OpenIddict uygulamasini alir.
|
|
/// </summary>
|
|
public const string DynamicClientIdPrefix = "mcp_";
|
|
|
|
/// <summary>
|
|
/// Dinamik istemci sayisinin tavani. Kayit ucu kimlik dogrulamasizdir; tavan, ucun
|
|
/// veritabaninda sinirsiz uygulama biriktirmesini onler.
|
|
/// </summary>
|
|
public const int MaxDynamicClients = 500;
|
|
|
|
/// <summary>
|
|
/// MCP istemcilerinin yenileme token omru. Web istemcisinin kisa omru (dakikalar) connector
|
|
/// icin uygun degil: kullanici birkac saat soru sormadiginda baglanti kopardi. Yenileme
|
|
/// token'i her kullanimda yenilenir; omur, son kullanimdan itibaren sayilir.
|
|
/// </summary>
|
|
public static readonly System.TimeSpan RefreshTokenLifetime = System.TimeSpan.FromDays(30);
|
|
|
|
/// <summary>Istemci kimligi bir MCP istemcisine (bilinen ya da dinamik) mi ait.</summary>
|
|
public static bool IsMcpClient(string? clientId)
|
|
=> clientId is not null
|
|
&& (string.Equals(clientId, OAuthClientId, System.StringComparison.Ordinal)
|
|
|| clientId.StartsWith(DynamicClientIdPrefix, System.StringComparison.Ordinal));
|
|
|
|
/// <summary>MCP ucunun sunucu adresine gore yolu.</summary>
|
|
public const string EndpointPath = "/mcp";
|
|
|
|
/// <summary>Dinamik istemci kaydi (RFC 7591) ucunun yolu.</summary>
|
|
public const string RegistrationEndpointPath = "/connect/register";
|
|
|
|
/// <summary>Korumali kaynak meta verisi (RFC 9728) ucunun yolu.</summary>
|
|
public const string ProtectedResourceMetadataPath = "/.well-known/oauth-protected-resource";
|
|
|
|
/// <summary>
|
|
/// Istemcinin istemesi gereken kapsamlar. <c>offline_access</c> yenileme token'i icindir;
|
|
/// olmadan baglanti her saat yeniden giris ister.
|
|
/// </summary>
|
|
public static readonly string[] OAuthScopes = [Sozsoft.Platform.PlatformConsts.AppName, "offline_access"];
|
|
|
|
/// <summary>
|
|
/// <c>run_query</c> araciyla cagrilabilen nesne turleri. Degerler istemciye oldugu gibi
|
|
/// gosterilir; degistirilirse arac sozlesmesi kirilir.
|
|
/// </summary>
|
|
public static class SavedQueryKinds
|
|
{
|
|
public const string View = "view";
|
|
public const string Procedure = "procedure";
|
|
public const string TableFunction = "tableFunction";
|
|
public const string ScalarFunction = "scalarFunction";
|
|
public const string CustomEndpoint = "customEndpoint";
|
|
}
|
|
|
|
/// <summary>
|
|
/// Veritabanı katalog sorgusunun dondurdugu nesne turu etiketleri.
|
|
/// <see cref="SavedQueryKinds"/> degerlerine eslenir.
|
|
/// </summary>
|
|
public static class CatalogKinds
|
|
{
|
|
public const string View = "VIEW";
|
|
public const string Procedure = "PROCEDURE";
|
|
public const string TableFunction = "TABLE_FUNCTION";
|
|
public const string ScalarFunction = "SCALAR_FUNCTION";
|
|
}
|
|
}
|