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 MCP Server iki aktarım türünü destekler: barındırılan ve bulut senaryoları için akışla aktarılabilir HTTP ve yerel geliştirme ile doğrudan aracı tümleştirmesi için stdio. Bu makale stdio taşımayı kapsar.
Modda stdio , Veri API oluşturucusu (DAB) bir MCP istemcisiyle tamamen standart giriş/çıkış (stdin/stdout) üzerinden iletişim kurar. HIÇBIR HTTP sunucusu veya ağ bağlantı noktası başlatılmaz. MCP istemcisi, DAB'yi bir alt işlem olarak başlatır ve Model Bağlam Protokolü(MCP) kullanarak iletileri ileri geri gönderir.
Ne zaman stdio aktarımı kullanılır?
| Scenario | Önerilen taşıma |
|---|---|
| Geliştirici iş istasyonunda yerel geliştirme | stdio |
| GitHub Copilot (aracı modu) ile VS Code | stdio |
| CI/CD işlem hatları veya betikli aracı otomasyonu | stdio |
| Bulut barındırma (Container Apps, App Service) | HTTP |
| Uzak MCP uç noktası ile AI Foundry aracısı | HTTP |
| Aynı uç noktayı paylaşan aracı ekipleri | HTTP |
Açık bağlantı noktası olmadan mümkün olan en basit yerel kurulumu ne zaman istediğinizi seçin stdio . MCP sunucusunun ağ üzerinden erişilebilir olması gerektiğinde HTTP'yi seçin.
Önkoşullar
- Data API builder CLI yüklü (sürüm 1.7 veya üzeri)
- Mevcut bir MCP etkin
dab-config.json(bkz. Gerekli yapılandırma) - MCP uyumlu bir istemci (GitHub Copilot, Claude Desktop veya özel bir aracı ile VS Code)
Gerekli yapılandırma
stdio Taşımayı kullanmadan önce dab-config.json içinde MCP'yi etkinleştirin.
"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
}
}
}
HTTP aktarımları için kullanılan path alanı yalnızca bu amaçla kullanılır ve stdio modunda yoksayılır. Blok, dml-tools MCP araçları olarak hangi veri işleme işlemlerinin kullanılabilir olduğunu denetler.
Önemli
Eğer "mcp": { "enabled": false } veya mcp bloğu eksikse, DAB stdio modunda başlatılamaz.
stdio modunda başlat
--mcp-stdio bayrağını dab start üzerinde kullanın.
dab start --mcp-stdio --config ./dab-config.json
Belirli bir izin rolü altında çalıştırmak için:
dab start --mcp-stdio role:authenticated --config ./dab-config.json
role:<name> bağımsız değişkeni konumsaldır ve --mcp-stdio hemen ardından gelmelidir. Eksik bırakılırsa, rol varsayılan olarak anonymous olur. Rol adı, yapılandırmanızdaki en az bir varlığın permissions bölümünde tanımlanan bir rolle eşleşmelidir.
stdio mod nasıl çalışır?
Algılandığında --mcp-stdio , DAB dahili olarak aşağıdaki değişiklikleri yapar:
UTF-8 kodlaması (bayt sırası işareti yok)
Konsol girişi ve çıkışı bayt sırası işareti (BOM) olmadan UTF-8'e zorlanır. Birçok MCP istemcisi BOM ön ekli akışları reddettiği için bu UTF-8 ayarı temiz JSON-over-stdio iletişim için gereklidir.
Simülatör kimlik doğrulaması
Yapılandırma dosyanızın ne belirttiğinden bağımsız olarak, kimlik doğrulama sağlayıcısı Simülatör moduna geçirilir. Bu Simülatör modu, belirtilen rolün gerçek bir JSON Web Belirteci (JWT) veya kimlik sağlayıcısı olmadan doğrudan uygulanmasını sağlar. Simülatör sağlayıcısı geliştirme senaryoları için tasarlanmıştır ve üretim HTTP uç noktalarının güvenliğini sağlamak için kullanılmamalıdır; ancak yerel stdio oturumlar için tam olarak uygundur.
Aşağıdaki değerler bellek içinde uygulanır ve oturum sırasında yapılandırmanızı geçersiz kılar:
| Anahtar | Değer |
|---|---|
MCP:StdioMode |
"true" |
MCP:Role |
"<role-name>" veya "anonymous" |
Runtime:Host:Authentication:Provider |
"Simulator" |
HTTP dinleyicisi yok
ASP.NET Core ana bilgisayarı başlatılır ve tüm hizmetler kaydedilir, ancak DAB stdio.RunAsync() yerine host.Run() çağırır. İletim Denetimi Protokolü (TCP) bağlantı noktası bağlı değil. Tüm MCP protokol iletileri üzerinden stdin/stdoutakar.
Kullanılabilir MCP araçları
Yapılandırmanız ve varlık izinleriniz doğrultusunda stdio modunda aşağıdaki araçlar kullanılabilirdml-tools.
| Aracı | Açıklama |
|---|---|
describe_entities |
Kullanılabilir varlıkları ve bunların alanlarını ve izinlerini listeler |
create_record |
Yeni kayıt ekler (yalnızca tablolar) |
read_records |
Varlık türünden kayıt okur |
update_record |
Mevcut bir kaydı güncelleştirir |
delete_record |
Var olan bir kaydı (tablolar ve görünümler) siler |
execute_entity |
Saklı yordam nesnesini yürütür |
aggregate_records |
Tablolarda ve görünümlerde toplama sorguları gerçekleştirir |
Saklı yordamlar tarafından desteklenen özel MCP araçları, kullandığınızda --mcp-stdio kaydedilir.
stdio için bir MCP istemcisi yapılandırın
MCP istemcileri, stdio aktarımını destekleyen, DAB'yi bir alt süreç olarak çalıştırır ve stdin/stdout aktarımını yapar. İstemci yapılandırması söz dizimi istemciye göre değişir.
VS Code (mcp.json)
{
"servers": {
"sql-mcp-server": {
"type": "stdio",
"command": "dab",
"args": [
"start",
"--mcp-stdio", "role:anonymous",
"--config", "{path}/dab-config.json",
"--LogLevel", "error"
]
}
}
}
Bu dosyayı proje klasörünüzün içinde olarak .vscode/mcp.json kaydedin. VS Code yapılandırmayı otomatik olarak algılar ve sunucuyu MCP: Sunucuları Listele'de gösterir. İstemci işlem yaşam döngüsünü yönettiğinden, terminalde ayrı olarak çalıştırmanız dab start.
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"sql-mcp-server": {
"type": "stdio",
"command": "dab",
"args": [
"start",
"--mcp-stdio", "role:anonymous",
"--config", "{path}/dab-config.json",
"--LogLevel", "error"
]
}
}
}
Diğer dab start seçeneklerle birleştir
--mcp-stdio diğer dab start tüm seçeneklerle uyumludur:
| Seçenek | Davranış --mcp-stdio ile |
|---|---|
--config |
Belirtilen yapılandırma dosyasını kullanır (HTTP moduyla aynı) |
--LogLevel |
Belirtilen günlük seviyesini uygular (error: stdio için özellikle önerilir) |
dab start \
--mcp-stdio role:api-reader \
--config ./dab-config.json \
--LogLevel Error
Sorun giderme stdio modu
Failed to start the engine in MCP stdio mode
DAB başlayamadı. Şunları denetleyin:
- Yapılandırma dosyanız geçerli: çalıştır
dab validate --config <path> - Veritabanı bağlantı dizesi hatasız ve ulaşılabilir durumda.
- MCP yapılandırmanızda etkin:
"mcp": { "enabled": true }
MCP araç çağrılarında izin reddedildi
tarafından role:<name> belirtilen rol, varlık ve işlem için gerekli izinlere sahip değil.
permissions Yapılandırmanızdaki ilgili varlığın bölümünü denetleyin.
MCP araçları listelenmiyor
Genel olarak dml-tools, false olarak ayarlanmış ya da varlığın "dml-tools": false ayarlarında mcp vardır. Ayrıca mcp.enabledtrue olduğunu doğrulayın.
Bozuk çıkış veya JSON ayrıştırma hataları
MCP sunucusu başlatılmadan önce başlangıç kodunuzda stdout'a JSON olmayan bir metin yazmadığından emin olun. Günlük çıkışı, stdout yerine stderr veya bir günlük dosyasına yönlendirilmelidir.
--LogLevel öğesini gerekiyorsa ayrıntılı başlangıç iletilerini engellemek için kullanın.