Herramienta: execute_sql
Ejecuta una consulta en SQL en el proyecto y devuelve el resultado.
Esta herramienta solo se puede usar con instrucciones SELECT. No se permiten las instrucciones INSERT, UPDATE y DELETE, ni los procedimientos almacenados. Si la consulta no incluye una instrucción SELECT, se muestra 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 búsqueda invoca funciones remotas o UDF de Python.
Todas las búsquedas que se ejecutan con la herramienta execute_sql tienen una etiqueta que identifica la herramienta como la fuente. Puedes usar esta etiqueta para filtrar las búsquedas con el par etiqueta-valor goog-mcp-server: true.
Las consultas se cargan al proyecto especificado en el campo project_id.
En el siguiente ejemplo, se muestra cómo usar curl para invocar la herramienta de MCP execute_sql.
| 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 en SQL de BigQuery de forma síncrona y muestra resultados si se completa en un tiempo de espera especificado.
| Representación JSON |
|---|
{ "projectId": string, "query": string, "dryRun": boolean } |
| Campos | |
|---|---|
projectId |
Obligatorio. Es el proyecto que se usará para la ejecución de consultas y la facturación. |
query |
Obligatorio. Es la consulta que se ejecutará en forma de consulta de GoogleSQL. |
dryRun |
Es opcional. Si se establece como verdadero, BigQuery no ejecuta el trabajo. En su lugar, si la consulta es válida, BigQuery devuelve estadísticas sobre el trabajo, como cuántos bytes se procesarán. Si la búsqueda no es válida, se mostrará un error. El valor predeterminado es falso. |
Esquema de salida
Es la respuesta a una consulta en SQL de BigQuery.
| Representación JSON |
|---|
{ "schema": { object ( |
| Campos | |
|---|---|
schema |
Es el esquema de los resultados. Solo está presente cuando la consulta se completa correctamente. |
rows[] |
Es un objeto con la mayor cantidad de resultados que se pueden incluir dentro del tamaño máximo de respuesta permitido. Para obtener filas adicionales, puedes llamar a GetQueryResults y especificar el jobReference que se devolvió anteriormente. |
jobComplete |
Indica si la búsqueda se completó o no. Si se incluyen filas o totalRows, este valor siempre será verdadero. Si es falso, no estará disponible totalRows. |
errors[] |
Solo salida. Son los primeros errores o advertencias que se encontraron durante la ejecución del trabajo. El mensaje final incluye la cantidad de errores que provocaron la detención del proceso. Los errores que se muestran aquí no necesariamente significan que el trabajo se completó o no tuvo éxito. Para obtener más información sobre los mensajes de error, consulta Mensajes de error. |
| Representación JSON |
|---|
{ "fields": [ { object ( |
| Campos | |
|---|---|
fields[] |
Describe los campos de una tabla. |
foreignTypeInfo |
Es 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. Es el nombre del campo. El nombre solo debe contener letras (a-z, A-Z), números (0-9) o guiones bajos (_) y debe comenzar con una letra o un guion bajo. La longitud máxima es de 300 caracteres. |
type |
Obligatorio. Es el tipo de datos del campo. Estos son algunos de los valores posibles:
El uso de RECORD/STRUCT indica que el campo contiene un esquema anidado. |
mode |
Es opcional. Es el modo del campo. Los valores posibles incluyen NULLABLE, REQUIRED y REPEATED. El valor predeterminado es NULLABLE. |
fields[] |
Es opcional. Describe los campos del esquema anidado si la propiedad type está configurada como RECORD. |
description |
Es opcional. Es la descripción del campo. La longitud máxima es de 1,024 caracteres. |
policyTags |
Es opcional. Son las etiquetas de política adjuntas a este campo, que se usan para el control de acceso a nivel del campo. Si no se establece, se aplica de forma predeterminada una lista vacía de policy_tags. |
dataPolicies[] |
Es opcional. Son las políticas de datos adjuntas a este campo, que se usan para el control de acceso a nivel del campo. |
nameAlternative[] |
No se debe usar este campo. |
maxLength |
Es opcional. Es la longitud máxima de los valores de este campo para STRING 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 en este campo. Si type = "BYTES", max_length representa la cantidad máxima de bytes en este campo. No es válido establecer este campo si el tipo no es "STRING" ni "BYTES". |
precision |
Es opcional. Restricciones de precisión (cantidad máxima de dígitos totales en base 10) y escala (cantidad máxima de dígitos en la parte fraccionaria en base 10) para los valores de este campo para NUMERIC o BIGNUMERIC. No es válido establecer la precisión o 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 rango de valores en este campo, siempre y cuando el tipo permita los valores. Los valores de este campo NUMERIC o BIGNUMERIC deben estar en este rango en los siguientes casos:
Valores aceptables para la precisión y la escala si se especifican ambos:
Valores aceptables para la precisión si solo se especifica la precisión, pero no la escala (y, por lo tanto, se interpreta que la escala es igual a cero):
Si se especifica la escala, pero no la precisión, el valor no es válido. |
scale |
Es opcional. Consulta la documentación para obtener información sobre la precisión. |
timestampPrecision |
Es opcional. Es la precisión (cantidad máxima de dígitos totales en base 10) para los segundos del tipo TIMESTAMP. Los valores posibles incluyen: * 6 (valor predeterminado para el tipo TIMESTAMP con precisión de microsegundos) * 12 (para el tipo TIMESTAMP con precisión de picosegundos) |
roundingMode |
Es opcional. Especifica el modo de redondeo que se usará cuando se almacenen valores de tipo NUMERIC y BIGNUMERIC. |
collation |
Es opcional. La intercalación de campos solo se puede establecer cuando el tipo de campo es STRING. Se admiten los siguientes valores:
|
defaultValueExpression |
Es opcional. Es una expresión de SQL para especificar el valor predeterminado de este campo. |
rangeElementType |
Es opcional. Es el subtipo de RANGE, si el tipo de este campo es RANGE. Si el tipo es RANGE, este campo es obligatorio. Los valores para el tipo de elemento de campo pueden ser los siguientes:
|
foreignTypeDefinition |
Es opcional. Es la definición del tipo de datos externos. Solo es válido para los campos de esquema de nivel superior (no para los campos anidados). Si el tipo es FOREIGN, este campo es obligatorio. |
| Representación JSON |
|---|
{ "value": string } |
| Campos | |
|---|---|
value |
El valor de string. |
| Representación JSON |
|---|
{ "names": [ string ] } |
| Campos | |
|---|---|
names[] |
Es una lista de nombres de recursos de etiqueta de política. Por ejemplo, "projects/1/locations/eu/taxonomies/2/policyTags/3". Actualmente, se permite como máximo 1 etiqueta de política. |
| Representación JSON |
|---|
{ // Union field |
| Campos | |
|---|---|
Campo de unión
|
|
name |
Es el nombre del 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 |
Es el valor int64. |
| Representación JSON |
|---|
{ "type": string } |
| Campos | |
|---|---|
type |
Obligatorio. Es el tipo de un 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 |
Es un mapa no ordenado de valores escritos de forma dinámica. 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. Es el tipo de valor. kind puede ser solo uno de los parámetros siguientes: |
|
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[] |
Es un campo repetido de valores escritos de forma dinámica. |
| Representación JSON |
|---|
{ "value": boolean } |
| Campos | |
|---|---|
value |
Es el valor booleano. |
| Representación JSON |
|---|
{ "reason": string, "location": string, "debugInfo": string, "message": string } |
| Campos | |
|---|---|
reason |
Es un código de error breve que resume el error. |
location |
Especifica dónde se produjo el error, si está presente. |
debugInfo |
Es información de depuración. Esta propiedad es interna de Google y no se debe usar. |
message |
Es una descripción del error legible por humanos. |
Anotaciones de herramientas
Sugerencia destructiva: ✅ | Sugerencia idempotente: ❌ | Sugerencia de solo lectura: ❌ | Sugerencia de mundo abierto: ✅