Ferramenta: run_bq_command
Executa um único comando da CLI do BigQuery (bq). Essa ferramenta permite executar qualquer comando bq no projeto do usuário, incluindo comandos que criam, atualizam ou excluem recursos do GCP (ou seja, mutações).
AVISO DE SEGURANÇA CRÍTICO (POTENCIALMENTE DESTRUTIVO): essa ferramenta pode criar, atualizar ou excluir recursos do BigQuery (por exemplo, bq rm, bq cancel, bq query). Ela NÃO é restrita a comandos somente leitura. Use com extrema cautela.
COMANDOS PROIBIDOS: um agente NÃO PODE executar os seguintes comandos bq: bq init, bq pyshell, bq shell.
REGRAS DE EXECUÇÃO ESTRITAS:
- Pelo menos um de
--project_idou--quota_project_idPRECISA ser especificado na string de comando. - ID do projeto x projeto de cota: a flag --project_id especifica o projeto de recurso em que o comando opera (reflete a flag --project do gcloud). A flag --quota_project_id especifica o projeto cobrado pelo faturamento/cota da chamada da API BigQuery downstream (reflete a flag
--billing-projectdo gcloud). Se--project_idfor especificado no comando, ele será usado como o projeto de faturamento/cota. Se--project_idnão for especificado OU--quota_project_idtambém for especificado, o projeto de faturamento/cota será o projeto definido na flag--quota_project_id. - Formatação de flag: você PRECISA sempre usar um sinal "=" para separar as chaves de flag dos valores de todas as opções longas. Correto:
'--project_id=my-project'ou'--location=us'. Incorreto:'--project_id my-project'ou'--location us'. Não use espaços entre as flags e os valores delas. - Sem padrões de configuração: o comando bq é executado de maneira sem estado. Ele não carrega arquivos de configuração locais, como .bigqueryrc. Portanto, para todas as operações regionais (por exemplo, criar um conjunto de dados ou consultar um conjunto de dados regional), você PRECISA especificar explicitamente a
--locationflag (por exemplo,--location=usou--location=EU). - Operações assíncronas: alguns comandos iniciam operações síncronas de longa duração (por exemplo, executar jobs de consulta). Você SEMPRE PRECISA transmitir a flag
--nosyncpara esses comandos para evitar tempos limite do agente. - Restrições de comando: você NÃO PODE usar os seguintes comandos bq:
bq init,bq pyshell,bq shell. O encadeamento ou o pipeline de comandos NÃO são aceitos. - Autocorreção: se um comando retornar um erro, analise o stderr, corrija a sintaxe ou as flags e tente novamente na próxima iteração.
Exemplos de comandos bq de mutação incluem: bq mk, bq rm, bq update, bq insert, bq query (sem --dry_run) etc. Uso: RunBq(command="bq query --project_id=PROJECT_ID 'SELECT 1'", project="projects/PROJECT_ID", input_files=[{"path": "PATH", "contents": "CONTENTS"}]) Você PRECISA fornecer o comando bq completo como uma única string no parâmetro "command". Você PRECISA fornecer o parâmetro "project" (formato: projects/PROJECT_ID) como o projeto de execução da API para faturamento, ativação da API e verificações de consumo de cota.
Exemplos de comandos/padrões bq:
- Executar uma consulta:
bq query --use_legacy_sql=false --project_id=PROJECT_ID 'SELECT * FROMproject.dataset.tableLIMIT 10' - Criar um conjunto de dados:
bq mk --dataset --location=us --project_id=PROJECT_ID myDataset - Criar uma tabela:
bq mk --table --project_id=PROJECT_ID myDataset.myTable name:string,value:integer - Remover um conjunto de dados:
bq rm -f --dataset --project_id=PROJECT_ID myDataset - Remover uma tabela:
bq rm -f -t --project_id=PROJECT_ID myDataset.myTable - Atualizar a descrição da tabela:
bq update --description="New description" --project_id=PROJECT_ID myDataset.myTable - Listar conjuntos de dados em um projeto:
bq ls --datasets=true --project_id=PROJECT_ID
O exemplo de código a seguir mostra como usar curl para chamar a ferramenta MCP run_bq_command.
| Solicitação 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 }' |
Esquema de entrada
Mensagem de solicitação para RunBq.
RunBqRequest
| Representação JSON |
|---|
{
"project": string,
"command": string,
"inputFiles": [
{
object ( |
| Campos | |
|---|---|
project |
Obrigatório. Projeto para ativação da API e consumo de cota da API CloudCli. O formato precisa ser projects/ |
command |
Obrigatório. A linha de comando bq completa a ser executada como uma única string. Exemplo: "bq ls my-dataset --location=us" Os LLMs são instruídos a usar a flag |
inputFiles[] |
Opcional. Arquivos a serem disponibilizados para o comando bq para execução. |
Arquivo
| Representação JSON |
|---|
{ "path": string, "contents": string } |
| Campos | |
|---|---|
path |
Obrigatório. Caminho do arquivo relativo ao diretório principal. Não pode conter travessia de diretório pai (..) ou expansões de shell. |
contents |
Obrigatório. Conteúdo do arquivo. |
Esquema de saída
Mensagem de resposta para RunBq.
RunBqResponse
| Representação JSON |
|---|
{ "response": { object ( |
| Campos | |
|---|---|
response |
A resposta da execução da ferramenta de CLI, contendo stdout independente, fluxo stderr e um código de saída. |
outputFiles[] |
Arquivos gerados pelo comando bq da execução. |
CliExecutionResponse
| Representação JSON |
|---|
{ "stdout": string, "stderr": string, "exitCode": string } |
| Campos | |
|---|---|
stdout |
O fluxo stdout da execução da ferramenta de CLI. |
stderr |
O fluxo stderr da execução da ferramenta de CLI. |
exitCode |
O código de saída da execução da ferramenta de CLI. |
Arquivo
| Representação JSON |
|---|
{ "path": string, "contents": string } |
| Campos | |
|---|---|
path |
Obrigatório. Caminho do arquivo relativo ao diretório principal. Não pode conter travessia de diretório pai (..) ou expansões de shell. |
contents |
Obrigatório. Conteúdo do arquivo. |
Anotações de ferramentas
Dica destrutiva: ✅ | Dica idempotente: ❌ | Dica somente leitura: ❌ | Dica de mundo aberto: ❌