Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
SQL Model Bağlam Protokolü (MCP) Sunucusu, Veri API oluşturucusu sürüm 1.7 ve sonraki sürümlerde kullanılabilir. En son özellikler ve hata düzeltmeleri için en son 2.0 sürümünü kullanın.
SQL Model Bağlam Protokolü (MCP) Sunucusu, yedi Veri İşleme Dili (DML) aracını yapay zeka aracılarına sunar. Bu araçlar, kayıt oluşturma, okuma, güncelleştirme ve silme, verileri toplama ve saklı yordamları yürütme gibi veritabanı işlemleri için türlenmiş bir CRUD yüzeyi sağlar. Tüm araçlar rol tabanlı erişim denetimine (RBAC), varlık izinlerine ve yapılandırmanızda tanımlanan ilkelere uyar.
Uyarı
Aracıların varlıkları etkili bir şekilde sorgulaması için varlıklarınızdaki alan meta verilerini yapılandırın. Alan adları ve açıklamalar olmadan aracılar yalnızca varlık adlarını görür ve sütun adlarını yanlış tahmin edebilir. Ayrıntılar için bkz. Varlıklara açıklama ekleme .
DML araçları nedir?
DML (Veri İşleme Dili) araçları veri işlemlerini işler: kayıtları oluşturma, okuma, güncelleştirme ve silme, verileri toplama ve saklı yordamları yürütme. Şemayı değiştiren DDL'nin (Veri Tanım Dili) aksine, DML yalnızca mevcut tablo ve görünümlerdeki veri düzleminde çalışır.
Yedi DML aracı şunlardır:
-
describe_entities- Kullanılabilir varlıkları ve işlemleri bulur -
create_record- Yeni satır ekler -
read_records- Sorgu tabloları ve görünümleri -
update_record- Varolan satırları değiştirir -
delete_record- Satırları kaldırır -
execute_entity- Saklı yordamları çalıştırır -
aggregate_records- Toplama sorguları gerçekleştirir
Uyarı
Bu bölümde açıklanan SQL MCP Server işlevselliği, Veri API oluşturucusu 2.0 ve sonraki sürümlerde kullanılabilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.
Sürüme göre araçların kullanılabilirliği
Tüm araçlar her sürümde kullanılamaz. Belgelenmiş davranışa güvenmeden önce yüklü sürümünüzde kullanılabilen araçları doğrulayın.
| Aracı | 1.7.x | 2.0+ | Varsayılan olarak etkin |
|---|---|---|---|
describe_entities |
Evet | Evet | Evet |
create_record |
Evet | Evet | Evet |
read_records |
Evet | Evet | Evet |
update_record |
Evet | Evet | Evet |
delete_record |
Evet | Evet | Evet |
execute_entity |
Evet | Evet | Evet |
aggregate_records |
Hayır | Evet | Evet |
Uyarı
1.7.x sürümünü kullanıyorsanız aggregate_records mevcut değildir. Sayı veya toplama sorgularını deneyen aracıların bunun yerine tüm eşleşen satırları okuması gerekir. Yerel toplama desteği için sürüm 2.0 veya sonraki bir sürüme yükseltin.
DML araçları genel olarak ve bir varlık için etkinleştirildiğinde, SQL MCP Server bunları MCP protokolü aracılığıyla kullanıma sunar. Aracılar hiçbir zaman veritabanı şemanızla doğrudan etkileşim kurmaz; Veri API'sinin oluşturucu soyutlama katmanı üzerinden çalışır.
Araçlar
list_tools yanıtı
Bir aracı çağırdığında list_tools, SQL MCP Server şunu döndürür:
{
"tools": [
{ "name": "describe_entities" },
{ "name": "create_record" },
{ "name": "read_records" },
{ "name": "update_record" },
{ "name": "delete_record" },
{ "name": "execute_entity" },
{ "name": "aggregate_records" }
]
}
varlıkları tanımla
Geçerli role uygun varlıkları geri döndürür. Her girdi alan adlarını, açıklamaları ve izin verilen işlemleri içerir. Bu araç veritabanını sorgulamaz. Bunun yerine, yapılandırma dosyanızdan oluşturulan bellek içi yapılandırmadan okur.
Alan meta verileri, yapılandırmanızdaki verilerden fields gelir. Eklemezseniz, aracılar yalnızca boş fields bir diziye sahip varlık adlarını görür. Kurulum kılavuzu için bkz. Varlıklara açıklama ekleme .
Uyarı
Yanıt, yapılandırmanızdaki alanı name ve description değerleri içerir. Veri türleri ve birincil anahtar göstergeleri geçerli yanıta dahil değildir. Saklı yordam parametreleri de listelenmez. Aracılar, doğru kullanımı belirlemek için varlık ve alan açıklamalarının yanı sıra hata geri bildirimlerine de güvenir.
Parametreler
| Parametre | Türü | Zorunlu | Açıklama |
|---|---|---|---|
nameOnly |
Boolean | Hayır | olduğunda true, alan meta verileri olmadan varlık adlarının ve açıklamalarının basit bir listesini döndürür. |
entities |
stringler dizisi | Hayır | Yanıtı belirtilen varlıklarla sınırlar. Hariç tutulduğunda, tüm MCP özellikli varlıklar döndürülür. |
Örnek istek
{
"method": "tools/call",
"params": {
"name": "describe_entities",
"arguments": {
"entities": ["Products"]
}
}
}
Örnek yanıt
{
"entities": [
{
"name": "Products",
"description": "Product catalog with pricing and inventory",
"fields": [
{
"name": "ProductId",
"description": "Unique product identifier"
},
{
"name": "ProductName",
"description": "Display name of the product"
},
{
"name": "Price",
"description": "Retail price in USD"
}
],
"operations": [
"read_records",
"update_record"
]
}
]
}
Uyarı
CRUD ve yürütme DML araçlarından herhangi biri tarafından kullanılan varlık seçenekleri doğrudan describe_entities öğesinden gelir. Her araca bağlı iç anlamsal açıklama, bu iki adımlı akışı sağlar.
kayıt oluştur
Tabloda yeni bir satır oluşturur. Geçerli rol için birimde oluşturma izni gerektirir. Araç girişi varlık şemasına göre doğrular, alan düzeyi izinleri zorlar, oluşturma ilkeleri uygular ve oluşturulan kaydı oluşturulan tüm değerlerle döndürür.
Parametreler
| Parametre | Türü | Zorunlu | Açıklama |
|---|---|---|---|
entity |
String | Evet | Kayıt oluşturulacak varlık adı. |
data |
nesne | Evet | Yeni kayıt için alan adları ve değerlerine ait anahtar-değer çiftleri. |
kayıtları_oku
Bir tablo veya görünümü sorgular. Filtreleme, sıralama, sayfalandırma ve alan seçimini destekler. Araç yapılandırılmış parametrelerden deterministik SQL oluşturur, okuma izinleri ve alan projeksiyonları uygular ve satır düzeyi güvenlik ilkelerini uygular.
Parametreler
| Parametre | Türü | Zorunlu | Açıklama |
|---|---|---|---|
entity |
String | Evet | Okunacak varlık adı. |
select |
String | Hayır | Döndürülecek alan adlarının virgülle ayrılmış listesi (örneğin, "id,title,price"). |
filter |
String | Hayır | OData stili filtre ifadesi (örneğin, "Price gt 10 and Category eq 'Books'"). |
orderby |
stringler dizisi | Hayır | İfadeleri sırala Her öğe isteğe bağlı yönü olan bir alan adıdır (örneğin, ["Price desc", "Name asc"]). |
first |
tamsayı | Hayır | Döndürülecek en fazla kayıt sayısı. |
after |
String | Hayır | Sayfalandırma için önceki bir yanıttan devam imleci. |
Uyarı
orderby parametresi tek bir dize şeklinde olmamalı, bir dizeler dizisi olmalıdır. Dize değerinin geçirilmesi bir UnexpectedError öğesine neden olur.
["Name asc"]yerine "Name asc" kullanın.
Sayfalandırma yanıtı
Daha fazla sonuç olduğunda, yanıt bir after imleç içerir. Sonraki sayfayı getirmek için bu değeri bir sonraki istekte parametre olarak after geçirin.
{
"value": [ ... ],
"after": "W3siRW50aXR5TmFtZ..."
}
Alan after daha fazla sayfanın varlığını gösterir. Yanıt after olmadığında son sayfayı içerir.
Önemli
read_records sonuçları, Veri API'si oluşturucusundan gelen önbelleğe alma sistemi kullanılarak otomatik olarak önbelleğe alınır. Veritabanı yükünü azaltmak için önbellek yaşam süresini (TTL) genel olarak veya varlık başına yapılandırabilirsiniz.
JOIN işlemleri
Araç read_records , tek bir tablo veya görünüm için tasarlanmıştır. Sonuç olarak, JOIN işlemleri bu araçta desteklenmez. Bu tasarım sorumluluğu yalıtmanıza, performansı iyileştirmenize ve oturumunuzun bağlam penceresi üzerindeki etkiyi sınırlamanıza yardımcı olur.
Bununla birlikte, JOIN işlemleri bir uç durum değildir ve Veri API oluşturucusu (DAB), GraphQL uç noktası üzerinden karmaşık sorgulamayı zaten destekler. Daha karmaşık sorgular için tablo yerine görünüm kullanmanızı öneririz. Aracı, parametreli sorguları kapsülleyen saklı yordamları çalıştırmak için de kullanabilirsiniz execute_entity.
kayıt_güncelle
Var olan bir satırı değiştirir. Güncellenecek birincil anahtar ve alanlar gereklidir. Araç birincil anahtarın mevcut olduğunu doğrular, güncelleştirme izinlerini ve ilkelerini zorlar ve yalnızca geçerli rolün değiştirebileceği alanları güncelleştirir.
Parametreler
| Parametre | Türü | Zorunlu | Açıklama |
|---|---|---|---|
entity |
String | Evet | Güncellenecek varlık adı. |
keys |
nesne | Evet | Kaydı tanımlayan anahtar-değer çiftleri (örneğin, {"id": 42}). |
fields |
nesne | Evet | Alan adlarının ve yeni değerlerin anahtar-değer çiftleri. |
kayıt_sil
Varolan bir satırı kaldırır. Ana anahtarı gerektirir. Araç birincil anahtarın mevcut olduğunu doğrular, silme izinlerini ve ilkelerini zorlar ve işlem desteğiyle güvenli silme gerçekleştirir.
Parametreler
| Parametre | Türü | Zorunlu | Açıklama |
|---|---|---|---|
entity |
String | Evet | Silinecek varlık adı. |
keys |
nesne | Evet | Kaydı tanımlayan anahtar-değer çiftleri (örneğin, {"id": 42}). |
Uyarı
Bazı üretim senaryoları, modelleri kapsamlı bir şekilde kısıtlamak için bu aracı genel olarak devre dışı bırakır. Bu seçim size kalmıştır ve varlık düzeyi izinlerinin erişimi denetlemenin en önemli yolu olmaya devam ettiğini unutmayın.
delete-record Etkin olsa bile, bir rolün varlık üzerinde silme izni yoksa bu rol bu varlık için bu aracı kullanamaz.
execute_entity
Bir saklı yordam çalıştırır. Giriş parametrelerini ve çıkış sonuçlarını destekler. Araç giriş parametrelerini yordam imzasına karşı doğrular, yürütme izinlerini zorlar ve parametreleri güvenli bir şekilde geçirir.
Parametreler
| Parametre | Türü | Zorunlu | Açıklama |
|---|---|---|---|
entity |
String | Evet | Saklı yordam varlık adı. |
parameters |
nesne | Hayır | Giriş parametresi adlarının ve değerlerinin anahtar-değer çiftleri. |
kayıtları birleştir
Tablolarda ve görünümlerde toplama sorguları gerçekleştirir. Count, sum, average, minimum ve maximum gibi yaygın toplama işlevlerini destekler. Araç yapılandırılmış parametrelerden deterministik SQL oluşturur, okuma izinleri ve alan projeksiyonları uygular ve satır düzeyi güvenlik ilkelerini uygular.
Parametreler
| Parametre | Türü | Zorunlu | Açıklama |
|---|---|---|---|
entity |
String | Evet | Toplanacak öğe adı. |
function |
String | Evet | Toplama işlevi: count, sum, avg, minveya max. |
field |
String | Evet | Toplanacak alan.
"*" için count kullanın. |
filter |
String | Hayır | Toplamadan önce uygulanan OData stili filtre. |
distinct |
Boolean | Hayır | olduğunda true, toplamadan önce yinelenen değerleri kaldırır. |
groupby |
stringler dizisi | Hayır | Sonuçları gruplandırmak için alan adları (örneğin, ["Category", "Status"]). |
having |
nesne | Hayır | Grupları toplama değerine göre filtreler. İşleçleri kullanır: eq, neq, gt, gte, lt, lte, in. |
orderby |
stringler dizisi | Hayır | Gruplandırılmış sonuçlar için ifadeleri sıralama (örneğin, ["count desc"]). |
first |
tamsayı | Hayır | Döndürülecek en fazla gruplandırılmış sonuç sayısı. |
after |
String | Hayır | Gruplandırılmış sonuçları sayfalandırmak için devam imleci. |
Örnek: COUNT ile GROUP BY ve HAVING
{
"method": "tools/call",
"params": {
"name": "aggregate_records",
"arguments": {
"entity": "Todo",
"function": "count",
"field": "*",
"groupby": ["UserId"],
"having": { "gt": 2 }
}
}
}
Araç aggregate-records boole olarak veya daha fazla ayara sahip bir nesne olarak yapılandırılabilir:
{
"runtime": {
"mcp": {
"dml-tools": {
"aggregate-records": {
"enabled": true,
"query-timeout": 30
}
}
}
}
}
query-timeout özelliği en fazla yürütme süresini saniye cinsinden belirtir (aralık: 1-600). Bu ayar, uzun süre çalışan toplama sorgularının aşırı kaynak tüketmesini önlemeye yardımcı olur.
Çalışma zamanı yapılandırması
DML araçlarını, çalışma dab-config.jsonzamanı bölümünde genel olarak yapılandırın:
{
"runtime": {
"mcp": {
"enabled": true,
"path": "/mcp",
"dml-tools": {
"describe-entities": true,
"create-record": true,
"read-records": true,
"update-record": true,
"delete-record": true,
"execute-entity": true,
"aggregate-records": true
}
}
}
}
altındaki runtime.mcp.dml-tools her araç özelliği veya truekabul ederfalse. Araç, aggregate-recordsenabledquery-timeout ile bir nesne biçimini de destekler.
{
"runtime": {
"mcp": {
"enabled": true,
"dml-tools": {
"describe-entities": true,
"create-record": true,
"read-records": true,
"update-record": true,
"delete-record": true,
"execute-entity": true,
"aggregate-records": {
"enabled": true,
"query-timeout": 30
}
}
}
}
}
Tüm DML araçlarını aynı anda etkinleştirmek veya devre dışı bırakmak için "dml-tools" değerini true veya false olarak ayarlayın.
CLI'yi kullanma
Veri API'si oluşturucu CLI'sını kullanarak özellikleri ayrı ayrı ayarlayın:
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
dab configure --runtime.mcp.dml-tools.aggregate-records.enabled true
dab configure --runtime.mcp.dml-tools.aggregate-records.query-timeout 30
Araçları devre dışı bırakma
Bir aracı çalışma zamanı düzeyinde devre dışı bırakırsanız, varlık izinlerinden veya rol yapılandırmasından bağımsız olarak aracılara hiçbir zaman gösterilmez. Bu ayar, katı operasyonel sınırlara ihtiyacınız olduğunda kullanışlıdır.
Yaygın senaryolar
- Üretimde veri kaybını önlemek için devre dışı bırakma
delete-record - "
create-record'yi salt okunur raporlama uç noktaları için devre dışı bırak" -
execute-entitysaklı yordamlar kullanılmadığında devre dışı bırakın - Toplama sorguları gerekli olmadığında devre dışı bırakma
aggregate-records
Bir araç genel olarak devre dışı bırakıldığında, araç yanıttan gizlenir list_tools ve çağrılamıyor.
Varlık ayarları
Siz açıkça kısıtlamadığınız sürece varlıklar MCP'ye otomatik olarak katılır. Bir mcp varlık üzerindeki özellik, MCP katılımını denetler. Açık denetim için nesne biçimini kullanın.
Nesne biçimi
{
"entities": {
"Products": {
"mcp": {
"dml-tools": true
}
},
"SensitiveData": {
"mcp": {
"dml-tools": false
}
}
}
}
Bir varlıkta belirtmezseniz mcp , MCP genel olarak etkinleştirildiğinde DML araçları varsayılan olarak etkin olur.
Saklı yordamlar için özel araçlar
Depolanmış yordam varlıkları için, yordamı custom-tool özelliğini kullanarak adlandırılmış bir MCP aracı olarak da kaydedebilirsiniz. Kurulum yönergeleri için bkz. Özel MCP araçlarını yapılandırma .
Araç başına denetimin kapsamı
Araç başına geçişler yalnızca genel çalışma zamanı düzeyinde runtime.mcp.dml-tools altında yapılandırılır.
Varlık düzeyinde, mcp bir boole kapısıdır veya dml-tools ve custom-tool özelliklerine sahip bir nesnedir.
{
"entities": {
"AuditLogs": {
"mcp": {
"dml-tools": false
}
}
}
}
{
"runtime": {
"mcp": {
"dml-tools": {
"describe-entities": true,
"create-record": true,
"read-records": true,
"update-record": true,
"delete-record": false,
"execute-entity": true,
"aggregate-records": true
}
}
}
}
Bir araç yalnızca genel olarak etkinleştirildiğinde kullanılabilir ve varlık DML araçlarına izin verir.
RBAC entegrasyonu
Her DML aracı işlemi rol tabanlı erişim denetimi kurallarınızı zorunlu kılar. Bir temsilcinin rolü, hangi varlıkların görünür olduğunu, hangi işlemlere izin verileceğini, hangi alanların dahil edileceğini ve satır seviyesinde politikaların uygulanıp uygulanmayacağını belirler.
anonymous rolü yalnızca Products üzerinde okuma izni veriyorsa:
-
describe_entitiesyalnızca işlemlerde gösterilirread_records -
create_record,update_recordvedelete_recordkullanılamıyor - Şemada yalnızca
anonymousiçin izin verilen alanlar görünür.
dab-config.json içindeki rollerinizi yapılandırın.
{
"entities": {
"Products": {
"permissions": [
{
"role": "anonymous",
"actions": [
{
"action": "read",
"fields": {
"include": ["ProductId", "ProductName", "Price"],
"exclude": ["Cost"]
}
}
]
},
{
"role": "admin",
"actions": [
{
"action": "*"
}
]
}
]
}
}
}