MCP Tools Reference: bigquery.googleapis.com

工具:execute_sql_readonly

在项目中运行只读 SQL 查询并返回结果。如果可能,请优先使用此工具,而不是 execute_sql

此工具仅限使用 SELECT 语句。不允许使用 INSERTUPDATEDELETE 语句以及存储过程。如果查询不包含 SELECT 语句,则系统会返回错误。如需了解如何创建查询,请参阅 GoogleSQL 文档

使用 execute_sql_readonly 工具执行的查询将自动设置作业标签 goog-mcp-server: true。查询费用会记入 project_id 字段中指定的项目。

以下示例演示了如何使用 curl 调用 execute_sql_readonly MCP 工具。

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_readonly",
    "arguments": {
      // provide these details according to the tool's MCP specification
    }
  },
  "jsonrpc": "2.0",
  "id": 1
}'
                

输入架构

同步运行 BigQuery SQL 查询,并在该查询于指定的超时时限内完成的情况下返回查询结果。

QueryRequest

JSON 表示法
{
  "projectId": string,
  "query": string,
  "dryRun": boolean
}
字段
projectId

string

必需。将用于查询执行和结算的项目。

query

string

必需。要执行的查询,采用 GoogleSQL 查询的形式。

dryRun

boolean

可选。如果设置为 true,则 BigQuery 不会运行作业。但是,如果查询有效,BigQuery 会返回有关作业的统计信息,例如将要处理多少字节。如果查询无效,则系统会返回错误。默认值为 false。

输出架构

针对 BigQuery SQL 查询的响应。

QueryResponse

JSON 表示法
{
  "schema": {
    object (TableSchema)
  },
  "rows": [
    {
      object
    }
  ],
  "jobComplete": boolean,
  "errors": [
    {
      object (ErrorProto)
    }
  ],
  "queryId": string,
  "totalBytesBilled": string,
  "totalSlotMs": string,
  "numDmlAffectedRows": string,
  "totalBytesProcessed": string
}
字段
schema

object (TableSchema)

结果的架构。仅当查询成功完成时存在。

rows[]

object (Struct format)

一个对象,其中包含的结果数量不超过允许的回复大小上限。如需获取任何其他行,您可以调用 GetQueryResults 并指定上面返回的 jobReference。

jobComplete

boolean

查询是否已完成。 如果存在 rows 或 totalRows,则此值始终为 true。如果此值为 false,则 totalRows 将不可用。

errors[]

object (ErrorProto)

仅限输出。作业运行期间遇到的前几个错误或警告。最终消息包含导致进程停止的错误数量。此处的错误并不一定意味着作业已完成或未成功。如需详细了解错误消息,请参阅错误消息

queryId

string

仅限输出。查询的 ID。

totalBytesBilled

string (Int64Value format)

仅限输出。查询的计费字节总数。仅当项目配置为使用按需价格时适用。

totalSlotMs

string (Int64Value format)

仅限输出。用户实际付费的 slot-ms 数。

numDmlAffectedRows

string (Int64Value format)

仅限输出。受 DML 语句影响的行数。

totalBytesProcessed

string (Int64Value format)

仅限输出。此查询处理的字节总数。

TableSchema

JSON 表示法
{
  "fields": [
    {
      object (TableFieldSchema)
    }
  ],
  "foreignTypeInfo": {
    object (ForeignTypeInfo)
  }
}
字段
fields[]

object (TableFieldSchema)

描述表格中的字段。

foreignTypeInfo

object (ForeignTypeInfo)

可选。指定字段架构中外部数据类型定义的元数据 (TableFieldSchema.foreign_type_definition)。

TableFieldSchema

JSON 表示法
{
  "name": string,
  "type": string,
  "mode": string,
  "fields": [
    {
      object (TableFieldSchema)
    }
  ],
  "description": string,
  "policyTags": {
    object (PolicyTagList)
  },
  "dataPolicies": [
    {
      object (DataPolicyOption)
    }
  ],
  "maxLength": string,
  "precision": string,
  "scale": string,
  "timestampPrecision": string,
  "roundingMode": enum (RoundingMode),
  "collation": string,
  "defaultValueExpression": string,
  "rangeElementType": {
    object (FieldElementType)
  },
  "foreignTypeDefinition": string,
  "generatedColumn": {
    object (GeneratedColumn)
  }
}
字段
name

string

必需。字段名称。 名称只能包含字母(a-z、A-Z)、数字 (0-9) 或下划线 (_),并且必须以字母或下划线开头。长度上限为 300 个字符。

type

string

必需。字段数据类型。可能的值包括:

  • STRING
  • BYTES
  • INTEGER(或 INT64)
  • FLOAT(或 FLOAT64)
  • BOOLEAN(或 BOOL)
  • TIMESTAMP
  • DATE
  • 时间
  • DATETIME
  • GEOGRAPHY
  • NUMERIC
  • BIGNUMERIC
  • JSON
  • RECORD(或 STRUCT)
  • RANGE

使用 RECORD/STRUCT 表示该字段包含嵌套架构。

mode

string

可选。字段模式。可能的值包括 NULLABLE、REQUIRED 和 REPEATED。默认值为 NULLABLE。

fields[]

object (TableFieldSchema)

可选。如果类型属性设置为 RECORD,则描述嵌套的架构字段。

description

string

可选。字段说明。最大长度为 1,024 个字符。

policyTags

object (PolicyTagList)

可选。附加到此字段的政策标记,用于字段级访问权限控制。如果未设置,则默认为空 policy_tags。

dataPolicies[]

object (DataPolicyOption)

可选。附加到此字段的数据政策,用于字段级访问权限控制。

maxLength

string (int64 format)

可选。此字段针对 STRINGS 或 BYTES 的值的长度上限。

如果未指定 max_length,则此字段不受长度上限限制。

如果类型 =“STRING”,则 max_length 表示此字段中字符串的 UTF-8 长度上限。

如果类型 =“BYTES”,则 max_length 表示此字段中的字节数上限。

如果类型 ≠“STRING”且 ≠“BYTES”,则设置此字段无效。

precision

string (int64 format)

可选。此字段针对 NUMERIC 或 BIGNUMERIC 的值的精度(以 10 为底的总位数上限)和标度(以 10 为底的小数部分位数上限)限制。

如果类型 ≠“NUMERIC”且 ≠“BIGNUMERIC”,则设置精度或标度无效。

如果未指定精度和标度,则此字段没有任何值范围限制,只要相应类型允许值即可。

当出现以下情况时,相应 NUMERIC 或 BIGNUMERIC 字段的值必须在此范围内:

  • 指定了精度 (P) 和标度 (S):[-10P-S + 10-S, 10P-S - 10-S]
  • 指定了精度 (P),但未指定标度(因此标度被解读为等于零):[-10P + 1, 10P - 1]。

如果同时指定了精度和标度,则可接受的值如下:

  • 如果类型 =“NUMERIC”:1 ≤ 精度 - 标度 ≤ 29 且 0 ≤ 标度 ≤ 9。
  • 如果类型 =“BIGNUMERIC”:1 ≤ 精度 - 标度 ≤ 38 且 0 ≤ 标度 ≤ 38。

如果仅指定了精度,而未指定标度(因此标度被解读为等于零),则可接受的值如下:

  • 如果类型 =“NUMERIC”:1 ≤ 精度 ≤ 29。
  • 如果类型 =“BIGNUMERIC”:1 ≤ 精度 ≤ 38。

如果指定了标度,但未指定精度,则无效。

scale

string (int64 format)

可选。如需了解精度,请参阅文档。

timestampPrecision

string (Int64Value format)

可选。TIMESTAMP 类型的秒精度(以 10 为底的总位数上限)。

可能的值包括:* 6(默认值,适用于精确到微秒的 TIMESTAMP 类型)* 12(适用于精确到皮秒的 TIMESTAMP 类型)

roundingMode

enum (RoundingMode)

可选。指定存储 NUMERIC 和 BIGNUMERIC 类型的值时要使用的舍入模式。

collation

string

可选。只有当字段的类型为 STRING 时,才能设置字段排序规则。支持以下值:

  • 'und:ci':未确定的语言区域,不区分大小写。
  • '':空字符串。默认为区分大小写行为。
defaultValueExpression

string

可选。用于指定此字段的默认值的 SQL 表达式。

rangeElementType

object (FieldElementType)

可选。如果此字段的类型为 RANGE,则为 RANGE 的子类型。如果类型为 RANGE,则此字段是必需的。字段元素类型的值可以如下:

  • DATE
  • DATETIME
  • TIMESTAMP
foreignTypeDefinition

string

可选。外部数据类型的定义。仅对顶级架构字段(而非嵌套字段)有效。如果类型为 FOREIGN,则此字段是必需的。

generatedColumn

object (GeneratedColumn)

可选。有关如何为字段生成值的定义。仅对顶级架构字段(而非嵌套字段)有效。

StringValue

JSON 表示法
{
  "value": string
}
字段
value

string

字符串值。

PolicyTagList

JSON 表示法
{
  "names": [
    string
  ]
}
字段
names[]

string

政策标记资源名称的列表。例如,“projects/1/locations/eu/taxonomies/2/policyTags/3”。目前最多允许 1 个政策标记。

DataPolicyOption

JSON 表示法
{

  // Union field _name can be only one of the following:
  "name": string
  // End of list of possible types for union field _name.
}
字段

联合字段 _name

_name 只能是下列其中一项:

name

string

数据政策资源名称,格式为 projects/project_id/locations/location_id/dataPolicies/data_policy_id。

Int64Value

JSON 表示法
{
  "value": string
}
字段
value

string (int64 format)

int64 值。

FieldElementType

JSON 表示法
{
  "type": string
}
字段
type

string

必需。字段元素的类型。如需了解详情,请参阅TableFieldSchema.type

GeneratedColumn

JSON 表示法
{

  // Union field _generated_mode can be only one of the following:
  "generatedMode": enum (GeneratedMode)
  // End of list of possible types for union field _generated_mode.

  // Union field definition can be only one of the following:
  "generatedExpressionInfo": {
    object (GeneratedExpressionInfo)
  }
  // End of list of possible types for union field definition.
}
字段

联合字段 _generated_mode

_generated_mode 只能是下列其中一项:

generatedMode

enum (GeneratedMode)

可选。用于指定何时使用系统生成的值来填充相应字段。

联合字段 definition

definition 只能是下列其中一项:

generatedExpressionInfo

object (GeneratedExpressionInfo)

用于生成相应字段的表达式的定义。

GeneratedExpressionInfo

JSON 表示法
{

  // Union field _generation_expression can be only one of the following:
  "generationExpression": string
  // End of list of possible types for union field _generation_expression.

  // Union field _asynchronous can be only one of the following:
  "asynchronous": boolean
  // End of list of possible types for union field _asynchronous.

  // Union field _stored can be only one of the following:
  "stored": boolean
  // End of list of possible types for union field _stored.
}
字段

联合字段 _generation_expression

_generation_expression 只能是下列其中一项:

generationExpression

string

可选。用于生成相应字段的生成表达式(例如 AI.EMBED(...))。

联合字段 _asynchronous

_asynchronous 只能是下列其中一项:

asynchronous

boolean

可选。列生成是否异步完成。

联合字段 _stored

_stored 只能是下列其中一项:

stored

boolean

可选。生成的列是否存储在表中。

ForeignTypeInfo

JSON 表示法
{
  "typeSystem": enum (TypeSystem)
}
字段
typeSystem

enum (TypeSystem)

必需。指定定义外部数据类型的系统。

结构体

JSON 表示法
{
  "fields": {
    string: value,
    ...
  }
}
字段
fields

map (key: string, value: value (Value format))

无序的动态类型值映射。

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

FieldsEntry

JSON 表示法
{
  "key": string,
  "value": value
}
字段
key

string

value

value (Value format)

JSON 表示法
{

  // Union field kind can be only one of the following:
  "nullValue": null,
  "numberValue": number,
  "stringValue": string,
  "boolValue": boolean,
  "structValue": {
    object
  },
  "listValue": array
  // End of list of possible types for union field kind.
}
字段
联合字段 kind。值的类型。kind 只能是下列其中一项:
nullValue

null

表示 JSON null

numberValue

number

表示 JSON 数值。不得为 NaNInfinity-Infinity,因为 JSON 不支持这些值。由于 JSON 格式通常不支持其数字类型中的大型 Int64 值,因此这种格式也无法表示大型 Int64 值。

stringValue

string

表示 JSON 字符串。

boolValue

boolean

表示 JSON 布尔值(JSON 中的 truefalse 字面量)。

structValue

object (Struct format)

表示 JSON 对象。

listValue

array (ListValue format)

表示 JSON 数组。

ListValue

JSON 表示法
{
  "values": [
    value
  ]
}
字段
values[]

value (Value format)

动态类型值的重复字段。

BoolValue

JSON 表示法
{
  "value": boolean
}
字段
value

boolean

布尔值。

ErrorProto

JSON 表示法
{
  "reason": string,
  "location": string,
  "debugInfo": string,
  "message": string
}
字段
reason

string

简短的错误代码,用于总结错误。

location

string

指定发生错误的位置(如果存在)。

debugInfo

string

调试信息。此属性是 Google 内部属性,不应使用。

message

string

人类可读的错误说明。

工具注释

破坏性提示:❌ | 等幂性提示:✅ | 只读提示:✅ | 开放世界提示:❌