Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Server Protokol Konteks Model SQL (MCP) tersedia di pembuat API Data versi 1.7 dan yang lebih baru.
SQL MCP Server mendukung dua transportasi: HTTP yang dapat dialirkan untuk skenario yang dihosting dan cloud, dan stdio untuk pengembangan lokal dan integrasi agen langsung. Artikel ini membahas stdio transportasi.
Dalam stdio mode, Penyusun API Data (DAB) berkomunikasi dengan klien MCP sepenuhnya melalui input/output standar (stdin/stdout). Tidak ada server HTTP atau port jaringan yang berjalan. Klien MCP meluncurkan DAB sebagai proses turunan dan menyalurkan pesan bolak-balik dengan menggunakan Protokol Konteks Model (MCP).
Kapan menggunakan stdio transportasi
| Skenario | Transportasi yang direkomendasikan |
|---|---|
| Pengembangan lokal di stasiun kerja pengembang | stdio |
| Visual Studio Code dengan GitHub Copilot (mode Asisten) | stdio |
| Alur CI/CD atau otomatisasi agen berskrip | stdio |
| Cloud Hosting (Container Apps, App Service) | HTTP |
| Agen AI Foundry dengan titik akhir MCP jarak jauh | HTTP |
| Tim agen yang berbagi titik akhir yang sama | HTTP |
Pilih stdio kapan Anda menginginkan penyiapan lokal paling sederhana tanpa port terbuka. Pilih HTTP ketika server MCP perlu dijangkau di seluruh jaringan.
Prasyarat
- CLI penyusun API Data terinstal (versi 1.7 atau yang lebih baru)
- Yang sudah ada
dab-config.jsondengan MCP diaktifkan (lihat Konfigurasi yang diperlukan) - Klien yang kompatibel dengan MCP (Visual Studio Code dengan GitHub Copilot, Claude Desktop, atau agen kustom)
Konfigurasi yang diperlukan
Sebelum menggunakan stdio transport, aktifkan MCP di dab-config.json:
"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
}
}
}
Bidang path ini hanya digunakan untuk transportasi HTTP dan diabaikan dalam stdio mode. Blok dml-tools kontrol operasi manipulasi data mana yang tersedia sebagai alat MCP.
Penting
Jika "mcp": { "enabled": false } atau mcp blok hilang, DAB gagal memulai dalam stdio mode.
Mulai dalam stdio mode
Gunakan --mcp-stdio tanda pada dab start
dab start --mcp-stdio --config ./dab-config.json
Untuk menjalankan di bawah peran izin tertentu:
dab start --mcp-stdio role:authenticated --config ./dab-config.json
Argumen role:<name> bersifat posisi dan harus segera mengikuti --mcp-stdio. Jika dihilangkan, fungsi menjadi anonymous. Nama peran harus sesuai dengan peran yang telah ditetapkan di bagian permissions dari setidaknya satu entitas dalam konfigurasi Anda.
Cara kerja stdio mode
Ketika --mcp-stdio terdeteksi, DAB membuat perubahan berikut secara internal:
Pengodean UTF-8 (tanpa tanda urutan byte)
Input dan output konsol dikonfigurasi menjadi UTF-8 tanpa penanda urutan byte (BOM). Pengaturan UTF-8 ini diperlukan untuk komunikasi yang bersih JSON-over-stdio karena banyak klien MCP menolak aliran awalan BOM.
Autentikasi simulator
Penyedia autentikasi diubah menjadi mode Simulator, terlepas dari apa pun yang ditentukan file konfigurasi Anda. Mode Simulator ini memungkinkan peran yang ditentukan diterapkan secara langsung tanpa JSON Web Token (JWT) nyata atau penyedia identitas. Penyedia layanan simulasi dirancang untuk skenario pengembangan dan tidak direkomendasikan untuk mengamankan endpoint HTTP produksi, namun sangat sesuai untuk sesi lokal stdio .
Nilai berikut diterapkan dalam memori dan mengambil alih konfigurasi Anda selama sesi:
| Kunci | Nilai |
|---|---|
MCP:StdioMode |
"true" |
MCP:Role |
"<role-name>" atau "anonymous" |
Runtime:Host:Authentication:Provider |
"Simulator" |
Tidak ada pendengar HTTP
Host ASP.NET Core dimulai dan semua layanan terdaftar, tetapi DAB memanggil stdio.RunAsync() alih-alih host.Run(). Tidak ada port Protokol Kontrol Transmisi (TCP) yang terikat. Semua pesan protokol MCP mengalir melalui stdin/stdout.
Alat MCP yang tersedia
Alat berikut tersedia dalam mode stdio, dengan ketentuan konfigurasi Anda dan izin entitas dml-tools.
| Alat | Deskripsi |
|---|---|
describe_entities |
Mencantumkan entitas yang tersedia beserta bidang dan izinnya |
create_record |
Menyisipkan rekaman baru (hanya tabel) |
read_records |
Membaca catatan dari entitas |
update_record |
Memperbarui rekaman yang sudah ada |
delete_record |
Menghapus rekaman yang sudah ada (tabel dan tampilan) |
execute_entity |
Menjalankan entitas prosedur tersimpan |
aggregate_records |
Melakukan kueri agregasi pada tabel dan tampilan |
Alat MCP kustom yang didukung oleh prosedur tersimpan juga terdaftar saat Anda menggunakan --mcp-stdio.
Mengonfigurasi klien MCP untuk stdio
Klien MCP yang mendukung stdio meluncurkan transport sebagai subproses dan menyalurkan stdin/stdout. Sintaks konfigurasi klien bervariasi menurut klien.
Visual Studio Code (mcp.json)
{
"servers": {
"sql-mcp-server": {
"type": "stdio",
"command": "dab",
"args": [
"start",
"--mcp-stdio", "role:anonymous",
"--config", "{path}/dab-config.json",
"--LogLevel", "error"
]
}
}
}
Simpan file ini seperti .vscode/mcp.json di dalam folder proyek Anda. VS Code mendeteksi konfigurasi secara otomatis dan menunjukkan server di MCP: Daftar Server. Karena klien mengelola siklus hidup proses, Anda tidak perlu berjalan dab start secara terpisah di terminal.
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"
]
}
}
}
Gabungkan dengan opsi lain dab start
--mcp-stdio kompatibel dengan semua opsi lainnya dab start :
| Option | Perilaku dengan --mcp-stdio |
|---|---|
--config |
Menggunakan file konfigurasi yang ditentukan (sama dengan mode HTTP) |
--LogLevel |
Menerapkan tingkat log yang ditentukan (error: disarankan untuk stdio) |
dab start \
--mcp-stdio role:api-reader \
--config ./dab-config.json \
--LogLevel Error
Mode pemecahan masalah stdio
Failed to start the engine in MCP stdio mode
DAB tidak dapat memulai. Periksa apakah:
- File konfigurasi Anda valid: silakan jalankan perintah
dab validate --config <path> - String koneksi database Anda benar dan dapat dijangkau
- MCP diaktifkan dalam konfigurasi Anda:
"mcp": { "enabled": true }
Izin ditolak pada panggilan alat MCP
Peran yang ditentukan oleh role:<name> tidak memiliki izin yang diperlukan untuk entitas dan operasi. Periksa bagian permissions entitas yang relevan di konfigurasi Anda.
Alat MCP tidak tercantum
Entah dml-tools disetel ke false secara global, atau entitas memiliki pengaturan "dml-tools": falsemcp. Verifikasi juga bahwa mcp.enabled adalah true.
Kesalahan penguraian output yang acak atau JSON
Pastikan tidak ada dalam kode startup Anda yang menulis teks non-JSON ke stdout sebelum server MCP dimulai. Output log harus masuk ke stderr atau file log, bukan stdout. Gunakan --LogLevel untuk menekan pesan startup yang berlebihan jika diperlukan.