
MCP Toolbox 的 looker-get-models 工具从 Looker 实例获取全部 LookML 模型清单【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox导读looker-get-models是 MCP Toolbox for Databases 中面向 Looker 集成的一组只读工具之一它的职责非常聚焦返回 Looker 源source中的全部 LookML 模型。本文将基于官方工具文档docs/en/integrations/looker/tools/looker-get-models.md结合仓库内该工具的 Go 源码实现与单元测试完整讲解其 YAML 配置方式、底层 Looker API 调用逻辑、返回数据格式以及它在模型 → Explore → 查询这条 LLM 工作流中的定位。读完本文你将能够在自己的 MCP Toolbox 配置中正确声明并使用该工具理解其输出字段的语义来源。工具概述无参数、只读的模型列举looker-get-models是一个无参数工具调用时不接受任何参数直接返回当前 Looker 源中定义的所有 LookML 模型models。在 MCP 会话中它通常扮演能力发现角色LLM 先通过它获知实例上有哪些模型再据此决定后续该调用哪个 Explore、执行哪条查询。从源码结构看该工具属于 Looker 工具族中的只读类别在初始化时会自动应用只读注解tools.NewReadOnlyAnnotations并在配置清单中暴露一个空的参数列表internal/tools/looker/lookergetmodels/lookergetmodels.goallParameters : parameters.Parameters{} return Tool{ BaseTool: tools.NewBaseTool( cfg, tools.GetAnnotationsOrDefault(cfg.Annotations, tools.NewReadOnlyAnnotations), tools.Manifest{Description: cfg.Description, Parameters: allParameters.Manifest(), AuthRequired: cfg.AuthRequired}, allParameters, ), }, nil这也与官方文档中looker-get-modelsaccepts no parameters的描述完全一致它不接收任何运行时参数所需的一切上下文连接哪个 Looker 实例、是否显示隐藏模型都来自工具所绑定的 source 配置。兼容的 Source 类型该工具只能挂载在类型为looker的源上。源码通过一个compatibleSource接口对源做了编译期约束internal/tools/looker/lookergetmodels/lookergetmodels.go要求源必须实现以下能力UseClientAuthorization()是否转发客户端 OAuth 授权GetAuthTokenHeaderName()授权令牌所在的请求头名称LookerApiSettings()返回 Looker API 调用所需的rtl.ApiSettingsGetLookerSDK(context.Context, string)获取 Looker SDK v4 实例LookerShowHiddenModels()是否显示隐藏模型如果在 YAML 中把该工具绑定到非looker类型的源ValidateSource会直接报错invalid source for looker-get-models tool。Looker 源本身在 internal/sources/looker/looker.go 中注册源码配置的完整字段说明见 Looker Source 文档。底层实现一次 LookML 模型的全量拉取当工具被调用时Invoke方法会通过 Looker SDK 调用AllLookmlModels接口对应 Looker API 4.0 的/lookml_models端点并传入三个控制参数internal/tools/looker/lookergetmodels/lookergetmodels.goexcludeEmpty : false excludeHidden : !source.LookerShowHiddenModels() includeInternal : true req : v4.RequestAllLookmlModels{ ExcludeEmpty: excludeEmpty, ExcludeHidden: excludeHidden, IncludeInternal: includeInternal, } resp, err : sdk.AllLookmlModels(req, source.LookerApiSettings())三个参数的语义如下参数取值含义ExcludeEmptyfalse不过滤空模型即使模型下没有任何 Explore 也返回ExcludeHidden取决于源配置当源配置show_hidden_models: true默认时该值为false即包含隐藏模型反之则排除IncludeInternaltrue返回内部internal模型也就是说是否展示隐藏模型不是由工具本身决定的而是由它绑定的 Looker 源配置中的show_hidden_models开关决定的——这一点与文档中工具不接受参数的设计相辅相成行为偏好被收敛到了源配置层工具调用保持极简。错误处理与鉴权若 Looker 返回 401工具会将其转换为unauthorized error返回其他错误统一交由util.ProcessGeneralError处理工具是否要求客户端授权RequiresClientAuthorization以及使用哪个头传递令牌GetAuthTokenHeaderName均委托给所绑定源的配置判断。返回数据格式AllLookmlModels的原始响应经过处理后被归一化为元素为 map 的数组每个模型输出四个字段internal/tools/looker/lookergetmodels/lookergetmodels.govMap[label] *v.Label vMap[name] *v.Name vMap[project_name] *v.ProjectName vMap[connections] *v.AllowedDbConnectionNames对应的一次典型返回大致如下[ { label: E-Commerce Model, name: ecommerce, project_name: my_project, connections: [my_connection] }, { label: Marketing Model, name: marketing, project_name: marketing_project, connections: [marketing_conn] } ]字段语义字段来源说明nameLookML 模型的名称后续调用looker-get-explores时需要的model参数值label模型的展示标签面向用户/LLM 的可读名称project_name模型所属的 LookML 项目可用于关联looker-get-projects等工具的结果connections模型允许连接的数据库连接名列表帮助 LLM 判断该模型可访问哪些底层数据源name字段是整个 Looker 工具链协作的关键官方文档在 looker-get-explores 工具文档 中明确指出get_explores的必需参数model_name正是从get_models获得。配置示例声明工具官方文档给出的工具声明示例如下字段含义见文末 Reference 表格kind: tool name: get_models type: looker-get-models source: looker-source description: | This tool retrieves a list of available LookML models in the Looker instance. LookML models define the data structure and relationships that users can query. The output includes details like the models name and label, which are essential for subsequent calls to tools like get_explores or query. This tool takes no parameters.注意description字段会被直接传递给 LLM作为工具清单manifest中的说明文本因此建议像示例一样写清楚输出里有哪些字段以及这些字段在后续流程中如何使用帮助模型正确编排调用链。绑定 Looker 源source字段必须指向一个已声明的looker类型源。一个最小可用的源配置详见 Looker Source 文档如下kind: 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 show_hidden_models: ${LOOKER_SHOW_HIDDEN_MODELS:true} show_hidden_explores: ${LOOKER_SHOW_HIDDEN_EXPLORES:true} show_hidden_fields: ${LOOKER_SHOW_HIDDEN_FIELDS:true}其中base_url形如https://looker.example.com不要带尾部斜杠自托管部署可能需要附加 API 端口如https://looker.example.com:19999verify_ssl几乎总是应为true除非 Looker 服务器使用自签名证书show_hidden_models默认值为true即默认返回隐藏模型设为false可在拉取模型清单时过滤掉隐藏模型建议用${ENV_NAME}环境变量替换的方式注入密钥避免在配置文件中硬编码。参数 Reference官方字段表looker-get-models的 YAML 声明仅支持以下三个字段fieldtyperequireddescriptiontypestringtrueMust be looker-get-models.sourcestringtrueName of the source the SQL should execute on.descriptionstringtrueDescription of the tool that is passed to the LLM.三个字段均为必填。type固定为looker-get-modelssource指向 Looker 源名称description描述工具用途会透传给 LLM。若配置中出现未知字段例如误写method: GOTYAML 解析将直接失败这一行为有对应的单元测试覆盖见下文。测试与配置校验仓库为该工具提供了两个方向的单元测试internal/tools/looker/lookergetmodels/lookergetmodels_test.go正向解析测试TestParseFromYamlLookerGetModels验证形如下面的合法配置能被正确反序列化为工具配置对象kind: tool name: example_tool type: looker-get-models source: my-instance description: some description失败解析测试TestFailParseFromYamlLookerGetModels验证包含未知字段method: GOT的配置会抛出unknown field method的解析错误确保配置校验的严格性。这些测试印证了工具声明是白名单式的——除name、type、source、description之外不接受其他字段任何多余字段都会在加载配置阶段被拒绝而不是静默忽略。在 LLM 工作流中的典型用法looker-get-models是 Looker 工具链的入口工具。一个典型的从自然语言到数据结果的调用链是get_models列举实例上的全部 LookML 模型得到模型的name/labelget_explores基于上一步选定的model_name列出该模型内的 Exploreget_dimensions/get_measures/get_parameters/get_filters进一步了解 Explore 内的字段能力query/query_sql最终构造并执行查询。整个 Looker 工具家族在 docs/en/integrations/looker/tools/_index.md 中有完整索引looker-get-models与其余 50 余个 Looker 工具一样通过 internal/tools/looker/ 目录下的独立包注册到 MCP Toolbox 的工具注册表tools.Register(looker-get-models, newConfig)可与其他数据库类工具PostgreSQL、BigQuery、Spanner 等在同一服务器配置中混合编排。小结looker-get-models以零参数 只读的极简设计承担了 Looker 语义层探索的第一步通过一次AllLookmlModelsAPI 调用把实例上所有 LookML 模型归一化为name、label、project_name、connections四个字段的数组供 LLM 规划后续查询。它的行为偏好如是否包含隐藏模型由绑定的 Looker 源配置控制声明格式严格限定为type、source、description三个必填字段且受单元测试约束——这使它既易于接入又行为可预期非常适合作为 Looker 数据问答 Agent 的起点工具。【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考