looker-query

“looker-query” runs an inline query using the Looker semantic model.

About

The looker-query tool runs a query using the Looker semantic model.

looker-query takes ten parameters:

  1. the model
  2. the explore
  3. the fields list
  4. an optional set of filters
  5. an optional filter_expression
  6. an optional dynamic_fields
  7. an optional set of pivots
  8. an optional set of sorts
  9. an optional limit
  10. an optional tz

Starting in Looker v25.18, these queries can be identified in Looker’s System Activity. In the History explore, use the field API Client Name to find MCP Toolbox queries.

Compatible Sources

This tool can be used with the following database sources:

Source Name
Looker Source

Example

kind: tool
name: query
type: looker-query
source: looker-source
description: |
  This tool runs a query against a LookML model and returns the results in JSON format.

  Required Parameters:
  - model_name: The name of the LookML model (from `get_models`).
  - explore_name: The name of the explore (from `get_explores`).
  - fields: A list of field names (dimensions, measures, filters, or parameters) to include in the query.

  Optional Parameters:
  - pivots: A list of fields to pivot the results by. These fields must also be included in the `fields` list.
  - filters: A map of filter expressions, e.g., `{"view.field": "value", "view.date": "7 days"}`.
    - Do not quote field names.
    - Use `not null` instead of `-NULL`.
    - If a value contains a comma, enclose it in single quotes (e.g., "'New York, NY'").
  - filter_expression: A Looker expression filter string (custom filter). This allows complex logic and comparing fields.
    - Reference fields using `${view.field_name}` syntax.
    - Supports logical operators (`AND`, `OR`, `NOT`) and comparison operators.
    - Supports Looker functions (e.g., `matches_filter`, `now`, `add_days`, `diff_days`).
    - Examples:
      - `${orders.order_date} < add_years(-1, now())`
      - `${activity.email} != ${activity_drive_facts.current_owner_email}`
      - `matches_filter(${order.order_month}, '24 months') AND matches_filter(${order.order_month}, 'before 2024/07/01')`
  - dynamic_fields: An optional array of dynamic fields (table calculations, custom measures, custom dimensions) defined as JSON objects.
    - Useful for ad-hoc calculations that are not defined in the LookML model.
    - Reference fields using `${view.field_name}` syntax.
    - Examples:
      - Table Calculation: `[{"table_calculation": "test", "label": "test", "expression": "${order_items.total_sale_price} * 0.8", "_type_hint": "number"}]`
      - Custom Dimension: `[{"dimension": "days_since_order", "label": "days since order", "expression": "diff_days(${order.order_date}, now())", "_type_hint": "number"}]`
      - Custom Measure: `[{"measure": "sum_of_revenue", "label": "Sum of Revenue", "based_on": "training.revenue", "type": "sum", "_type_hint": "number"}]`
  - sorts: A list of fields to sort by, optionally including direction (e.g., `["view.field desc"]`).
  - limit: Row limit (default 500). Use "-1" for unlimited.
  - query_timezone: specific timezone for the query (e.g. `America/Los_Angeles`).

  Note: Use `get_dimensions`, `get_measures`, `get_filters`, and `get_parameters` to find valid fields.

  The result of the query tool is JSON

Reference

fieldtyperequireddescription
typestringtrueMust be “looker-query”
sourcestringtrueName of the source the SQL should execute on.
descriptionstringtrueDescription of the tool that is passed to the LLM.