Pembaca SQL MCP

Menulis SQL hanya-baca untuk contacts.query dan trade.query: tampilan yang diizinkan, kolom, tata bahasa, penomoran halaman, dan penanganan kesalahan.

dureach.contacts.query dan dureach.trade.query menerima SQL hanya baca untuk kumpulan data kontak dan pengiriman yang didokumentasikan. Gunakan satu SELECT dengan kolom yang diizinkan; gabungan tabel dan penulisan tidak didukung.

Tampilan dan kolom apa yang diizinkan?

ToolTampilanKolom
dureach.contacts.querycontactsid, full_name, job_title, company_name, company_domain, city, country
dureach.trade.querybol_shipmentsid, source_type, trade_flow, bol_number, actual_arrival_date, shipper_name, consignee_name, product_desc

Kueri hanya kolom-kolom ini. Tabel, kolom, atau awalan basis data yang tidak dikenal mengembalikan kesalahan validasi. product_desc dipotong menjadi 300 karakter dalam hasil.

Bentuk SQL apa yang diterima?

  • Satu SELECT dengan WHERE, GROUP BY, HAVING, dan ORDER BY opsional. Alias diizinkan.
  • Perbandingan, operator boolean, aritmetika, IN literal, dan LIKE didukung.
  • Fungsi agregat dan skalar: count, sum, avg, min, max, uniqExact, lower, upper, length, coalesce, toDate, toYear, toMonth.
  • Ditolak: join, subkueri, CTE, fungsi window, SETTINGS, FORMAT, LIMIT/OFFSET SQL, SELECT SETTINGS, GROUP BY WITH TOTALS, IN global, dan ORDER BY posisional.
  • SQL berukuran maksimal 16 KiB UTF-8. Pernyataan yang lebih besar mengembalikan kesalahan validasi sebelum eksekusi.
{
  "sql": "SELECT company_name, city, country FROM contacts WHERE country = 'DE' AND company_domain LIKE '%gmbh%' ORDER BY company_name, city",
  "page": 1,
  "limit": 25
}

Halaman 2 dan seterusnya memerlukan ORDER BY. Gunakan urutan yang didukung skema alat dan tambahkan pembeda nilai yang sama jika tersedia. Nilai sama dan pembaruan sumber dapat memindahkan baris antarhalaman; hasil terbatas bukan ekspor lengkap.

Bagaimana cara kerja penomoran halaman?

Gunakan page (1–20) dan limit (1–50). Jangan menambahkan LIMIT/OFFSET SQL. Hasil mengembalikan nama kolom, tipe ClickHouse, dan array baris yang terurut tanpa jumlah total:

{
  "columns": [{"name": "company_name", "type": "String"}],
  "rows": [["Example GmbH"]],
  "page": 1,
  "limit": 25
}

UUID, tanggal, desimal, dan bilangan bulat di luar rentang aman JSON tiba sebagai string; float non-finit tiba sebagai string. Hasil yang lebih besar dari 1 MiB mengembalikan result_too_large; persempit daftar kolom atau filter lalu ulangi.

Bagaimana kesalahan sebaiknya ditangani?

KodeArtiPerbaikan
kesalahan validasi pada sqlKata kunci, tabel, kolom, atau bentuk yang tidak diizinkan.Pertahankan satu SELECT pada tampilan dan kolom yang tercantum; hapus join, subkueri, CTE, SETTINGS, FORMAT, dan LIMIT SQL.
SQL exceeds 16 KiBPernyataan terlalu besar.Persingkat predikat atau bagi pertanyaan menjadi kueri yang lebih kecil.
ORDER BY hilang pada halaman 2+Halaman offset tidak deterministik.Tambahkan ORDER BY dengan kunci pemecah kesamaan yang unik.
quota_exceeded (contacts_daily)Anggaran kontak harian habis.Tunggu hingga reset atau tanyakan kepada admin tentang batas paket.
result_too_largeUkuran hasil yang ditransmisikan melebihi 1 MiB.Pilih lebih sedikit kolom, tambahkan filter, atau turunkan limit.

Catat request_id dan kode kesalahan. Jangan pernah mencatat SQL lengkap berisi pengenal pelanggan bersama token.

Halaman terkait