Skip to main content
Glama

MCP Toolbox for Databases

by googleapis
Apache 2.0
11,060
  • Linux
looker.yaml33.9 kB
# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. sources: looker-source: kind: looker base_url: ${LOOKER_BASE_URL} client_id: ${LOOKER_CLIENT_ID:} client_secret: ${LOOKER_CLIENT_SECRET:} verify_ssl: ${LOOKER_VERIFY_SSL:true} timeout: 600s use_client_oauth: ${LOOKER_USE_CLIENT_OAUTH:false} show_hidden_models: ${LOOKER_SHOW_HIDDEN_MODELS:true} show_hidden_explores: ${LOOKER_SHOW_HIDDEN_EXPLORES:true} show_hidden_fields: ${LOOKER_SHOW_HIDDEN_FIELDS:true} tools: get_models: kind: looker-get-models source: looker-source description: | The get_models tool retrieves the list of LookML models in the Looker system. It takes no parameters. get_explores: kind: looker-get-explores source: looker-source description: | The get_explores tool retrieves the list of explores defined in a LookML model in the Looker system. It takes one parameter, the model_name looked up from get_models. get_dimensions: kind: looker-get-dimensions source: looker-source description: | The get_dimensions tool retrieves the list of dimensions defined in an explore. It takes two parameters, the model_name looked up from get_models and the explore_name looked up from get_explores. If this returns a suggestions field for a dimension, the contents of suggestions can be used as filters for this field. If this returns a suggest_explore and suggest_dimension, a query against that explore and dimension can be used to find valid filters for this field. get_measures: kind: looker-get-measures source: looker-source description: | The get_measures tool retrieves the list of measures defined in an explore. It takes two parameters, the model_name looked up from get_models and the explore_name looked up from get_explores. If this returns a suggestions field for a measure, the contents of suggestions can be used as filters for this field. If this returns a suggest_explore and suggest_dimension, a query against that explore and dimension can be used to find valid filters for this field. get_filters: kind: looker-get-filters source: looker-source description: | The get_filters tool retrieves the list of filters defined in an explore. It takes two parameters, the model_name looked up from get_models and the explore_name looked up from get_explores. get_parameters: kind: looker-get-parameters source: looker-source description: | The get_parameters tool retrieves the list of parameters defined in an explore. It takes two parameters, the model_name looked up from get_models and the explore_name looked up from get_explores. query: kind: looker-query source: looker-source description: | Query Tool This tool is used to run a query against the LookML model. The model, explore, and fields list must be specified. Pivots, filters and sorts are optional. The model can be found from the get_models tool. The explore can be found from the get_explores tool passing in the model. The fields can be found from the get_dimensions, get_measures, get_filters, and get_parameters tools, passing in the model and the explore. Provide a model_id and explore_name, then a list of fields. Optionally a list of pivots can be provided. The pivots must also be included in the fields list. Filters are provided as a map of {"field.id": "condition", "field.id2": "condition2", ...}. Do not put the field.id in quotes. Filter expressions can be found at https://cloud.google.com/looker/docs/filter-expressions. There is one mistake in that, however, Use `not null` instead of `-NULL`. Sorts can be specified like [ "field.id desc 0" ]. An optional row limit can be added. If not provided the limit will default to 500. "-1" can be specified for unlimited. An optional query timezone can be added. The query_timezone to will default to that of the workstation where this MCP server is running, or Etc/UTC if that can't be determined. Not all models support custom timezones. The result of the query tool is JSON query_sql: kind: looker-query-sql source: looker-source description: | Query SQL Tool This tool is used to generate the SQL that Looker would run against the underlying database. The parameters are the same as the query tool. The result of the query sql tool is SQL text. query_url: kind: looker-query-url source: looker-source description: | Query URL Tool This tool is used to generate the URL of a query in Looker. The user can then explore the query further inside Looker. The tool also returns the query_id and slug. The parameters are the same as the query tool with an additional vis_config parameter. The vis_config is optional. If provided, it will be used to control the default visualization for the query. Here are some notes on making visualizations. ### Cartesian Charts (Area, Bar, Column, Line, Scatter) These chart types share a large number of configuration options. **General** * `type`: The type of visualization (`looker_area`, `looker_bar`, `looker_column`, `looker_line`, `looker_scatter`). * `series_types`: Override the chart type for individual series. * `show_view_names`: Display view names in labels and tooltips (`true`/`false`). * `series_labels`: Provide custom names for series. **Styling & Colors** * `colors`: An array of color values to be used for the chart series. * `series_colors`: A mapping of series names to specific color values. * `color_application`: Advanced controls for color palette application (collection, palette, reverse, etc.). * `font_size`: Font size for labels (e.g., '12px'). **Legend** * `hide_legend`: Show or hide the chart legend (`true`/`false`). * `legend_position`: Placement of the legend (`'center'`, `'left'`, `'right'`). **Axes** * `swap_axes`: Swap the X and Y axes (`true`/`false`). * `x_axis_scale`: Scale of the x-axis (`'auto'`, `'ordinal'`, `'linear'`, `'time'`). * `x_axis_reversed`, `y_axis_reversed`: Reverse the direction of an axis (`true`/`false`). * `x_axis_gridlines`, `y_axis_gridlines`: Display gridlines for an axis (`true`/`false`). * `show_x_axis_label`, `show_y_axis_label`: Show or hide the axis title (`true`/`false`). * `show_x_axis_ticks`, `show_y_axis_ticks`: Show or hide axis tick marks (`true`/`false`). * `x_axis_label`, `y_axis_label`: Set a custom title for an axis. * `x_axis_datetime_label`: A format string for datetime labels on the x-axis (e.g., `'%Y-%m'`). * `x_padding_left`, `x_padding_right`: Adjust padding on the ends of the x-axis. * `x_axis_label_rotation`, `x_axis_label_rotation_bar`: Set rotation for x-axis labels. * `x_axis_zoom`, `y_axis_zoom`: Enable zooming on an axis (`true`/`false`). * `y_axes`: An array of configuration objects for multiple y-axes. **Data & Series** * `stacking`: How to stack series (`''` for none, `'normal'`, `'percent'`). * `ordering`: Order of series in a stack (`'none'`, etc.). * `limit_displayed_rows`: Enable or disable limiting the number of rows displayed (`true`/`false`). * `limit_displayed_rows_values`: Configuration for the row limit (e.g., `{ "first_last": "first", "show_hide": "show", "num_rows": 10 }`). * `discontinuous_nulls`: How to render null values in line charts (`true`/`false`). * `point_style`: Style for points on line and area charts (`'none'`, `'circle'`, `'circle_outline'`). * `series_point_styles`: Override point styles for individual series. * `interpolation`: Line interpolation style (`'linear'`, `'monotone'`, `'step'`, etc.). * `show_value_labels`: Display values on data points (`true`/`false`). * `label_value_format`: A format string for value labels. * `show_totals_labels`: Display total labels on stacked charts (`true`/`false`). * `totals_color`: Color for total labels. * `show_silhouette`: Display a "silhouette" of hidden series in stacked charts (`true`/`false`). * `hidden_series`: An array of series names to hide from the visualization. **Scatter/Bubble Specific** * `size_by_field`: The field used to determine the size of bubbles. * `color_by_field`: The field used to determine the color of bubbles. * `plot_size_by_field`: Whether to display the size-by field in the legend. * `cluster_points`: Group nearby points into clusters (`true`/`false`). * `quadrants_enabled`: Display quadrants on the chart (`true`/`false`). * `quadrant_properties`: Configuration for quadrant labels and colors. * `custom_quadrant_value_x`, `custom_quadrant_value_y`: Set quadrant boundaries as a percentage. * `custom_quadrant_point_x`, `custom_quadrant_point_y`: Set quadrant boundaries to a specific value. **Miscellaneous** * `reference_lines`: Configuration for displaying reference lines. * `trend_lines`: Configuration for displaying trend lines. * `trellis`: Configuration for creating trellis (small multiple) charts. * `crossfilterEnabled`, `crossfilters`: Configuration for cross-filtering interactions. ### Boxplot * Inherits most of the Cartesian chart options. * `type`: Must be `looker_boxplot`. ### Funnel * `type`: Must be `looker_funnel`. * `orientation`: How data is read (`'automatic'`, `'dataInRows'`, `'dataInColumns'`). * `percentType`: How percentages are calculated (`'percentOfMaxValue'`, `'percentOfPriorRow'`). * `labelPosition`, `valuePosition`, `percentPosition`: Placement of labels (`'left'`, `'right'`, `'inline'`, `'hidden'`). * `labelColor`, `labelColorEnabled`: Set a custom color for labels. * `labelOverlap`: Allow labels to overlap (`true`/`false`). * `barColors`: An array of colors for the funnel steps. * `color_application`: Advanced color palette controls. * `crossfilterEnabled`, `crossfilters`: Configuration for cross-filtering. ### Pie / Donut * Pie charts must have exactly one dimension and one numerical measure. * `type`: Must be `looker_pie`. * `value_labels`: Where to display values (`'legend'`, `'labels'`). * `label_type`: The format of data labels (`'labPer'`, `'labVal'`, `'lab'`, `'val'`, `'per'`). * `start_angle`, `end_angle`: The start and end angles of the pie chart. * `inner_radius`: The inner radius, used to create a donut chart. * `series_colors`, `series_labels`: Override colors and labels for specific slices. * `color_application`: Advanced color palette controls. * `crossfilterEnabled`, `crossfilters`: Configuration for cross-filtering. * `advanced_vis_config`: A string containing JSON for advanced Highcharts configuration. ### Waterfall * Inherits most of the Cartesian chart options. * `type`: Must be `looker_waterfall`. * `up_color`: Color for positive (increasing) values. * `down_color`: Color for negative (decreasing) values. * `total_color`: Color for the total bar. ### Word Cloud * `type`: Must be `looker_wordcloud`. * `rotation`: Enable random word rotation (`true`/`false`). * `colors`: An array of colors for the words. * `color_application`: Advanced color palette controls. * `crossfilterEnabled`, `crossfilters`: Configuration for cross-filtering. These are some sample vis_config settings. A bar chart - {{ "defaults_version": 1, "label_density": 25, "legend_position": "center", "limit_displayed_rows": false, "ordering": "none", "plot_size_by_field": false, "point_style": "none", "show_null_labels": false, "show_silhouette": false, "show_totals_labels": false, "show_value_labels": false, "show_view_names": false, "show_x_axis_label": true, "show_x_axis_ticks": true, "show_y_axis_labels": true, "show_y_axis_ticks": true, "stacking": "normal", "totals_color": "#808080", "trellis": "", "type": "looker_bar", "x_axis_gridlines": false, "x_axis_reversed": false, "x_axis_scale": "auto", "x_axis_zoom": true, "y_axis_combined": true, "y_axis_gridlines": true, "y_axis_reversed": false, "y_axis_scale_mode": "linear", "y_axis_tick_density": "default", "y_axis_tick_density_custom": 5, "y_axis_zoom": true }} A column chart with an option advanced_vis_config - {{ "advanced_vis_config": "{ chart: { type: 'pie', spacingBottom: 50, spacingLeft: 50, spacingRight: 50, spacingTop: 50, }, legend: { enabled: false, }, plotOptions: { pie: { dataLabels: { enabled: true, format: '\u003cb\u003e{key}\u003c/b\u003e\u003cspan style=\"font-weight: normal\"\u003e - {percentage:.2f}%\u003c/span\u003e', }, showInLegend: false, }, }, series: [], }", "colors": [ "grey" ], "defaults_version": 1, "hidden_fields": [], "label_density": 25, "legend_position": "center", "limit_displayed_rows": false, "note_display": "below", "note_state": "collapsed", "note_text": "Unsold inventory only", "ordering": "none", "plot_size_by_field": false, "point_style": "none", "series_colors": {}, "show_null_labels": false, "show_silhouette": false, "show_totals_labels": false, "show_value_labels": true, "show_view_names": false, "show_x_axis_label": true, "show_x_axis_ticks": true, "show_y_axis_labels": true, "show_y_axis_ticks": true, "stacking": "normal", "totals_color": "#808080", "trellis": "", "type": "looker_column", "x_axis_gridlines": false, "x_axis_reversed": false, "x_axis_scale": "auto", "x_axis_zoom": true, "y_axes": [], "y_axis_combined": true, "y_axis_gridlines": true, "y_axis_reversed": false, "y_axis_scale_mode": "linear", "y_axis_tick_density": "default", "y_axis_tick_density_custom": 5, "y_axis_zoom": true }} A line chart - {{ "defaults_version": 1, "hidden_pivots": {}, "hidden_series": [], "interpolation": "linear", "label_density": 25, "legend_position": "center", "limit_displayed_rows": false, "plot_size_by_field": false, "point_style": "none", "series_types": {}, "show_null_points": true, "show_value_labels": false, "show_view_names": false, "show_x_axis_label": true, "show_x_axis_ticks": true, "show_y_axis_labels": true, "show_y_axis_ticks": true, "stacking": "", "trellis": "", "type": "looker_line", "x_axis_gridlines": false, "x_axis_reversed": false, "x_axis_scale": "auto", "y_axis_combined": true, "y_axis_gridlines": true, "y_axis_reversed": false, "y_axis_scale_mode": "linear", "y_axis_tick_density": "default", "y_axis_tick_density_custom": 5 }} An area chart - {{ "defaults_version": 1, "interpolation": "linear", "label_density": 25, "legend_position": "center", "limit_displayed_rows": false, "plot_size_by_field": false, "point_style": "none", "series_types": {}, "show_null_points": true, "show_silhouette": false, "show_totals_labels": false, "show_value_labels": false, "show_view_names": false, "show_x_axis_label": true, "show_x_axis_ticks": true, "show_y_axis_labels": true, "show_y_axis_ticks": true, "stacking": "normal", "totals_color": "#808080", "trellis": "", "type": "looker_area", "x_axis_gridlines": false, "x_axis_reversed": false, "x_axis_scale": "auto", "x_axis_zoom": true, "y_axis_combined": true, "y_axis_gridlines": true, "y_axis_reversed": false, "y_axis_scale_mode": "linear", "y_axis_tick_density": "default", "y_axis_tick_density_custom": 5, "y_axis_zoom": true }} A scatter plot - {{ "cluster_points": false, "custom_quadrant_point_x": 5, "custom_quadrant_point_y": 5, "custom_value_label_column": "", "custom_x_column": "", "custom_y_column": "", "defaults_version": 1, "hidden_fields": [], "hidden_pivots": {}, "hidden_points_if_no": [], "hidden_series": [], "interpolation": "linear", "label_density": 25, "legend_position": "center", "limit_displayed_rows": false, "limit_displayed_rows_values": { "first_last": "first", "num_rows": 0, "show_hide": "hide" }, "plot_size_by_field": false, "point_style": "circle", "quadrant_properties": { "0": { "color": "", "label": "Quadrant 1" }, "1": { "color": "", "label": "Quadrant 2" }, "2": { "color": "", "label": "Quadrant 3" }, "3": { "color": "", "label": "Quadrant 4" } }, "quadrants_enabled": false, "series_labels": {}, "series_types": {}, "show_null_points": false, "show_value_labels": false, "show_view_names": true, "show_x_axis_label": true, "show_x_axis_ticks": true, "show_y_axis_labels": true, "show_y_axis_ticks": true, "size_by_field": "roi", "stacking": "normal", "swap_axes": true, "trellis": "", "type": "looker_scatter", "x_axis_gridlines": false, "x_axis_reversed": false, "x_axis_scale": "auto", "x_axis_zoom": true, "y_axes": [ { "label": "", "orientation": "bottom", "series": [ { "axisId": "Channel_0 - average_of_roi_first", "id": "Channel_0 - average_of_roi_first", "name": "Channel_0" }, { "axisId": "Channel_1 - average_of_roi_first", "id": "Channel_1 - average_of_roi_first", "name": "Channel_1" }, { "axisId": "Channel_2 - average_of_roi_first", "id": "Channel_2 - average_of_roi_first", "name": "Channel_2" }, { "axisId": "Channel_3 - average_of_roi_first", "id": "Channel_3 - average_of_roi_first", "name": "Channel_3" }, { "axisId": "Channel_4 - average_of_roi_first", "id": "Channel_4 - average_of_roi_first", "name": "Channel_4" } ], "showLabels": true, "showValues": true, "tickDensity": "custom", "tickDensityCustom": 100, "type": "linear", "unpinAxis": false } ], "y_axis_combined": true, "y_axis_gridlines": true, "y_axis_reversed": false, "y_axis_scale_mode": "linear", "y_axis_tick_density": "default", "y_axis_tick_density_custom": 5, "y_axis_zoom": true }} A single record visualization - {{ "defaults_version": 1, "show_view_names": false, "type": "looker_single_record" }} A single value visualization - {{ "comparison_reverse_colors": false, "comparison_type": "value", "conditional_formatting_include_nulls": false, "conditional_formatting_include_totals": false, "custom_color": "#1A73E8", "custom_color_enabled": true, "defaults_version": 1, "enable_conditional_formatting": false, "series_types": {}, "show_comparison": false, "show_comparison_label": true, "show_single_value_title": true, "single_value_title": "Total Clicks", "type": "single_value" }} A Pie chart - {{ "defaults_version": 1, "label_density": 25, "label_type": "labPer", "legend_position": "center", "limit_displayed_rows": false, "ordering": "none", "plot_size_by_field": false, "point_style": "none", "series_types": {}, "show_null_labels": false, "show_silhouette": false, "show_totals_labels": false, "show_value_labels": false, "show_view_names": false, "show_x_axis_label": true, "show_x_axis_ticks": true, "show_y_axis_labels": true, "show_y_axis_ticks": true, "stacking": "", "totals_color": "#808080", "trellis": "", "type": "looker_pie", "value_labels": "legend", "x_axis_gridlines": false, "x_axis_reversed": false, "x_axis_scale": "auto", "y_axis_combined": true, "y_axis_gridlines": true, "y_axis_reversed": false, "y_axis_scale_mode": "linear", "y_axis_tick_density": "default", "y_axis_tick_density_custom": 5 }} The result is a JSON object with the id, slug, the url, and the long_url. get_looks: kind: looker-get-looks source: looker-source description: | get_looks Tool This tool is used to search for saved looks in a Looker instance. String search params use case-insensitive matching. String search params can contain % and '_' as SQL LIKE pattern match wildcard expressions. example="dan%" will match "danger" and "Danzig" but not "David" example="D_m%" will match "Damage" and "dump". Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match or exclude (respectively) rows where the column is null. The limit and offset are used to paginate the results. The result of the get_looks tool is a list of json objects. run_look: kind: looker-run-look source: looker-source description: | run_look Tool This tool runs the query associated with a look and returns the data in a JSON structure. It accepts the look_id as the parameter. make_look: kind: looker-make-look source: looker-source description: | make_look Tool This tool creates a new look in Looker, using the query parameters and the vis_config specified. Most of the parameters are the same as the query_url tool. In addition, there is a title and a description that must be provided. The newly created look will be created in the user's personal folder in looker. The look name must be unique. The result is a json document with a link to the newly created look. get_dashboards: kind: looker-get-dashboards source: looker-source description: | get_dashboards Tool This tool is used to search for saved dashboards in a Looker instance. String search params use case-insensitive matching. String search params can contain % and '_' as SQL LIKE pattern match wildcard expressions. example="dan%" will match "danger" and "Danzig" but not "David" example="D_m%" will match "Damage" and "dump". Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match or exclude (respectively) rows where the column is null. The limit and offset are used to paginate the results. The result of the get_dashboards tool is a list of json objects. make_dashboard: kind: looker-make-dashboard source: looker-source description: | make_dashboard Tool This tool creates a new dashboard in Looker. The dashboard is initially empty and the add_dashboard_element tool is used to add content to the dashboard. The newly created dashboard will be created in the user's personal folder in looker. The dashboard name must be unique. The result is a json document with a link to the newly created dashboard and the id of the dashboard. Use the id when calling add_dashboard_element. add_dashboard_element: kind: looker-add-dashboard-element source: looker-source description: | add_dashboard_element Tool This tool creates a new tile in a Looker dashboard using the query parameters and the vis_config specified. Most of the parameters are the same as the query_url tool. In addition, there is a title that may be provided. The dashboard_id must be specified. That is obtained from calling make_dashboard. This tool can be called many times for one dashboard_id and the resulting tiles will be added in order. health_pulse: kind: looker-health-pulse source: looker-source description: | health-pulse Tool This tool takes the pulse of a Looker instance by taking one of the following actions: 1. `check_db_connections`, 2. `check_dashboard_performance`, 3. `check_dashboard_errors`, 4. `check_explore_performance`, 5. `check_schedule_failures`, or 6. `check_legacy_features` health_analyze: kind: looker-health-analyze source: looker-source description: | health-analyze Tool This tool calculates the usage of projects, models and explores. It accepts 6 parameters: 1. `action`: can be "projects", "models", or "explores" 2. `project`: the project to analyze (optional) 3. `model`: the model to analyze (optional) 4. `explore`: the explore to analyze (optional) 5. `timeframe`: the lookback period in days, default is 90 6. `min_queries`: the minimum number of queries to consider a resource as active, default is 1 health_vacuum: kind: looker-health-vacuum source: looker-source description: | health-vacuum Tool This tool suggests models or explores that can removed because they are unused. It accepts 6 parameters: 1. `action`: can be "models" or "explores" 2. `project`: the project to vacuum (optional) 3. `model`: the model to vacuum (optional) 4. `explore`: the explore to vacuum (optional) 5. `timeframe`: the lookback period in days, default is 90 6. `min_queries`: the minimum number of queries to consider a resource as active, default is 1 The result is a list of objects that are candidates for deletion. dev_mode: kind: looker-dev-mode source: looker-source description: | dev_mode Tool Passing true to this tool switches the session to dev mode. Passing false to this tool switches the session to production mode. get_projects: kind: looker-get-projects source: looker-source description: | get_projects Tool This tool returns the project_id and project_name for all the LookML projects on the looker instance. get_project_files: kind: looker-get-project-files source: looker-source description: | get_project_files Tool Given a project_id this tool returns the details about the LookML files that make up that project. get_project_file: kind: looker-get-project-file source: looker-source description: | get_project_file Tool Given a project_id and a file path within the project, this tool returns the contents of the LookML file. create_project_file: kind: looker-create-project-file source: looker-source description: | create_project_file Tool Given a project_id and a file path within the project, as well as the content of a LookML file, this tool will create a new file within the project. This tool must be called after the dev_mode tool has changed the session to dev mode. update_project_file: kind: looker-update-project-file source: looker-source description: | update_project_file Tool Given a project_id and a file path within the project, as well as the content of a LookML file, this tool will modify the file within the project. This tool must be called after the dev_mode tool has changed the session to dev mode. delete_project_file: kind: looker-delete-project-file source: looker-source description: | delete_project_file Tool Given a project_id and a file path within the project, this tool will delete the file from the project. This tool must be called after the dev_mode tool has changed the session to dev mode. toolsets: looker_tools: - get_models - get_explores - get_dimensions - get_measures - get_filters - get_parameters - query - query_sql - query_url - get_looks - run_look - make_look - get_dashboards - make_dashboard - add_dashboard_element - health_pulse - health_analyze - health_vacuum - dev_mode - get_projects - get_project_files - get_project_file - create_project_file - update_project_file - delete_project_file

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/googleapis/genai-toolbox'

If you have feedback or need assistance with the MCP directory API, please join our Discord server