Outil : run_bq_command
Exécute une seule commande BigQuery CLI (bq). Cet outil vous permet d'exécuter n'importe quelle commande bq dans le projet de l'utilisateur, y compris les commandes qui créent, mettent à jour ou suppriment des ressources GCP (c'est-à-dire des mutations).
AVERTISSEMENT DE SÉCURITÉ CRITIQUE (POTENTIELLEMENT DESTRUCTEUR) : cet outil peut créer, mettre à jour ou supprimer des ressources BigQuery (par exemple, bq rm, bq cancel, bq query). Il ne se limite PAS aux commandes en lecture seule. Soyez extrêmement prudent.
COMMANDES INTERDITES : un agent NE DOIT PAS exécuter les commandes bq suivantes : bq init, bq pyshell, bq shell.
RÈGLES D'EXÉCUTION STRICTES :
- Au moins l'une des options
--project_idou--quota_project_idDOIT être spécifiée dans la chaîne de commande. - ID de projet par rapport au projet de quota : l'option --project_id spécifie le projet de ressources sur lequel la commande opère (similaire à l'option --project de gcloud). L'option --quota_project_id spécifie le projet facturé pour la facturation/le quota de l'appel d'API BigQuery en aval (similaire à l'option
--billing-projectde gcloud). Si--project_idest spécifié dans la commande, il sera utilisé comme projet de facturation/quota. Si--project_idn'est pas spécifié OU si--quota_project_idest spécifié en plus, le projet de facturation/quota sera celui défini dans l'option--quota_project_id. - Formatage des options : vous DEVEZ toujours utiliser le signe "=" pour séparer les clés d'option de leurs valeurs pour toutes les options longues. Correct :
'--project_id=my-project'ou'--location=us'. Incorrect :'--project_id my-project'ou'--location us'. N'utilisez pas d'espaces entre les options et leurs valeurs. - Aucune configuration par défaut : la commande bq est exécutée de manière sans état. Elle ne charge pas les fichiers de configuration locaux tels que .bigqueryrc. Par conséquent, pour toutes les opérations régionales (par exemple, la création d'un ensemble de données ou l'interrogation d'un ensemble de données régional), vous DEVEZ spécifier explicitement l'option
--location(par exemple,--location=usou--location=EU). - Opérations asynchrones : certaines commandes lancent des opérations synchrones de longue durée (par exemple, l'exécution de jobs de requête). Vous DEVEZ TOUJOURS transmettre l'option
--nosyncpour ces commandes afin d'éviter les délais d'attente de l'agent. - Restrictions de commande : vous NE DEVEZ PAS utiliser les commandes bq suivantes :
bq init,bq pyshell,bq shell. Le piping ou le chaînage de commandes NE SONT PAS acceptés. - Autocorrection : si une commande renvoie une erreur, analysez le stderr, corrigez la syntaxe ou les options, puis réessayez lors de l'itération suivante.
Voici quelques exemples de commandes bq mutantes : bq mk, bq rm, bq update, bq insert, bq query (sans --dry_run), etc. Utilisation : RunBq(command="bq query --project_id=PROJECT_ID 'SELECT 1'", project="projects/PROJECT_ID", input_files=[{"path": "PATH", "contents": "CONTENTS"}]) Vous DEVEZ fournir la commande bq complète sous forme de chaîne unique dans le paramètre "command". Vous DEVEZ fournir le paramètre "project" (format : projects/PROJECT_ID) en tant que projet d'exécution de l'API pour la facturation, l'activation de l'API et les vérifications de la consommation de quotas.
Exemples de commandes/modèles bq :
- Exécuter une requête :
bq query --use_legacy_sql=false --project_id=PROJECT_ID 'SELECT * FROMproject.dataset.tableLIMIT 10' - Créer un ensemble de données :
bq mk --dataset --location=us --project_id=PROJECT_ID myDataset - Créer une table :
bq mk --table --project_id=PROJECT_ID myDataset.myTable name:string,value:integer - Supprimer un ensemble de données :
bq rm -f --dataset --project_id=PROJECT_ID myDataset - Supprimer une table :
bq rm -f -t --project_id=PROJECT_ID myDataset.myTable - Mettre à jour la description de la table :
bq update --description="New description" --project_id=PROJECT_ID myDataset.myTable - Répertorier les ensembles de données dans un projet :
bq ls --datasets=true --project_id=PROJECT_ID
L'exemple de code suivant montre comment utiliser curl pour appeler l'outil MCP run_bq_command.
| Requête 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 }' |
Schéma d'entrée
Message de requête pour RunBq.
RunBqRequest
| Représentation JSON |
|---|
{
"project": string,
"command": string,
"inputFiles": [
{
object ( |
| Champs | |
|---|---|
project |
Obligatoire. Projet pour l'activation de l'API et la consommation de quotas pour l'API CloudCli. Le format doit être projects/ |
command |
Obligatoire. Ligne de commande bq complète à exécuter sous forme de chaîne unique. Exemple : "bq ls my-dataset --location=us" Les LLM sont invités à utiliser l'option |
inputFiles[] |
Facultatif. Fichiers à mettre à la disposition de la commande bq pour son exécution. |
Fichier
| Représentation JSON |
|---|
{ "path": string, "contents": string } |
| Champs | |
|---|---|
path |
Obligatoire. Chemin d'accès au fichier par rapport au répertoire d'accueil. Ne doit pas contenir de traversée de répertoire parent (..) ni d'expansion de shell. |
contents |
Obligatoire. Contenu du fichier. |
Schéma de sortie
Message de réponse pour RunBq.
RunBqResponse
| Représentation JSON |
|---|
{ "response": { object ( |
| Champs | |
|---|---|
response |
Réponse de l'exécution de l'outil CLI, contenant un flux stdout, un flux stderr et un code de sortie indépendants. |
outputFiles[] |
Fichiers générés par la commande bq à partir de son exécution. |
CliExecutionResponse
| Représentation JSON |
|---|
{ "stdout": string, "stderr": string, "exitCode": string } |
| Champs | |
|---|---|
stdout |
Flux stdout de l'exécution de l'outil CLI. |
stderr |
Flux stderr de l'exécution de l'outil CLI. |
exitCode |
Code de sortie de l'exécution de l'outil CLI. |
Fichier
| Représentation JSON |
|---|
{ "path": string, "contents": string } |
| Champs | |
|---|---|
path |
Obligatoire. Chemin d'accès au fichier par rapport au répertoire d'accueil. Ne doit pas contenir de traversée de répertoire parent (..) ni d'expansion de shell. |
contents |
Obligatoire. Contenu du fichier. |
Annotations d'outil
Indication destructive : ✅ | Indication d'idempotence : ❌ | Indication de lecture seule : ❌ | Indication de monde ouvert : ❌