ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

MCP Toolbox 中 looker-get-dashboard 工具详解:按 ID 检索 Looker 仪表盘 JSON 设计

MCP Toolbox 中 looker-get-dashboard 工具详解:按 ID 检索 Looker 仪表盘 JSON 设计 MCP Toolbox 中 looker-get-dashboard 工具详解按 ID 检索 Looker 仪表盘 JSON 设计【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox导读looker-get-dashboard是 MCP Toolbox for Databases开源 MCP 数据库服务器为 Looker 集成提供的一款只读工具它通过dashboard_id检索指定 Looker 仪表盘的 JSON 设计design并主动裁剪掉 alerts、scheduled plans 等冗余字段只保留复制与结构分析所需的必要信息。读完本文你将掌握如何在 MCP Toolbox 的 YAML 配置中声明该工具、理解它返回哪些字段、它与get_dashboards、run_dashboard的分工以及它在源码层的实现与测试验证方式。工具概览looker-get-dashboard的核心能力是根据仪表盘的唯一标识dashboard_id获取该仪表盘的 JSON 设计。与直接调用 Looker API 返回的完整对象不同MCP Toolbox 在实现中显式指定了要取回的字段集合输出被裁剪为与仪表盘结构与内容直接相关的必要字段排除 alerts告警与 scheduled plans计划任务这类与仪表盘“骨架”无关的配置因此输出体积更小、语义更聚焦适合用于复制仪表盘结构读取现有仪表盘的布局、过滤器和元素定义作为新建仪表盘配合make_dashboard、add_dashboard_element、add_dashboard_filter的蓝图分析仪表盘结构供 LLM/Agent 理解一个仪表盘由哪些 tile元素、过滤器、布局Tab构成进而给出数据与分析层面的解读。该工具的定位在 looker-get-dashboard.md 中有明确说明并在 looker.yaml 预构建配置中提供了可直接使用的定义。与其他 Looker 仪表盘工具的分工在使用looker-get-dashboard之前建议先厘清它与 Looker 工具集中其他仪表盘相关工具的差异避免在 Agent 工作流中选错工具工具类型作用looker-get-dashboards搜索按 title、folder_id、user_id、id 等条件搜索仪表盘列表返回一批仪表盘的摘要信息用于“发现”目标仪表盘及其idlooker-get-dashboard读取结构按单个dashboard_id返回仪表盘的完整 JSON设计结构用于分析与复制looker-run-dashboard运行按dashboard_id执行该仪表盘所有 tile 的查询并返回聚合数据用于获取数据结果looker-make-dashboard创建新建空仪表盘返回新的dashboard_id从源码看三者的参数都围绕dashboard_id展开looker-get-dashboard的Initialize中只注册了一个必填参数dashboard_id见 lookergetdashboard.go而集成测试也验证了该参数在工具 Manifest 中的声明为string类型且required: true见 looker_integration_test.go。一个典型的 Agent 工作流是先用get_dashboards搜索到目标仪表盘的dashboard_id再用get_dashboard读取其结构做分析需要数据时再调用run_dashboard取数。在 MCP Toolbox 中声明该工具looker-get-dashboard属于 Looker 集成下的工具使用前需要先配置一个type: looker的 source然后在工具配置中通过type: looker-get-dashboard声明。以下是来自 looker-get-dashboard.md 的完整工具配置示例kind: tool name: get_dashboard type: looker-get-dashboard source: looker-source description: | This tool retrieves the JSON design of a Looker dashboard by its ID. The output is trimmed to essential fields, excluding alerts and scheduled plans, making it suitable for replicating or analyzing the dashboard structure. Parameters: - dashboard_id (required): The unique identifier of the dashboard.其中各顶层字段的含义如下Reference 表格fieldtyperequireddescriptiontypestringtrueMust be looker-get-dashboard.sourcestringtrueName of the Looker source.descriptionstringtrueDescription of the tool that is passed to the LLM.几点说明name是工具在 MCP 命名空间中的调用名示例中使用get_dashboard可自定义type必须严格等于looker-get-dashboard这是注册到工具注册表中的资源类型标识source必须指向一个已配置的type: lookersourcedescription会被原样传递给 LLM体现在工具 Manifest 的 description 中因此应写清楚工具用途与参数帮助模型正确选择与调用配置解析对未知字段是严格拒绝的lookergetdashboard_test.go中的TestFailParseFromYaml验证了在配置中混入method: GOT会解析失败并报错unknown field method见 lookergetdashboard_test.go。运行时参数该工具在调用阶段只接受一个参数参数类型必填说明dashboard_idstring是要检索的 Looker 仪表盘的唯一标识ID在源码中该参数通过参数注册机制声明为“The id of the dashboard to retrieve.”见 lookergetdashboard.go并在Invoke阶段从参数映射中取出若缺失或类型错误会返回 Agent 级错误dashboard_id parameter missing or invalid。dashboard_id通常来自get_dashboards的搜索结果或make_dashboard创建后的返回值。源码实现字段裁剪与 SDK 调用链深入 lookergetdashboard.go可以看到“裁剪输出”的实现方式并非在返回后过滤而是在请求阶段通过 Looker SDK v4 的DashboardAPI 的fields参数显式指定要取回的子字段让服务端直接返回精简对象fields : strings.Join([]string{ id, title, description, view_count, dashboard_filters(id,name,title,type,default_value,model,explore,dimension,row,listens_to_filters,required), dashboard_layouts(id,label,active,type,dashboard_layout_components(id,dashboard_element_id,row,column,width,height,granular_row,granular_column,granular_width,granular_height)), dashboard_elements(id,title,type,query,result_maker,look_id,body_text,subtitle_text,title_text), }, ,) dashboard, err : sdk.Dashboard(dashboardId, fields, source.LookerApiSettings())各字段组对应的含义顶层字段id仪表盘 ID、title标题、description描述、view_count浏览次数用于识别与概述仪表盘dashboard_filters仪表盘级过滤器取回id、name、title、type、default_value默认值、model、explore、dimension、row、listens_to_filters、required即过滤器的完整“配置面”dashboard_layouts仪表盘布局现代 Looker 中通常对应 Tab嵌套取回id、label、active、type以及dashboard_layout_components中每个组件的id、dashboard_element_id、row、column、width、height及细粒度位置参数granular_row、granular_column、granular_width、granular_height描述 tile 在网格中的摆放dashboard_elements仪表盘元素tile取回id、title、type、query查询定义、result_maker、look_id、body_text、subtitle_text、title_text即每个 tile 的数据来源与渲染文本。这正是文档中“The output is trimmed to essential fields, excluding alerts and scheduled plans”的底层机制——alerts、scheduled_plans等字段没有被请求因此不会出现在响应中。调用链上Invoke先从 source 获取 Looker SDK 实例source.GetLookerSDK再通过该 SDK 调用Dashboard接口并透传source.LookerApiSettings()base_url、API 版本 4.0、SSL 校验、超时、client_id/client_secret 等运行时设置见 looker.go。错误处理方面若响应包含status401会被转换为401 Unauthorized的客户端错误其他错误则走统一的ProcessGeneralError处理。只读语义与客户端授权该工具本质是只读操作Initialize中默认使用tools.NewReadOnlyAnnotations注册只读注解ReadOnlyHint true且lookergetdashboard_test.go的TestAnnotations验证了该注解在 Manifest 中可见见 lookergetdashboard_test.go。对 MCP 客户端而言这意味着调用该工具不会产生任何写操作可安全地用于结构探索。同时工具实现了RequiresClientAuthorization与GetAuthTokenHeaderName将决策委托给 source当 Looker source 配置了use_client_oauth: true时会透传客户端的 OAuth access token默认从Authorization头获取也可通过use_client_oauth指定自定义头名若use_client_oauth为 false默认则使用 source 配置的client_id/client_secret建立 API 会话。两种认证模式的具体逻辑见 looker.go 与 looker.go。Looker source 的前置配置要让looker-get-dashboard可用需要先在配置中声明对应的 Looker source参考 source.mdkind: source name: looker-source type: 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}关键字段说明fieldtyperequireddescriptiontypestringtrue必须为lookerbase_urlstringtrueLooker 服务器地址不要带尾部/本地部署有时需带 API 端口如https://looker.example.com:19999client_idstringfalseLooker 服务器分配的客户端 ID使用客户端 OAuth 时不需要client_secretstringfalseLooker 服务器分配的客户端密钥使用客户端 OAuth 时不需要verify_sslstringfalse是否校验服务器 SSL 证书默认 true仅在使用自签名证书时才设为 falsetimeoutstringfalse查询执行的最大等待时间如30s、2m默认600suse_client_oauthstringfalse为true时透传客户端 OAuth access token默认Authorization头也可传自定义头名空字符串或false禁用默认禁用show_hidden_models / show_hidden_explores / show_hidden_fieldsstringfalse是否展示隐藏的 model/explore/field默认均为 true注意当use_client_oauth为 false 时client_id与client_secret必须提供否则 source 初始化会失败初始化过程中 SDK 会调用Me接口做登录校验见 looker.go。推荐使用${ENV_NAME}环境变量占位替换敏感信息避免把密钥硬编码进配置文件。使用预构建配置快速启用如果不想手写工具配置MCP Toolbox 提供了 Looker 预构建配置可通过 CLI 的--prebuilt参数启用详见 prebuilt-configs/looker.md--prebuilt取值looker需要设置的环境变量LOOKER_BASE_URL、LOOKER_CLIENT_ID、LOOKER_CLIENT_SECRET、LOOKER_VERIFY_SSL、LOOKER_USE_CLIENT_OAUTH、LOOKER_SHOW_HIDDEN_MODELS、LOOKER_SHOW_HIDDEN_EXPLORES、LOOKER_SHOW_HIDDEN_FIELDS前提需要一个具备访问目标 model、explore 与数据权限的 Looker 账号该预构建配置的工具列表见 looker.yaml中即包含get_dashboard其 description 与本文档一致可直接被 MCP 客户端发现并调用。测试与验证仓库为looker-get-dashboard提供了多层测试保障可作为行为契约参考单元测试lookergetdashboard_test.go覆盖 YAML 解析TestParseFromYaml、非法字段拒绝TestFailParseFromYaml、Manifest 参数正确性TestManifest断言dashboard_id存在以及只读注解TestAnnotations集成测试looker_integration_test.go通过端到端工具接口验证get_dashboard的 Manifest 元数据包括参数名dashboard_id、类型string、必填标记required: true并在真实调用流程中创建仪表盘、更新元素后使用get_dashboard校验变更结果印证其“读取仪表盘设计”的用途。小结looker-get-dashboard是 MCP Toolbox Looker 工具集中“读取仪表盘结构”的专用工具它以dashboard_id为唯一入参通过 Looker SDK v4 的字段级裁剪请求返回精简的仪表盘 JSON 设计含顶层信息、过滤器、布局与元素天然支持只读注解与客户端 OAuth 透传并与get_dashboards发现、run_dashboard取数、make_dashboard创建形成互补的工作流闭环。无论是让 LLM 分析既有仪表盘还是以现有仪表盘为模板进行复制重建它都是结构信息最合适的入口。【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表