ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MCP Toolbox 实战:looker-get-measures 工具详解——从 Looker Explore 拉取全部度量(Measures)字段

MCP Toolbox 实战:looker-get-measures 工具详解——从 Looker Explore 拉取全部度量(Measures)字段 MCP Toolbox 实战looker-get-measures 工具详解——从 Looker Explore 拉取全部度量Measures字段【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolboxlooker-get-measures是 MCP Toolbox面向数据库的开源 MCP Server为 Looker 集成提供的一款元数据探测工具给定 LookML 模型与 Explore 名称即可一次性返回该 Explore 内定义的全部度量measure字段及其元数据为 LLM 理解哪些指标可以聚合、如何用于过滤提供结构化依据。读完本文你将掌握该工具的参数契约、YAML 配置方法、JSON 返回结构、源码调用链以及它与get_models、get_explores、get_dimensions、get_field_value_suggestions等兄弟工具协作完成模型 → Explore → 字段 → 过滤值完整链路的方式。工具定位度量字段的语义目录在 Looker 的语义层中字段分为两类维度dimension不可聚合的属性用于分组、过滤、切分如订单日期、客户城市度量measure可聚合的指标用于计算与定量分析如总销售额、平均价格、用户数。looker-get-measures的作用正是把后者的目录完整暴露给 LLM。根据 工具官方文档 的定义Alooker-get-measurestool returns all the measures from a given explore in a given model in the source.它只接受两个必填参数model与explore。这与looker-get-dimensions返回维度是同一族工具二者共享几乎完全相同的参数与输出契约只是字段来源不同——维度来自dimensions度量来自measures参见 looker-get-dimensions 文档。在 Looker 源source文档 中该工具被列为 Looker 源可用工具之一Looker 源本身是一套基于 Web 的商业智能与语义层工具可部署在云端、GCP 或本地。配置示例YAML 声明一个度量探测工具在 MCP Toolbox 中所有工具都通过 YAML 配置文件声明。下面是looker-get-measures的标准配置节选自 官方文档 示例kind: tool name: get_measures type: looker-get-measures source: looker-source description: | This tool retrieves a list of measures defined within a specific Looker explore. Measures are aggregatable metrics (e.g., total sales, average price, count of users) that are used for calculations and quantitative analysis in your queries. Parameters: - model_name (required): The name of the LookML model, obtained from get_models. - explore_name (required): The name of the explore within the model, obtained from get_explores. Output Details: - If a measure includes a suggestions field, its contents are valid values that can be used directly as filters for that measure. - If a suggest_explore and suggest_dimension are provided, you can query that specified explore and dimension to retrieve a list of valid filter values.各字段的契约如下表Reference 部分fieldtyperequireddescriptiontypestringtrueMust be looker-get-measures。sourcestringtrue执行目标所依赖的 source 名称。descriptionstringtrue传给 LLM 的工具描述。其中description并非可有可无该字符串会作为工具清单Manifest中的描述直接暴露给 LLM见下文源码分析是引导模型正确调用工具的关键。上例中的description明确告知模型model_name、explore_name为必填且二者的取值应分别来自get_models与get_explores的返回结果——这正是 MCP Toolbox 让多个工具接力协作的典型写法。在 内置预配置 中同样存在一个开箱即用的get_measures工具定义其 description 还额外补充了一条若度量带有suggestable: true可再调用get_field_value_suggestions工具传入该度量的name作为field参数获取其合法的过滤取值。输出结构度量字段的 JSON 元数据数组调用成功后工具返回一个 JSON 数组每个元素描述一个度量字段结构如下见 官方文档{ name: field name, description: field description, type: field type, label: field label, label_short: field short label, tags: [tags, ...], synonyms: [synonyms, ...], suggestions: [suggestion, ...], suggest_explore: explore, suggest_dimension: dimension }字段含义与使用要点name/description/type字段唯一名、描述与类型是后续构造查询与过滤器的基础label/label_short面向用户的完整标签与短标签tags/synonymsLookML 中定义的标签与同义词便于 LLM 理解业务语义suggestions预定义的合法取值列表可直接用作该字段的过滤值suggest_explore/suggest_dimension当两者同时出现时可通过查询其指定的 Explore 与 Dimension 来获取合法的过滤值集合。文档特别强调后两类字段的用法命中suggestions时直接使用命中suggest_exploresuggest_dimension时则需要按图索骥去对应 Explore 中查询。而在 looker-get-field-value-suggestions 文档 中可以看到该工具正是用来对suggestable字段获取去重取值建议如{suggestions: [CA, NY, TX, WA]}的补充能力二者搭配即可把合法过滤值这条信息链补完整。源码实现一次 Looker API 调用 字段属性抽取在仓库中looker-get-measures的实现位于 internal/tools/looker/lookergetmeasures/lookergetmeasures.go。注册与配置解析工具类型字符串looker-get-measures通过init()中的tools.Register(resourceType, newConfig)注册到全局工具注册表第 33-39 行newConfig用 YAML 解码器把配置段解析为Config结构体其中Type与Source均带validate:required标签与文档的 Reference 表完全对应。Config还嵌入了tools.ConfigBase并提供可选的annotations字段。在Initialize中若Description为空会直接报错description is required for tool第 71-87 行——这印证了文档中description必须为true的原因它是构造工具 Manifest对 LLM 可见的描述与参数声明的必要输入。同时该工具默认使用tools.NewReadOnlyAnnotations只读注解表明它属于只读探测类工具。参数与调用链工具执行入口Invoke第 112-155 行的逻辑非常清晰将运行时参数交给lookercommon.ProcessFieldArgs解析出model与explore两个字符串定义见 internal/tools/looker/lookercommon/lookercommon.goGetFieldParameters将二者声明为必填字符串参数通过source.GetLookerSDK(ctx, accessToken)获取 Looker SDK v4 客户端构造v4.RequestLookmlModelExplore请求其中Fields固定为MeasuresFieldsfields(measures(name,type,label,label_short,description,synonyms,tags,hidden,suggestable,suggestions,suggest_dimension,suggest_explore))该常量定义于 lookercommon.go 第 30-35 行——注意它只请求measures子集因此响应体远小于一次全量 explore 元数据拉取调用sdk.LookmlModelExplore并针对 HTTP 401 返回未授权错误用lookercommon.CheckLookerExploreFields校验响应中的Fields不为空用lookercommon.ExtractLookerFieldProperties第 38-100 行把 SDK 字段对象转换成文档所示的 JSON map 数组后返回。抽取逻辑的细节隐藏字段与建议字段ExtractLookerFieldProperties有两个值得注意的行为与文档中输出结构一节严格对应跳过_raw字段字段名以_raw结尾时被直接跳过第 55-57 行避免把 Looker 生成的原始字段混入结果隐藏字段控制当且仅当 source 配置了show_hidden_fields为 false 时隐藏字段hidden: true才会被过滤第 58-60 行该开关与 Looker 源配置中的show_hidden_fields参数一一对应建议类字段的条件输出suggestions仅在字段suggestable为 true 且存在非空建议时才输出suggest_explore与suggest_dimension仅在suggestable为 true 且二者同时非空时才成对输出第 83-94 行。这与文档 Output Details 中的说明完全吻合也解释了为什么返回元素的这些键是可能缺失的。与 Looker 源的契约工具通过compatibleSource接口与 Looker 源解耦第 49-55 行运行时强校验源是否实现了LookerApiSettings、GetLookerSDK、LookerShowHiddenFields等方法若配置的 source 类型不兼容ValidateSource与Invoke都会明确报错。也就是说looker-get-measures只能挂在 Looker 类型的 source 上使用。Looker 源的完整配置可参考 Looker 源文档 或 内置预配置其中show_hidden_fields: ${LOOKER_SHOW_HIDDEN_FIELDS:true}直接决定上文第 2 条隐藏字段过滤行为。测试验证配置解析与端到端调用仓库为looker-get-measures提供了三层测试证据配置解析单测在 lookergetmeasures_test.go 中TestParseFromYamlLookerGetMeasures验证 YAML 配置能被正确解析为Configname、description、type、source 一一对应TestFailParseFromYamlLookerGetMeasures则验证未知字段如method: GOT会触发严格的解析错误——说明该工具对配置文件是白名单严格校验的拼写错误会被直接拒绝端到端集成测试在 tests/looker/looker_integration_test.go 中get_measures出现在工具的测试注册表里第 116 行并通过RunToolGetTestByName第 485 行与RunToolInvokeParametersTest第 2396 行验证了真实调用后者使用{model: system__activity, explore: content_usage}作为参数——这也可以作为你调试时的参考样例Looker 自带的system__activity模型无需额外建数即可用于验证。实战链路从模型到可用的过滤值结合 内置预配置 中的工具编排looker-get-measures在完整链路中的位置如下get_models→ 获取全部 LookML 模型列表get_explores传model_name→ 获取模型内全部 Exploreget_measures传model_nameexplore_name→ 获取 Explore 内全部度量字段及其元数据若度量带suggestions→ 直接作为过滤值使用若度量带suggest_explore/suggest_dimension→ 查询对应 Explore/Dimension 获取过滤值若度量带suggestable: true→ 调用get_field_value_suggestions获取去重建议值参考 工具文档 中的term与filters参数用法最终由query或looker-query-sql等查询类工具携带上述字段与过滤值执行分析。配置好 Looker 源参考 Looker 源文档 中的base_url、client_id、client_secret、verify_ssl等参数以及为源配置项使用${ENV_NAME}环境变量替换的实践与上述工具后即可启动 MCP Toolbox让 LLM 借助get_measures的元数据自主完成选指标 → 定过滤 → 写查询的分析闭环。小结looker-get-measures是一个设计精巧的只读元数据工具对外它把 Looker 语义层中可聚合度量的目录以结构化 JSON 呈现给 LLM对内它通过一次字段裁剪过的LookmlModelExploreAPI 调用加上统一的字段属性抽取逻辑做到了轻量、可控且与维度工具完全对称。无论是为 LLM 提供指标语义还是为下游查询准备合法的过滤取值它都是 Looker 集成中不可或缺的一环。更多 Looker 工具looker-get-dimensions、looker-get-parameters、looker-get-filters、looker-query等可参阅 Looker 集成文档目录 继续深入。【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表