Alat: run_bq_command
Menjalankan satu perintah BigQuery CLI (bq). Alat ini memungkinkan Anda menjalankan perintah bq apa pun di project pengguna, termasuk perintah yang membuat, memperbarui, atau menghapus resource GCP (yaitu, mutasi).
PERINGATAN KESELAMATAN KRITIS (BERPOTENSI MERUSAK): Alat ini dapat membuat, memperbarui, atau menghapus resource BigQuery (misalnya, bq rm, bq cancel, bq query). Alat ini TIDAK dibatasi untuk perintah hanya baca. Gunakan dengan sangat hati-hati.
PERINTAH YANG DILARANG: Agen TIDAK BOLEH menjalankan perintah bq berikut: bq init, bq pyshell, bq shell.
ATURAN EKSEKUSI YANG KETAT:
- Setidaknya salah satu dari
--project_idatau--quota_project_idHARUS ditentukan dalam string perintah. - Project ID vs Project Kuota: Flag --project_id menentukan project resource tempat perintah beroperasi (mencerminkan flag --project gcloud). Flag --quota_project_id menentukan project yang ditagih untuk penagihan/kuota panggilan BigQuery API hilir (mencerminkan flag
--billing-projectgcloud). Jika--project_idditentukan dalam perintah, perintah tersebut akan digunakan sebagai project penagihan/kuota. Jika--project_idtidak ditentukan ATAU--quota_project_idjuga ditentukan, project penagihan/kuota akan menjadi project yang ditetapkan dalam flag--quota_project_id. - Pemformatan Flag: Anda HARUS selalu menggunakan tanda '=' untuk memisahkan kunci flag dari nilainya untuk semua opsi panjang. Benar:
'--project_id=my-project'atau'--location=us'. Salah:'--project_id my-project'atau'--location us'. Jangan gunakan spasi di antara flag dan nilainya. - Tidak Ada Default Konfigurasi: Perintah bq dijalankan tanpa status; perintah ini tidak memuat file konfigurasi lokal seperti .bigqueryrc. Oleh karena itu, untuk semua operasi regional (misalnya, membuat set data atau membuat kueri set data regional), Anda HARUS menentukan flag
--locationsecara eksplisit (misalnya,--location=usatau--location=EU). - Operasi Asinkron: Beberapa perintah memulai operasi asinkron yang berjalan lama (misalnya, menjalankan tugas kueri). Anda SEBAIKNYA SELALU meneruskan flag
--nosyncuntuk perintah ini guna mencegah waktu tunggu agen. - Batasan Perintah: Anda TIDAK BOLEH menggunakan perintah bq berikut:
bq init,bq pyshell,bq shell. Penyaluran atau penggabungan perintah TIDAK didukung. - Koreksi Mandiri: Jika perintah menampilkan error, analisis stderr, koreksi sintaksis atau flag, lalu coba lagi pada iterasi berikutnya.
Contoh perintah bq yang melakukan mutasi mencakup: bq mk, bq rm, bq update, bq insert, bq query (tanpa --dry_run), dll. Penggunaan: RunBq(command="bq query --project_id=PROJECT_ID 'SELECT 1'", project="projects/PROJECT_ID", input_files=[{"path": "PATH", "contents": "CONTENTS"}]) Anda HARUS memberikan perintah bq lengkap sebagai satu string dalam parameter 'command'. Anda HARUS memberikan parameter 'project' (format: projects/PROJECT_ID) sebagai project eksekusi API untuk penagihan, pengaktifan API, dan pemeriksaan penggunaan kuota.
Contoh perintah/pola bq:
- Menjalankan kueri:
bq query --use_legacy_sql=false --project_id=PROJECT_ID 'SELECT * FROMproject.dataset.tableLIMIT 10' - Membuat set data:
bq mk --dataset --location=us --project_id=PROJECT_ID myDataset - Membuat tabel:
bq mk --table --project_id=PROJECT_ID myDataset.myTable name:string,value:integer - Menghapus set data:
bq rm -f --dataset --project_id=PROJECT_ID myDataset - Menghapus tabel:
bq rm -f -t --project_id=PROJECT_ID myDataset.myTable - Memperbarui deskripsi tabel:
bq update --description="New description" --project_id=PROJECT_ID myDataset.myTable - Mencantumkan set data dalam project:
bq ls --datasets=true --project_id=PROJECT_ID
Contoh kode berikut menunjukkan cara menggunakan curl untuk memanggil alat MCP run_bq_command.
| Permintaan Curl |
|---|
curl --location 'https://cloudcli.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "run_bq_command", "arguments": { // provide these details according to the tool's MCP specification } }, "jsonrpc": "2.0", "id": 1 }' |
Skema Input
Pesan permintaan untuk RunBq.
RunBqRequest
| Representasi JSON |
|---|
{
"project": string,
"command": string,
"inputFiles": [
{
object ( |
| Kolom | |
|---|---|
project |
Wajib diisi. Project untuk pengaktifan API dan penggunaan kuota untuk CloudCli API. Format harus berupa projects/ |
command |
Wajib diisi. Baris command line bq lengkap untuk dijalankan sebagai satu string. Contoh: "bq ls my-dataset --location=us" LLM diinstruksikan untuk menggunakan flag |
inputFiles[] |
Opsional. File yang akan disediakan untuk perintah bq agar dapat dieksekusi. |
File
| Representasi JSON |
|---|
{ "path": string, "contents": string } |
| Kolom | |
|---|---|
path |
Wajib diisi. Jalur file relatif terhadap direktori utama. Tidak boleh berisi traversal direktori induk (..) atau ekspansi shell. |
contents |
Wajib diisi. Isi file. |
Skema Output
Pesan respons untuk RunBq.
RunBqResponse
| Representasi JSON |
|---|
{ "response": { object ( |
| Kolom | |
|---|---|
response |
Respons dari eksekusi alat CLI, yang berisi aliran stdout, stderr independen, dan kode keluar. |
outputFiles[] |
File yang dihasilkan oleh perintah bq dari eksekusinya. |
CliExecutionResponse
| Representasi JSON |
|---|
{ "stdout": string, "stderr": string, "exitCode": string } |
| Kolom | |
|---|---|
stdout |
Aliran stdout dari eksekusi alat CLI. |
stderr |
Aliran stderr dari eksekusi alat CLI. |
exitCode |
Kode keluar dari eksekusi alat CLI. |
File
| Representasi JSON |
|---|
{ "path": string, "contents": string } |
| Kolom | |
|---|---|
path |
Wajib diisi. Jalur file relatif terhadap direktori utama. Tidak boleh berisi traversal direktori induk (..) atau ekspansi shell. |
contents |
Wajib diisi. Isi file. |
Anotasi Alat
Petunjuk Destruktif: ✅ | Petunjuk Idempoten: ❌ | Petunjuk Hanya Baca: ❌ | Petunjuk Dunia Terbuka: ❌