Ferramenta: execute_sql
Executa uma consulta SQL no projeto e retorna o resultado.
Essa ferramenta é restrita apenas a declarações SELECT. Não é permitido usar instruções e procedimentos armazenados INSERT, UPDATE e DELETE. Se a consulta não incluir uma instrução SELECT, um erro será retornado. Para informações sobre como criar consultas, consulte a documentação do GoogleSQL.
A ferramenta execute_sql também pode ter efeitos colaterais se a consulta invocar funções remotas ou UDFs do Python.
Todas as consultas executadas com a ferramenta execute_sql têm um rótulo que a identifica como a fonte. Use esse rótulo para filtrar as consultas com o par rótulo-valor goog-mcp-server: true.
As consultas são cobradas do projeto especificado no campo project_id.
O exemplo a seguir demonstra como usar curl para invocar a ferramenta execute_sql MCP.
| Solicitação curl |
|---|
curl --location 'https://bigquery.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "execute_sql", "arguments": { // provide these details according to the tool's MCP specification } }, "jsonrpc": "2.0", "id": 1 }' |
Esquema de entrada
Executa uma consulta SQL do BigQuery de forma síncrona e retorna os resultados se ela for concluída dentro de um tempo limite especificado.
| Representação JSON |
|---|
{ "projectId": string, "query": string, "dryRun": boolean } |
| Campos | |
|---|---|
projectId |
Obrigatório. Projeto que será usado para execução de consultas e faturamento. |
query |
Obrigatório. A consulta a ser executada na forma de uma consulta do GoogleSQL. |
dryRun |
Opcional. Se definido como "true", o BigQuery não vai executar o job. Em vez disso, se a consulta for válida, o BigQuery vai retornar estatísticas sobre o job, como quantos bytes seriam processados. Se a consulta for inválida, um erro será retornado. O valor padrão é falso. |
Esquema de saída
Resposta para uma consulta SQL do BigQuery.
| Representação JSON |
|---|
{ "schema": { object ( |
| Campos | |
|---|---|
schema |
O esquema dos resultados. Presente apenas quando a consulta é concluída com sucesso. |
rows[] |
Um objeto com tantos resultados quanto se permite armazenar em uma resposta. Para receber outras linhas, chame GetQueryResults e especifique o jobReference retornado acima. |
jobComplete |
Se a consulta foi concluída ou não. Se existirem linhas ou se totalRows estiver presente, isso será sempre verdadeiro. Se falso, totalRows não estará disponível. |
errors[] |
Apenas saída. Os primeiros erros ou avisos encontrados durante a execução do job. A mensagem final inclui o número de erros que causaram a interrupção do processo. Erros aqui não indicam necessariamente que o trabalho foi concluído ou falhou. Para mais informações sobre mensagens de erro, consulte Mensagens de erro. |
| Representação JSON |
|---|
{ "fields": [ { object ( |
| Campos | |
|---|---|
fields[] |
Descreve os campos na tabela. |
foreignTypeInfo |
Opcional. Especifica metadados da definição do tipo de dados externo no esquema de campo ( |
| Representação JSON |
|---|
{ "name": string, "type": string, "mode": string, "fields": [ { object ( |
| Campos | |
|---|---|
name |
Obrigatório. Nome do campo. O nome precisa conter apenas letras (a-z, A-Z), números (0-9) ou sublinhados (_) e começar com uma letra ou sublinhado. O tamanho máximo é de 300 caracteres. |
type |
Obrigatório. O tipo de dados do campo. Os possíveis valores incluem:
O uso de RECORD/STRUCT indica que o campo contém um esquema aninhado. |
mode |
Opcional. O modo do campo. Os valores possíveis incluem NULLABLE, REQUIRED e REPEATED. O valor padrão é NULLABLE. |
fields[] |
Opcional. Descreve os campos de esquema aninhados se a propriedade "type" estiver definida como "RECORD". |
description |
Opcional. A descrição do campo. O comprimento máximo é de 1.024 caracteres. |
policyTags |
Opcional. As tags de política anexadas a esse campo, usadas para controle de acesso no nível do campo. Se não for definido, o padrão será "policy_tags" vazio. |
dataPolicies[] |
Opcional. Políticas de dados anexadas a este campo, usadas para controle de acesso no nível do campo. |
nameAlternative[] |
Este campo não deve ser usado. |
maxLength |
Opcional. Comprimento máximo dos valores deste campo para STRINGS ou BYTES. Se max_length não for especificado, nenhuma restrição de tamanho máximo será imposta a esse campo. Se type = "STRING", max_length representa o comprimento máximo em UTF-8 das strings nesse campo. Se type = "BYTES", max_length representa o número máximo de bytes neste campo. Não é possível definir esse campo se o tipo for diferente de "STRING" e "BYTES". |
precision |
Opcional. Restrições de precisão (número máximo de dígitos totais na base 10) e escala (número máximo de dígitos na parte fracionária na base 10) para valores desse campo para NUMERIC ou BIGNUMERIC. Não é possível definir precisão ou escala se o tipo não for "NUMERIC" nem "BIGNUMERIC". Se a precisão e a escala não forem especificadas, nenhuma restrição de intervalo de valores será imposta a esse campo, desde que os valores sejam permitidos pelo tipo. Os valores desse campo NUMERIC ou BIGNUMERIC precisam estar nesse intervalo quando:
Valores aceitáveis para precisão e escala, se ambos forem especificados:
Valores aceitáveis para precisão se apenas a precisão for especificada, mas não a escala (e, portanto, a escala for interpretada como igual a zero):
Se a escala for especificada, mas não a precisão, ela será inválida. |
scale |
Opcional. Consulte a documentação para saber mais sobre a precisão. |
timestampPrecision |
Opcional. Precisão (número máximo de dígitos totais na base 10) para segundos do tipo TIMESTAMP. Os valores possíveis incluem: * 6 (padrão, para o tipo TIMESTAMP com precisão de microssegundos) * 12 (para o tipo TIMESTAMP com precisão de picossegundos) |
roundingMode |
Opcional. Especifica o modo de arredondamento a ser usado ao armazenar valores do tipo NUMERIC e BIGNUMERIC. |
collation |
Opcional. A ordenação de campos só pode ser definida quando o tipo de campo é STRING. Os valores a seguir são compatíveis:
|
defaultValueExpression |
Opcional. Uma expressão SQL para especificar o valor padrão desse campo. |
rangeElementType |
Opcional. O subtipo do INTERVALO, se o tipo deste campo for INTERVALO. Se o tipo for INTERVALO, este campo será obrigatório. Os valores para o tipo de elemento de campo podem ser os seguintes:
|
foreignTypeDefinition |
Opcional. Definição do tipo de dados estrangeiro. Válido apenas para campos de esquema de nível superior (não aninhados). Se o tipo for FOREIGN, este campo será obrigatório. |
| Representação JSON |
|---|
{ "value": string } |
| Campos | |
|---|---|
value |
O valor da string. |
| Representação JSON |
|---|
{ "names": [ string ] } |
| Campos | |
|---|---|
names[] |
Uma lista de nomes de recursos de tag de política. Por exemplo, "projects/1/locations/eu/taxonomies/2/policyTags/3". No momento, é permitida apenas uma tag de política. |
| Representação JSON |
|---|
{ // Union field |
| Campos | |
|---|---|
Campo de união
|
|
name |
Nome do recurso da política de dados no formato projects/project_id/locations/location_id/dataPolicies/data_policy_id. |
| Representação JSON |
|---|
{ "value": string } |
| Campos | |
|---|---|
value |
O valor int64. |
| Representação JSON |
|---|
{ "type": string } |
| Campos | |
|---|---|
type |
Obrigatório. O tipo de um elemento de campo. Veja mais informações em |
| Representação JSON |
|---|
{
"typeSystem": enum ( |
| Campos | |
|---|---|
typeSystem |
Obrigatório. Especifica o sistema que define o tipo de dados externo. |
| Representação JSON |
|---|
{ "fields": { string: value, ... } } |
| Campos | |
|---|---|
fields |
Mapa não ordenado de valores com tipagem dinâmica. Um objeto com uma lista de pares |
| Representação JSON |
|---|
{ "key": string, "value": value } |
| Campos | |
|---|---|
key |
|
value |
|
| Representação JSON |
|---|
{ // Union field |
| Campos | |
|---|---|
Campo de união kind. O tipo de valor. kind pode ser apenas de um dos tipos a seguir: |
|
nullValue |
Representa um valor nulo. |
numberValue |
Representa um valor double. |
stringValue |
Representa um valor de string. |
boolValue |
Representa um valor booleano. |
structValue |
Representa um valor estruturado. |
listValue |
Representa um |
| Representação JSON |
|---|
{ "values": [ value ] } |
| Campos | |
|---|---|
values[] |
Campo repetido de valores digitados dinamicamente. |
| Representação JSON |
|---|
{ "value": boolean } |
| Campos | |
|---|---|
value |
O valor booleano. |
| Representação JSON |
|---|
{ "reason": string, "location": string, "debugInfo": string, "message": string } |
| Campos | |
|---|---|
reason |
Um código do erro curto que resume o erro. |
location |
Especifica onde ocorreu o erro, se presente. |
debugInfo |
Informações de depuração. Essa propriedade é interna do Google e não deve ser usada. |
message |
Uma descrição legível por humanos do erro. |
Anotações de ferramentas
Dica destrutiva: ✅ | Dica idempotente: ❌ | Dica somente leitura: ❌ | Dica de mundo aberto: ✅