SQL MCP Server nedir?

Önemli

SQL Model Bağlam Protokolü (MCP) Sunucusu, Veri API oluşturucusu sürüm 1.7 ve sonraki sürümlerde kullanılabilir.

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. SQL MCP Server, veritabanını göstermeden veya kırılgan doğal dil ayrıştırmalarına güvenmeden bu hedefe ulaşır. Sunucu, REST, GraphQL ve MCP'de aynı şekilde çalışan üretime hazır bir yüzey sunmak için Veri API oluşturucusunun varlık soyutlaması, RBAC, önbelleğe alma ve telemetri verilerini temel alır. Bunu bir kez yapılandırdığınızda altyapı gerisini halleder.

SQL MCP Server'ın Veri API'sini oluşturucu soyutlama katmanı aracılığıyla yapay zeka aracılarını SQL veritabanlarına nasıl bağlayacağını gösteren diyagram.

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 open source 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 open source ve kullanımı ücretsizdir.

MCP protokolü ayrıntıları

SQL MCP Server, mcp protokolü sürüm 2025-06-18'i sabit bir varsayılan olarak uygular. İki taşımayı destekler: standart barındırma senaryoları için akışla aktarılabilir HTTP ve yerel veya CLI senaryoları için stdio. Sunucu başlatıldığında, araç ve kayıt özellikleri tanıtılır, ad ve DAB sürümü gibi sunucu meta verileri döndürülür ve instructions alanıruntime.mcp.description da dahil edilir, böylece istemciler sunucunun amacını anlayabilir.

MCP Denetçisi

HTTP tabanlı MCP uç noktaları için, örneğin DAB konumunda http://localhost:5000/mcpçalışırken, uç nokta URL'sini doğrudan geçirerek MCP Denetçisi'ni ara sunucu modunda başlatın:

İlk olarak Data API builder'ı başlatın:

dab start

Ardından, başka bir terminalde MCP Denetçisi'ni uç nokta URL'si ile başlatın:

npx -y @modelcontextprotocol/inspector http://localhost:5000/mcp

Bu, istekleri Denetçi ara sunucusu aracılığıyla yönlendirir ve doğrudan modda gerçekleşebilecek tarayıcı CORS ve oturum üst bilgisi sorunlarını Mcp-Session-Id önlemeye yardımcı olur.

Stdio taşıma

Stdio aktarımı, yerel geliştirme ve CLI iş akışları için kullanışlıdır. role:<role-name> ile bir rol belirtebilir ve atlanırsa varsayılan olarak anonymous kullanılacak şekilde ayarlayabilirsiniz. Bu modda, kimlik doğrulaması simülatör sağlayıcısını kullanır ve gelen istekler 1 MB ile sınırlıdır.

dab start --mcp-stdio
dab start --mcp-stdio role:<role-name>

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, SQL MCP Server'ın kasıtlı olarak NL2SQL'i desteklememesidir.

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, Visual Studio Code'da kapsamlı DDL desteği sağlayan Microsoft SQL Server (MSSQL) uzantısını kullanabilirsiniz.

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'ı yapılandırma

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, çevresel değişkenleri veya Azure Key Vault gizli anahtarlarını 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ğiyledescription 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
      "aggregate-records": true   // default: true
    }
  }
}

dml-tools ayarını true veya false olarak belirleyerek tüm araçları etkinleştirin veya devre dışı bırakın, ya da her araç için geçişler sunan bir nesne kullanın. Araç ayrıca aggregate-records ve enabled (1–600 saniye, varsayılan 30) özelliklere sahip query-timeout bir nesneyi kabul edebilir. Tam yapılandırma referansı için bkz. MCP çalışma zamanı yapılandırması.

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
dab configure --runtime.mcp.dml-tools.aggregate-records.enabled 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. mcp Ö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.

Varlık düzeyi MCP yapılandırması için nesne biçimini kullanın:

"entities": {
  "Products": {
    "mcp": {
      "dml-tools": true
    }
  },
  "SensitiveData": {
    "mcp": {
      "dml-tools": false
    }
  }
}

Saklı yordam varlıkları için, yordamı adlandırılmış bir MCP aracı olarak kaydetmek amacıyla custom-tool işlevini de etkinleştirebilirsiniz.

"entities": {
  "GetBookById": {
    "source": {
      "type": "stored-procedure",
      "object": "dbo.get_book_by_id"
    },
    "mcp": {
      "custom-tool": true
    }
  }
}

custom-tool ve true olduğunda, SQL MCP Server, saklı yordamı tools/list ve tools/call aracılığıyla adlandırılmış bir araç olarak kaydeder, böylece ajanların onu doğrudan adıyla bulmasını ve çağırmasını sağlar. custom-tool özelliği yalnızca saklı yordam varlıkları için geçerlidir.

Uyarı

Bu bölümde açıklanan SQL MCP Server 2.0 işlevselliği şu anda önizleme aşamasındadır ve genel kullanılabilirlik öncesinde değişebilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.

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 yedi Veri İşleme Dili (DML) aracısını kullanıma sunar: describe_entities, create_record, read_records, update_record, delete_record, , execute_entityve aggregate_records. 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.

Özel MCP araçları

SQL MCP Server, yerleşik DML araçlarına ek olarak saklı yordamlardan türetilen özel MCP araçlarını da destekler. Bir saklı yordam varlığını ayarladığınızda "custom-tool": true, DAB bunu MCP tools/list ve tools/call aracılığıyla adlandırılmış bir araç olarak kaydeder. Bu yaklaşım, aracıların saklı yordamları doğrudan adlarıyla bulmasına ve çağırmasına olanak tanır ve genel execute_entity DML aracını tamamlar.

MCP için OpenTelemetry izleme

MCP aracının çalıştırılması, OpenTelemetry (OTEL) spanlarıyla tam olarak izlenmiştir. Her MCP araç çağrısı REST ve GraphQL işlemlerinin yanı sıra izleme verileri oluşturur ve tüm API yüzeylerinde birleştirilmiş gözlemlenebilirlik sağlar. OpenTelemetry izleme hakkında daha fazla bilgi edinin.

Uyarı

Bu bölümde açıklanan SQL MCP Server 2.0 işlevselliği şu anda önizleme aşamasındadır ve genel kullanılabilirlik öncesinde değişebilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.