Herramienta: execute_sql
Ejecuta una consulta de SQL en el proyecto y devuelve el resultado.
Esta herramienta solo se puede usar con SELECT. No se permiten las instrucciones INSERT, UPDATE y DELETE ni los procedimientos almacenados. Si la consulta no incluye una instrucción SELECT, se devuelve un error. Para obtener información sobre cómo crear consultas, consulta la documentación de GoogleSQL.
La herramienta execute_sql también puede tener efectos secundarios si la consulta invoca funciones remotas o UDFs de Python.
Todas las consultas que se ejecutan con la herramienta execute_sql tienen una etiqueta que identifica la herramienta como fuente. Puede usar esta etiqueta para filtrar las consultas con el par de etiqueta y valor goog-mcp-server: true.
Las consultas se cobran al proyecto especificado en el campo project_id.
En el siguiente ejemplo se muestra cómo usar curl para invocar la herramienta execute_sql MCP.
| Solicitud de 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
Ejecuta una consulta de SQL de BigQuery de forma síncrona y devuelve los resultados si la consulta se completa en el tiempo de espera especificado.
| Representación JSON |
|---|
{ "projectId": string, "query": string, "dryRun": boolean } |
| Campos | |
|---|---|
projectId |
Obligatorio. Proyecto que se usará para la ejecución de consultas y la facturación. |
query |
Obligatorio. Consulta que se va a ejecutar en forma de consulta de GoogleSQL. |
dryRun |
Opcional. Si se le asigna el valor true, BigQuery no ejecuta el trabajo. En su lugar, si la consulta es válida, BigQuery devuelve estadísticas sobre el trabajo, como el número de bytes que se procesarían. Si la consulta no es válida, se devuelve un error. El valor predeterminado es false. |
Esquema de salida
Respuesta de una consulta de SQL de BigQuery.
| Representación JSON |
|---|
{ "schema": { object ( |
| Campos | |
|---|---|
schema |
El esquema de los resultados. Aparece únicamente cuando la consulta se completa de forma correcta. |
rows[] |
Un objeto con tantos resultados como se pueden contener dentro del tamaño máximo de respuesta permitido. Para obtener filas adicionales, puedes llamar a GetQueryResults y especificar el jobReference devuelto anteriormente. |
jobComplete |
Determina si la consulta se ha completado o no. Si aparecen filas o el valor totalRows, siempre será verdadero. Si fuera falso, el valor totalRows no estará disponible. |
errors[] |
Solo de salida. Los primeros errores o advertencias que se han encontrado durante la ejecución del trabajo. El mensaje final incluye el número de errores que han provocado que el proceso se detenga. Estos errores no indican necesariamente que el trabajo se haya completado o que se haya completado incorrectamente. Para obtener más información sobre los mensajes de error, consulta el artículo Mensajes de error. |
| Representación JSON |
|---|
{ "fields": [ { object ( |
| Campos | |
|---|---|
fields[] |
Describe los campos de una tabla. |
foreignTypeInfo |
Opcional. Especifica los metadatos de la definición del tipo de datos externos en el esquema de campo ( |
| Representación JSON |
|---|
{ "name": string, "type": string, "mode": string, "fields": [ { object ( |
| Campos | |
|---|---|
name |
Obligatorio. Nombre del campo. El nombre solo puede contener letras (a-z, A-Z), números (0-9) o guiones bajos (_), y debe empezar por una letra o un guion bajo. La longitud máxima es de 300 caracteres. |
type |
Obligatorio. El tipo de datos del campo. Estos son algunos de los posibles valores:
El uso de RECORD o STRUCT indica que el campo contiene un esquema anidado. |
mode |
Opcional. El modo del campo. Entre los valores posibles se incluyen NULLABLE, REQUIRED y REPEATED. El valor predeterminado es NULLABLE. |
fields[] |
Opcional. Describe los campos de esquema anidados si la propiedad type se define como RECORD. |
description |
Opcional. Descripción del campo. La longitud máxima es de 1024 caracteres. |
policyTags |
Opcional. Las etiquetas de política asociadas a este campo, que se usan para el control de acceso a nivel de campo. Si no se define, se utiliza una lista vacía de policy_tags de forma predeterminada. |
dataPolicies[] |
Opcional. Políticas de datos asociadas a este campo, que se usan para el control de acceso a nivel de campo. |
nameAlternative[] |
Este campo no se debe usar. |
maxLength |
Opcional. Longitud máxima de los valores de este campo para STRINGS o BYTES. Si no se especifica max_length, no se impone ninguna restricción de longitud máxima en este campo. Si type = "STRING", max_length representa la longitud máxima en UTF-8 de las cadenas de este campo. Si type = "BYTES", max_length representa el número máximo de bytes de este campo. No se puede definir este campo si type ≠ "STRING" y ≠ "BYTES". |
precision |
Opcional. Restricciones de precisión (número máximo de dígitos totales en base 10) y escala (número máximo de dígitos en la parte fraccionaria en base 10) para los valores de este campo en NUMERIC o BIGNUMERIC. No se puede definir la precisión ni la escala si el tipo no es "NUMERIC" ni "BIGNUMERIC". Si no se especifican la precisión y la escala, no se impone ninguna restricción de intervalo de valores en este campo, siempre que los valores estén permitidos por el tipo. Los valores de este campo NUMERIC o BIGNUMERIC deben estar en este intervalo cuando:
Valores aceptables para la precisión y la escala si se especifican ambos:
Valores aceptables de precisión si solo se especifica la precisión, pero no la escala (por lo que se interpreta que la escala es igual a cero):
Si se especifica la escala, pero no la precisión, no será válido. |
scale |
Opcional. Consulta la documentación para obtener información sobre la precisión. |
timestampPrecision |
Opcional. Precisión (número máximo de dígitos totales en base 10) de los segundos del tipo TIMESTAMP. Entre los valores posibles se incluyen los siguientes: * 6 (valor predeterminado para el tipo TIMESTAMP con precisión de microsegundos) * 12 (para el tipo TIMESTAMP con precisión de picosegundos) |
roundingMode |
Opcional. Especifica el modo de redondeo que se debe usar al almacenar valores de tipo NUMERIC y BIGNUMERIC. |
collation |
Opcional. La ordenación de campos solo se puede definir cuando el tipo de campo es STRING. Se admiten los siguientes valores:
|
defaultValueExpression |
Opcional. Una expresión SQL para especificar el valor predeterminado de este campo. |
rangeElementType |
Opcional. Subtipo de RANGE, si el tipo de este campo es RANGE. Si el tipo es INTERVALO, este campo es obligatorio. Los valores del tipo de elemento de campo pueden ser los siguientes:
|
foreignTypeDefinition |
Opcional. Definición del tipo de datos externo. Solo es válido para los campos de esquema de nivel superior (no para los campos anidados). Si el tipo es EXTERNO, este campo es obligatorio. |
| Representación JSON |
|---|
{ "value": string } |
| Campos | |
|---|---|
value |
Valor de cadena. |
| Representación JSON |
|---|
{ "names": [ string ] } |
| Campos | |
|---|---|
names[] |
Lista de nombres de recursos de etiquetas de política. Por ejemplo, "projects/1/locations/eu/taxonomies/2/policyTags/3". Actualmente, se permite 1 etiqueta de política como máximo. |
| Representación JSON |
|---|
{ // Union field |
| Campos | |
|---|---|
Campo de unión
|
|
name |
Nombre de recurso de la política de datos con el formato projects/project_id/locations/location_id/dataPolicies/data_policy_id. |
| Representación JSON |
|---|
{ "value": string } |
| Campos | |
|---|---|
value |
Valor int64. |
| Representación JSON |
|---|
{ "type": string } |
| Campos | |
|---|---|
type |
Obligatorio. Tipo de elemento de campo. Para obtener más información, consulta |
| Representación JSON |
|---|
{
"typeSystem": enum ( |
| Campos | |
|---|---|
typeSystem |
Obligatorio. Especifica el sistema que define el tipo de datos externos. |
| Representación JSON |
|---|
{ "fields": { string: value, ... } } |
| Campos | |
|---|---|
fields |
Mapa desordenado de valores con tipo dinámico. Un objeto que contiene una lista de pares |
| Representación JSON |
|---|
{ "key": string, "value": value } |
| Campos | |
|---|---|
key |
|
value |
|
| Representación JSON |
|---|
{ // Union field |
| Campos | |
|---|---|
Campo de unión kind. El tipo de valor. kind solo puede ser una de estas dos opciones: |
|
nullValue |
Representa un valor nulo. |
numberValue |
Representa un valor doble. |
stringValue |
Representa un valor de cadena. |
boolValue |
Representa un valor booleano. |
structValue |
Representa un valor estructurado. |
listValue |
Representa un |
| Representación JSON |
|---|
{ "values": [ value ] } |
| Campos | |
|---|---|
values[] |
Campo repetido de valores con tipo dinámico. |
| Representación JSON |
|---|
{ "value": boolean } |
| Campos | |
|---|---|
value |
Valor booleano. |
| Representación JSON |
|---|
{ "reason": string, "location": string, "debugInfo": string, "message": string } |
| Campos | |
|---|---|
reason |
Un código de error breve que resume el error. |
location |
Especifica dónde se ha producido el error, si es que se ha producido alguno. |
debugInfo |
Información de depuración. Esta propiedad es interna de Google y no debe usarse. |
message |
Descripción del error con formato legible para humanos. |
Anotaciones de herramientas
Pista destructiva: ✅ | Pista idempotente: ❌ | Pista de solo lectura: ❌ | Pista de mundo abierto: ✅