名称: googlebigquery-automation 描述: “通过 Rube MCP (Composio) 自动化 Google BigQuery 任务:运行 SQL 查询、探索数据集和元数据、通过 Metabase 集成执行 MBQL 查询。始终先搜索工具以获取当前模式。” 要求: mcp: [rube]
通过 Rube MCP 实现 Google BigQuery 自动化
通过 Rube MCP (Composio) 运行 SQL 查询、探索数据库模式,并通过 Metabase 集成分析数据集。
工具包文档: composio.dev/toolkits/googlebigquery
前提条件
- Rube MCP 必须已连接(RUBE_SEARCH_TOOLS 可用)
- 通过
RUBE_MANAGE_CONNECTIONS建立 toolkitmetabase的活跃连接 - 连接到您的 BigQuery 数据源的 Metabase 实例
- 始终先调用
RUBE_SEARCH_TOOLS以获取当前工具模式
设置
获取 Rube MCP: 在客户端配置中将 https://rube.app/mcp 添加为 MCP 服务器。无需 API 密钥 — 只需添加端点即可工作。
- 通过确认
RUBE_SEARCH_TOOLS响应来验证 Rube MCP 是否可用 - 使用 toolkit
metabase调用RUBE_MANAGE_CONNECTIONS - 如果连接未处于活跃状态,请遵循返回的身份验证链接完成设置
- 在运行任何工作流之前,确认连接状态显示为活跃
注意: BigQuery 数据通过 Metabase 访问,Metabase 是一个商业智能工具,将 BigQuery 作为数据源连接。以下工具通过 Metabase 的 API 执行查询并检索元数据。
核心工作流
1. 运行原生 SQL 查询
使用 METABASE_POST_API_DATASET 和 type native 来针对您的 BigQuery 数据库执行原始 SQL 查询。
工具: METABASE_POST_API_DATASET
参数:
- database (必需): Metabase 数据库 ID (整数)
- type (必需): "native" 用于 SQL 查询
- native (必需): 包含 "query" 字符串的对象
- query: 原始 SQL 字符串 (例如,"SELECT * FROM users LIMIT 10")
- template_tags: 参数化查询变量 (可选)
- constraints: { "max-results": 1000 } (可选)
2. 运行结构化 MBQL 查询
使用 METABASE_POST_API_DATASET 和 type query 来执行具有内置聚合和过滤功能的 Metabase 查询语言查询。
工具: METABASE_POST_API_DATASET
参数:
- database (必需): Metabase 数据库 ID
- type (必需): "query" 用于 MBQL
- query (必需): 包含以下内容的对象:
- source-table: 表 ID (整数)
- aggregation: 例如,[["count"]] 或 [["sum", ["field", 5, null]]]
- breakout: 分组字段
- filter: 过滤条件
- limit: 最大行数
- order-by: 排序字段
3. 获取查询元数据
使用 METABASE_POST_API_DATASET_QUERY_METADATA 来检索可用于查询的数据库、表和字段的元数据。
工具: METABASE_POST_API_DATASET_QUERY_METADATA
参数:
- database (必需): Metabase 数据库 ID
- type (必需): "query" 或 "native"
- query (必需): 查询对象 (例如,{"source-table": 1})
4. 将查询转换为原生 SQL
使用 METABASE_POST_API_DATASET_NATIVE 将 MBQL 查询转换为其原生 SQL 表示形式。
工具: METABASE_POST_API_DATASET_NATIVE
参数:
- database (必需): Metabase 数据库 ID
- type (必需): "native"
- native (必需): 包含 "query" 和可选 "template_tags" 的对象
- parameters: 查询参数值 (可选)
5. 列出可用数据库
使用 METABASE_GET_API_DATABASE 来发现 Metabase 中配置的所有数据库连接。
工具: METABASE_GET_API_DATABASE
描述: 检索 Metabase 中配置的所有 Database 实例的列表。
注意: 调用 RUBE_SEARCH_TOOLS 以获取此工具的完整模式。
6. 获取数据库模式元数据
使用 METABASE_GET_API_DATABASE_ID_METADATA 来检索特定数据库的完整表和字段信息。
工具: METABASE_GET_API_DATABASE_ID_METADATA
描述: 检索特定数据库的完整元数据,包括所有表和字段。
注意: 调用 RUBE_SEARCH_TOOLS 以获取此工具的完整模式。
常见模式
- 先发现再查询: 使用
METABASE_GET_API_DATABASE查找数据库 ID,然后使用METABASE_GET_API_DATABASE_ID_METADATA探索表和字段,然后使用METABASE_POST_API_DATASET运行查询。 - SQL 优先方法: 使用
METABASE_POST_API_DATASET和type: "native"并编写标准 SQL 查询以获得最大灵活性。 - 参数化查询: 在原生查询中使用
template_tags进行安全参数化(例如,SELECT * FROM users WHERE id = {{user_id}})。 - 模式探索: 在构建复杂查询之前,使用
METABASE_POST_API_DATASET_QUERY_METADATA来了解表结构。 - 获取参数值: 使用
METABASE_POST_API_DATASET_PARAMETER_VALUES来检索过滤器下拉列表的可能值。
已知陷阱
database参数是 Metabase 内部的 整数 ID,而不是 BigQuery 项目或数据集名称。首先使用METABASE_GET_API_DATABASE查找有效的数据库 ID。- MBQL 查询中的
source-table也是 Metabase 内部的整数,而不是 BigQuery 表名。通过元数据工具发现表 ID。 - 原生 SQL 查询使用 BigQuery SQL 方言(标准 SQL)。确保语法与 BigQuery 兼容。
- 约束中的
max-results默认值可以限制返回的行数。对于大型结果集,请显式设置。 - 来自
METABASE_POST_API_DATASET的响应包含嵌套在data下的结果 — 仔细解析,因为结构可能深度嵌套。 - MBQL
aggregation、breakout和filter数组中使用的 Metabase 字段 ID 必须是从元数据响应中获得的整数。
快速参考
| 操作 | 工具 | 关键参数 |
|---|---|---|
| 运行 SQL 查询 | METABASE_POST_API_DATASET |
database, type: "native", native.query |
| 运行 MBQL 查询 | METABASE_POST_API_DATASET |
database, type: "query", query |
| 获取查询元数据 | METABASE_POST_API_DATASET_QUERY_METADATA |
database, type, query |
| 转换为 SQL | METABASE_POST_API_DATASET_NATIVE |
database, type, native |
| 获取参数值 | METABASE_POST_API_DATASET_PARAMETER_VALUES |
parameter, field_ids |
| 列出数据库 | METABASE_GET_API_DATABASE |
(通过 RUBE_SEARCH_TOOLS 查看完整模式) |
| 获取数据库元数据 | METABASE_GET_API_DATABASE_ID_METADATA |
(通过 RUBE_SEARCH_TOOLS 查看完整模式) |
由 Composio 提供支持