MCP Tools Reference: cloudcli.googleapis.com

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:

  1. Setidaknya salah satu dari --project_id atau --quota_project_id HARUS ditentukan dalam string perintah.
  2. 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-project gcloud). Jika --project_id ditentukan dalam perintah, perintah tersebut akan digunakan sebagai project penagihan/kuota. Jika --project_id tidak ditentukan ATAU --quota_project_id juga ditentukan, project penagihan/kuota akan menjadi project yang ditetapkan dalam flag --quota_project_id.
  3. 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.
  4. 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 --location secara eksplisit (misalnya, --location=us atau --location=EU).
  5. Operasi Asinkron: Beberapa perintah memulai operasi asinkron yang berjalan lama (misalnya, menjalankan tugas kueri). Anda SEBAIKNYA SELALU meneruskan flag --nosync untuk perintah ini guna mencegah waktu tunggu agen.
  6. Batasan Perintah: Anda TIDAK BOLEH menggunakan perintah bq berikut: bq init, bq pyshell, bq shell. Penyaluran atau penggabungan perintah TIDAK didukung.
  7. 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:

  1. Menjalankan kueri: bq query --use_legacy_sql=false --project_id=PROJECT_ID 'SELECT * FROMproject.dataset.tableLIMIT 10'
  2. Membuat set data: bq mk --dataset --location=us --project_id=PROJECT_ID myDataset
  3. Membuat tabel: bq mk --table --project_id=PROJECT_ID myDataset.myTable name:string,value:integer
  4. Menghapus set data: bq rm -f --dataset --project_id=PROJECT_ID myDataset
  5. Menghapus tabel: bq rm -f -t --project_id=PROJECT_ID myDataset.myTable
  6. Memperbarui deskripsi tabel: bq update --description="New description" --project_id=PROJECT_ID myDataset.myTable
  7. 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 (File)
    }
  ]
}
Kolom
project

string

Wajib diisi. Project untuk pengaktifan API dan penggunaan kuota untuk CloudCli API.

Format harus berupa projects/ atau projects/

command

string

Wajib diisi. Baris command line bq lengkap untuk dijalankan sebagai satu string. Contoh: "bq ls my-dataset --location=us"

LLM diinstruksikan untuk menggunakan flag --nosync untuk operasi yang berjalan lama guna menghindari waktu tunggu.

inputFiles[]

object (File)

Opsional. File yang akan disediakan untuk perintah bq agar dapat dieksekusi.

File

Representasi JSON
{
  "path": string,
  "contents": string
}
Kolom
path

string

Wajib diisi. Jalur file relatif terhadap direktori utama. Tidak boleh berisi traversal direktori induk (..) atau ekspansi shell.

contents

string

Wajib diisi. Isi file.

Skema Output

Pesan respons untuk RunBq.

RunBqResponse

Representasi JSON
{
  "response": {
    object (CliExecutionResponse)
  },
  "outputFiles": [
    {
      object (File)
    }
  ]
}
Kolom
response

object (CliExecutionResponse)

Respons dari eksekusi alat CLI, yang berisi aliran stdout, stderr independen, dan kode keluar.

outputFiles[]

object (File)

File yang dihasilkan oleh perintah bq dari eksekusinya.

CliExecutionResponse

Representasi JSON
{
  "stdout": string,
  "stderr": string,
  "exitCode": string
}
Kolom
stdout

string

Aliran stdout dari eksekusi alat CLI.

stderr

string

Aliran stderr dari eksekusi alat CLI.

exitCode

string (int64 format)

Kode keluar dari eksekusi alat CLI.

File

Representasi JSON
{
  "path": string,
  "contents": string
}
Kolom
path

string

Wajib diisi. Jalur file relatif terhadap direktori utama. Tidak boleh berisi traversal direktori induk (..) atau ekspansi shell.

contents

string

Wajib diisi. Isi file.

Anotasi Alat

Petunjuk Destruktif: ✅ | Petunjuk Idempoten: ❌ | Petunjuk Hanya Baca: ❌ | Petunjuk Dunia Terbuka: ❌