Aracılığıyla paylaş


SQL MCP Server nedir?

Önemli

SQL Model Bağlam Protokolü (MCP) Sunucusu önizleme aşamasındadır ve bu belgeler ve altyapı uygulaması değişebilir. Veri API oluşturucusu sürüm 1.7 önizleme aşamasındayken, MCP özellikleri henüz etikete dahil 1.7.83-rc edilmediğinden yayın öncesi sürümü açıkça kullanmanız gerekir (örneğin, :latest).

SQL MCP Server, geliştiricilere yapay zeka aracılarını veri iş akışlarına getirmenin basit, öngörülebilir ve güvenli bir yolunu sunar. Veritabanını göstermeden veya kırılgan doğal dil ayrıştırmalarına güvenmeden bunu gerçekleştirir. SQL MCP Server, Data API builder'ın varlık soyutlaması, RBAC, önbelleğe alma ve telemetri verilerini temel alarak REST, GraphQL ve MCP'de aynı şekilde çalışan üretime hazır bir yüzey sunar. Bunu bir kez yapılandırdığınızda altyapı gerisini halleder.

Model Bağlam Protokolü (MCP)

Model Bağlam Protokolü (MCP), yapay zeka aracılarının dış araçları nasıl bulup çağırdığını tanımlayan bir standarttır. Araç, kayıt oluşturma veya veri okuma gibi tek bir işlemdir. Her araç girişlerini, çıkışlarını ve davranışını açıklar. MCP, aracıların özellikleri bulması ve kullanması için tahmin edilebilir bir yol sağlar.

SQL için MCP sunucusu

SQL MCP Server, Microsoft'un aracı uygulamalar için dinamik, açık kaynak altyapısıdır. Bunu, şunu tanımlayan bir JSON dosyasıyla yapılandırabilirsiniz:

  • Veritabanınıza bağlanma
  • Açığa çıkarılacak tablolar, görünümler veya saklı yordamlar
  • Her nesneye uygulanan izinler

SQL MCP Server, 1.7 sürümünden itibaren Veri API'sinin oluşturucusunun (DAB) bir parçası olarak bulunur. Sql işlemlerini küçük bir MCP araçları ailesi olarak kullanıma sunar, böylece aracılar denetimli bir sözleşme aracılığıyla veritabanı varlıklarıyla etkileşime geçebilir. Sunucu kendi kendine barındırılır, ancak geliştiriciler için DAB komut satırı üzerinden yerel olarak da çalıştırılabilir.

Tavsiye

Veri API'sini oluşturucusu açık kaynaktır ve kullanımı ücretsizdir.

Kullanım örnekleri

SQL MCP Server için bazı tipik kullanım örnekleri şunlardır:

  • Yardımcı pilotların veya sohbet botlarının güvenli CRUD işlemleri gerçekleştirmesine izin verme
  • SQL yazmadan iç otomasyonlar oluşturma
  • Veritabanını doğrudan göstermeden aracı özellikleri ekleme

Şemanın güvenliğini sağlama

Veri API oluşturucusu, yapılandırmada API aracılığıyla kullanıma sunulan tüm tabloları, görünümleri ve saklı yordamları listeleyen iyi tanımlanmış bir varlık soyutlama katmanı kullanır. Bu katman, adlar ve sütunlar için takma adlar eklemenizi, nesneleri ve parametreleri açıklamanızı ve farklı roller için hangi alanların kullanılabilir olduğunu sınırlamanızı sağlar.

Önemli

Veri API oluşturucusu (DAB) rol farkındadır ve yalnızca geçerli rolün erişmesine izin verilen varlıkları ve işlemleri kullanıma sunar.

SQL MCP Server, Veri API oluşturucusunun bir özelliği olduğundan, bu soyutlama katmanını da kullanır. Bu yaklaşım, iç şemanın dış tüketicilere açık olmasını önler ve API katmanında karmaşık ve hatta çapraz veri kaynağı, nesne aileleri ve ilişkiler tanımlamanızı sağlar.

NL2SQL'i Çözme

SQL MCP Server, bugün kullanılabilen birçok kısa görüşlü veritabanı MCP sunucusundan farklı bir yaklaşım benimser. Önemli bir örnek, kasıtlı olarak NL2SQL'i desteklemediğimizdir.

Why? Modeller belirleyici değildir ve karmaşık sorgular küçük hatalar üretme olasılığı en yüksektir. Bu karmaşık sorgular genellikle kullanıcıların yapay zekanın oluşturabileceğini umduğu sorgulardır ancak aynı zamanda belirsiz bir şekilde üretildiğinde en çok inceleme gerektiren sorgulardır.

Uyarı

Belirleyici, aynı girişin her zaman aynı çıkışı ürettiği anlamına gelir. Aramalar arasında rastgelelik veya çeşitleme yoktur ve bu da sonuçları tahmin edilebilir, test edilebilir ve otomatikleştirmenin güvenli olmasını sağlar.

Bunun yerine, SQL MCP Server NL2DAB modeli olarak adlandırılabilir olanları destekler. Bu yaklaşım güvenli Data API builder varlık soyutlama katmanını ve yerleşik DAB Sorgu Oluşturucusu'nu kullanır. Birlikte, tam belirleyici bir şekilde doğru, iyi biçimlendirilmiş Transact-SQL (T-SQL) üretirler. Bu yaklaşım NL2SQL ile ilişkili riski, ek yükü ve sıkıntıyı ortadan kaldırırken aracı tarafından oluşturulan sorgular için güvenlik ve güvenilirliği korur.

DDL desteği

DDL (Veri Tanımı Dili), tablolar ve görünümler gibi nesneleri oluşturmak ve değiştirmek için kullanılan veritabanı dilidir. SQL MCP Server, mevcut tablolarda ve görünümlerde veri oluşturmak, okumak, güncelleştirmek ve silmek için kullanılan veritabanı dili olan DML (Veri İşleme Dili) etrafında oluşturulur. DML ayrıca saklı yordamların yürütülmesini de kapsar. Sonuç olarak, SQL MCP Server şemayla değil verilerle çalışacak şekilde tasarlanmıştır. Bu tasarım, yapay zeka aracılarının görev açısından kritik veya iş açısından hassas sistemlerle etkileşime geçtiği üretim MCP kullanım örnekleriyle uyumludur.

Tavsiye

Yerel geliştirme sırasında şemayı değiştirmek için mühendisler, kapsamlı DDL desteği sağlayan Visual Studio Code'da (VS Code) MSSQL uzantısını kullanabilir.

RBAC desteği

SQL MCP Server, Veri API oluşturucusu genelinde kullanılan aynı kanıtlanmış rol tabanlı erişim denetimi (RBAC) sisteminden yararlanır. Yapılandırmanızdaki her varlık hangi rollerin verileri okuyabileceğini, oluşturabileceğini, güncelleştirebileceğini veya silebileceğini ve bu roller için hangi alanların dahil olduğunu veya hariç tutulacağını tanımlar. Bu kurallar her MCP aracına otomatik olarak uygulanır ve ek yapılandırma gerekmeyen REST, GraphQL ve MCP genelinde güvenliğin tutarlı kalmasını sağlar.

Önemli

Rol tabanlı kısıtlamalar, aracı etkileşiminin her adımında geçerlidir.

Önbelleğe alma desteği

SQL MCP Server, read_records aracından sonuçları otomatik olarak önbelleğe alır. Veri API oluşturucusunda önbelleğe alma genel olarak etkinleştirilir ve bunu varlık başına yapılandırabilirsiniz. Hem düzey 1 hem de düzey 2 önbelleğe alma, veritabanı yükünü azaltmaya, istek damgalamalarını önlemeye ve yatay olarak ölçeklendirilmiş ortamlarda sıcak başlangıç senaryolarını desteklemeye yardımcı olur.

İzleme desteği

SQL MCP Server, kuruluşların etkinliği tek bir cam bölmesinden izlemesine ve doğrulamasına olanak sağlayan günlükleri ve telemetriyi yayar. Bu özellik Azure Log Analytics, Application Insights ve kapsayıcı içindeki yerel dosya günlüklerini içerir.

Telemetri

SQL MCP Server, OpenTelemetry (OTEL) izlem aralıkları ve etkinlikleriyle tam olarak donatılmıştır. Geliştiricilerin dağıtılmış sistemler arasında davranış bağıntısı oluşturabilmesi için her işlem izlenir. Veri API'sini oluşturucunun yerel Açık Telemetri desteği hakkında daha fazla bilgi edinin.

Sağlık kontrolleri

SQL MCP Server REST, GraphQL ve MCP uç noktaları genelinde ayrıntılı sistem durumu ve varlık denetimleri sağlar. Veri API oluşturucu sistem durumu , geliştiricilerin performans beklentilerini tanımlamasına, eşikleri ayarlamasına ve her uç noktanın beklendiği gibi çalıştığını doğrulamasına olanak tanır.

SQL MCP Server nasıl yapılandırılır?

MCP, DAB yapılandırma dosyanızda yapılandırılır. Zaten çalışan bir Veri API'si oluşturucu yapılandırmanız varsa, sürüm 1.7 veya sonraki bir sürüme yükseltmek size otomatik olarak fazladan adım gerektirmeden çalışan bir SQL MCP Sunucusu sağlar.

Konfigürasyon

MCP'yi genel olarak veya varlık düzeyinde etkinleştirebilirsiniz. Bu özellik, MCP araçlarına hangi varlıkların erişebilir olduğunu ve hangilerinin aracılar için erişilemez kaldığını seçmenize olanak tanır. MCP, REST ve GraphQL için kullanılan kuralların aynısını izler, bu nedenle yapılandırmanız izinler, projeksiyonlar ve ilkeler için tek doğru kaynağı olmaya devam eder.

MCP etkinleştirildiğinde SQL MCP Server, yapılandırmanıza göre araç yüzeyini otomatik olarak oluşturur. MCP araçlarını el ile tanımlamazsınız. Yerleşik dml-tools sistem, küçük şemalardan çok büyük veritabanlarına kadar ölçeklendirilen varlıkları yordamsal olarak bulur ve kullanıma sunar.

Get started

Başlarken, motoru kontrol etmek için dab-config.json öğesini oluşturmak anlamına gelir. Bu görevi el ile yapabilir veya Veri API'sinin oluşturucusu (DAB) CLI'sini kullanabilirsiniz. CLI, dosyayı tek bir komutla başlatmanıza izin vererek görevi basitleştirir. Yapılandırma özelliği değerleri, değişmez dizeleri, ortam değişkenlerini veya Azure Key Vault gizli sırları kullanabilir.

dab init --database-type mssql --connection-string "<your-connection-string>" --config dab-config.json --host-mode development

SQL MCP Server'ın kullanıma sunmasını istediğiniz her tabloyu, görünümü veya saklı yordamı yapılandırmaya ekleyerek belirtebilirsiniz. CLI bunları kolayca eklemenize, diğer ad atamanıza, izinlerini yapılandırmanıza ve isterseniz sütunları eşlemenize olanak tanır. En önemlisi, özelliğiyle description dil modellerinin verilerinizi daha iyi anlamasına yardımcı olmak için anlamsal ayrıntılar ekleyebilirsiniz.

dab add {entity-name} \                          # object alias (Employees)
  --source {table-or-view-name} \                # database object (dbo.Employees)
  --source.type {table|view|stored-procedure} \  # object type (table)
  --permissions "{role:actions}" \               # role and allowed actions (anonymous:*)
  --description "{text}"                         # semantic description (Company employee records)

Çalışma zamanı ayarları

SQL MCP Sunucusu, Veri API'sinin oluşturucu yapılandırmasında varsayılan olarak etkindir. Çoğu durumda, herhangi bir ayar eklemeniz gerekmez. Sunucu, API'niz ve veritabanınızla aynı izinleri ve güvenlik kurallarını otomatik olarak izler. MCP'yi yalnızca aracıların yapabileceklerini daraltmak veya kısıtlamak istediğinizde yapılandırın.

"runtime": {
  "mcp": {
    "enabled": true,              // default: true
    "path": "/mcp",               // default: /mcp
    "dml-tools": {
      "describe-entities": true,  // default: true
      "create-record": true,      // default: true
      "read-records": true,       // default: true
      "update-record": true,      // default: true
      "delete-record": true,      // default: true
      "execute-entity": true      // default: true
    }
  }
}

CLI ayrıca betik oluşturma yoluyla her özelliği ayrı ayrı veya program aracılığıyla ayarlamanıza da olanak tanır.

dab configure --runtime.mcp.enabled true
dab configure --runtime.mcp.path "/mcp"
dab configure --runtime.mcp.dml-tools.describe-entities true
dab configure --runtime.mcp.dml-tools.create-record true
dab configure --runtime.mcp.dml-tools.read-records true
dab configure --runtime.mcp.dml-tools.update-record true
dab configure --runtime.mcp.dml-tools.delete-record true
dab configure --runtime.mcp.dml-tools.execute-entity true

Tek tek araçları neden devre dışı bırakasın?

Geliştiriciler, roller veya varlık izinleri izin verdiğinde bile belirli eylemleri kısıtlamak isteyebilir. Bir aracın çalışma zamanı seviyesinde devre dışı bırakılması, bunun ajanlara asla görünmeyeceğini garanti eder. Örneğin, delete_record kapatıldığında, başka bir yerdeki yapılandırmadan bağımsız olarak silme özelliği tamamen gizlenir. Bu senaryo, katı operasyonel sınırlar gerektiğinde sık karşılaşılan ancak yararlı olan bir senaryodur.

Varlık ayarları

Ayrıca her varlıkta MCP'yi etkinleştirmeniz gerekmez. Kısıtlamayı seçmediğiniz sürece varlıklar otomatik olarak katılır. dml-tools Özelliği mevcut olduğundan bir varlığı MCP'nin dışında tutabilirsiniz veya özelliklerini daraltabilirsiniz, ancak normal kullanım için herhangi bir şey ayarlamanız gerekmez. Varsayılanlar her şeyi işler.

"entities": {
  "products": {
    "mcp": {
      "dml-tools": true
    }
  }
}

DML araçları

SQL MCP Server, yapay zeka aracılarının güvenli, tür açısından güvenli veritabanı işlemleri gerçekleştirmesini sağlayan altı Veri İşleme Dili (DML) aracısını kullanıma sunar: describe_entities, create_record, read_records, update_record, , delete_recordve execute_entity. Bu araçlar her zaman yapılandırmanızı, izinlerinizi ve şemanızı yansıtan öngörülebilir bir CRUD yüzeyi oluşturur.

Her araç rol tabanlı erişim denetimine (RBAC), varlık izinlerine ve ilkelere uyar. Aracılar hiçbir zaman veritabanınızla doğrudan etkileşim kurmaz; güvenli Veri API'si oluşturucu soyutlama katmanı üzerinden çalışır.

Her araç, yapılandırma seçenekleri ve en iyi yöntemler hakkında ayrıntılı bilgi için bkz. DML araçları başvurusu.