ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

MCP Toolbox Looker 集成指南:使用 looker-generate-embed-url 工具为 Looker 内容生成可嵌入访问 URL

MCP Toolbox Looker 集成指南:使用 looker-generate-embed-url 工具为 Looker 内容生成可嵌入访问 URL MCP Toolbox Looker 集成指南使用 looker-generate-embed-url 工具为 Looker 内容生成可嵌入访问 URL【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolboxlooker-generate-embed-url是 MCP Toolbox 为 Looker 数据源提供的专用工具它可以将指定的 Looker 内容仪表盘、Look、Explore 查询可视化等转换成一个带签名的可嵌入 URL并在浏览器打开时自动建立 Looker Embed 会话。本文围绕该工具的功能定位、参数含义、YAML 配置方式、底层实现原理与组合使用场景展开帮助读者在 MCP Toolbox 项目中快速接入 Looker 内容的私密嵌入访问能力。工具定位与核心能力在 MCP Toolbox 的 Looker 集成体系中looker-generate-embed-url承担着内容链接生成器的角色。它面向当前已认证到 Looker 数据源的用户生成嵌入 URL该 URL 一旦在浏览器中打开便会触发 Looker Embed 会话的建立从而允许用户在第三方应用或页面中直接查看对应的 Looker 内容而无需登录 Looker 界面本身。这一点在官方文档 looker-generate-embed-url.md 中有明确说明生成的 URL 是针对当前认证用户创建的属于带签名的私有嵌入 URL与公开分享链接有本质区别——它要求调用方具备合法的 Looker 会话凭证。从工具注册机制看该工具通过 lookergenerateembedurl.go 中的init()函数以looker-generate-embed-url这一资源类型注册到工具注册表中属于 Looker 数据源内建的官方工具之一。参数详解type 与 idlooker-generate-embed-url接收两个必填参数均由 Initialize 方法在工具初始化时声明为字符串类型的parameters.Parameters参数类型必填说明typestring是要嵌入的 Looker 内容类型常见取值见下文idstring是要嵌入的内容的唯一标识符type内容类型官方文档与预构建配置looker.yaml中给出的常见取值包括dashboards嵌入仪表盘Dashboardlooks嵌入 Look已保存的查询视图query-visualization嵌入查询可视化结果explore嵌入 Explore 分析界面在预构建配置的描述中出现。需要说明的是type的取值本质上对应的是 Looker 嵌入 URL 路径中的内容段/embed/{type}/{id}因此在 Looker 中可嵌入的内容类型均可作为取值传入。id内容标识符id的格式取决于type的取值仪表盘dashboards与 Looklooks使用 Looker 分配的数字 ID例如123Exploreexplore使用model_name/explore_name格式例如ecommerce/orders因为 Explore 没有数字 ID其唯一标识由模型名与 Explore 名共同构成。源码层面lookergenerateembedurl.go会对空字符串做特殊处理若某个参数传入为空则将其指针置为nil最终体现在请求的EmbedParams中。配置方式在 MCP Toolbox 中声明该工具与 MCP Toolbox 中其他工具一致looker-generate-embed-url通过 YAML 配置声明后即可被 MCP 服务加载并暴露给 LLM。官方文档给出了完整的配置示例这也是最基础的接入方式kind: tool name: generate_embed_url type: looker-generate-embed-url source: looker-source description: | This tool generates a signed, private embed URL for specific Looker content, allowing users to access it directly. Parameters: - type (required): The type of content to embed. Common values include: - dashboards - looks - explore - id (required): The unique identifier for the content. - For dashboards and looks, use the numeric ID (e.g., 123). - For explores, use the format model_name/explore_name.其中各字段的含义如下对应官方文档的 Reference 表格字段类型必填说明typestringtrue固定为looker-generate-embed-url标识工具类型sourcestringtrue该工具要执行的 Looker 数据源名称descriptionstringtrue传递给 LLM 的工具描述用于引导模型正确调用参数从源码 Config 结构体 可以看到除了上述字段外还支持可选的annotations字段用于声明工具注解type与source均带有validate:required校验约束。另外如果description为空Initialize 会直接返回错误因此description是硬性必填项——这也符合 MCP Toolbox 中工具描述必须传给 LLM的设计约定。预构建配置参考MCP Toolbox 在预构建工具集 internal/prebuiltconfigs/tools/looker.yaml 中已经内置了该工具的完整配置名为generate_embed_urlsource指向looker-source并在该工具集的工具列表中注册见 looker.yaml。这意味着使用官方 Looker 预构建配置时该工具开箱即用无需手工编写配置。配置解析的源码佐证单元测试 lookergenerateembedurl_test.go 中的TestParseFromYamlLookerGenerateEmbedUrl验证了上述 YAML 配置能被正确解析为Config结构体name、description、type、source 一一对应而TestFailParseFromYamlLookerGenerateEmbedUrl测试文件第 73-107 行则验证了配置中出现未知字段时会以unknown field错误拒绝解析说明配置结构是严格校验的不能随意添加字段。底层实现原理从参数到签名 URL 的调用链当 LLM 调用该工具时执行路径集中在 Tool.Invoke 方法中整体流程如下1. 获取 Looker SDK 实例工具通过source.GetLookerSDK(ctx, accessToken)获取 Looker SDK v4 实例lookergenerateembedurl.go。SDK 的构建方式取决于数据源的认证模式见下文认证模式小节该逻辑定义在 internal/sources/looker/looker.go。2. 动态解析公共主机地址工具调用source.GetHostURL(ctx, sdk)获取 Looker 实例的公共主机 URLlookergenerateembedurl.go。该函数在 internal/sources/looker/looker.go 中实现优先返回缓存的解析结果缓存 TTL 为 10 分钟缓存未命中或过期时通过 singleflight 机制去重并发网络请求后重新解析解析失败时回退到ApiSettings.BaseUrl作为默认地址此时工具会记录一条failed to dynamically resolve public host URL, utilizing fallback警告日志。对应的TestGetHostURL系列测试looker_test.go覆盖了缓存命中、解析失败回退、以及 50 个 goroutine 并发调用去重等场景。3. 构造 EmbedParams 并调用签名接口工具构造v4.EmbedParamslookergenerateembedurl.goforceLogoutLogin : true sessionLength : source.LookerSessionLength() req : v4.EmbedParams{ TargetUrl: fmt.Sprintf(%s/embed/%s/%s, hostURL, *embedType_ptr, *contentId_ptr), SessionLength: sessionLength, ForceLogoutLogin: forceLogoutLogin, } resp, err : sdk.CreateEmbedUrlAsMe(req, nil)其中TargetUrl形如{hostURL}/embed/{type}/{id}这正是前文参数说明中 URL 路径段的来源SessionLength取自数据源的会话时长配置LookerSessionLength见 internal/sources/looker/looker.goForceLogoutLogin固定为true确保嵌入会话按强制登出语义处理最终调用 Looker SDK 的CreateEmbedUrlAsMe接口完成 URL 签名。4. 错误处理若返回错误中包含status401工具会转换为unauthorized errorHTTP 401返回lookergenerateembedurl.go其他错误统一走util.ProcessGeneralError处理。5. 返回结果resp为 Looker 生成的签名嵌入 URL 字符串直接作为工具调用结果返回给调用方。认证模式与兼容数据源该工具只能作用于实现了compatibleSource接口的 Looker 数据源lookergenerateembedurl.gotype compatibleSource interface { UseClientAuthorization() bool GetAuthTokenHeaderName() string LookerApiSettings() *rtl.ApiSettings GetLookerSDK(context.Context, string) (*v4.LookerSDK, error) LookerSessionLength() int64 GetHostURL(context.Context, *v4.LookerSDK) (string, error) }若配置中source指向的数据源不满足该接口ValidateSource 会返回invalid source ... is not a compatible type错误从机制上杜绝了工具与不兼容数据源绑定。在认证层面工具还实现了RequiresClientAuthorization与GetAuthTokenHeaderNamelookergenerateembedurl.go它们透传数据源的配置。从 Looker 数据源实现internal/sources/looker/looker.go可以看出存在两种认证模式客户端授权OAuth 用户令牌当UseClientAuthorization()为 true 时请求必须携带访问令牌SDK 通过自定义transportWithAuthHeader把Authorization头、x-looker-appid头以及可选的反向代理 IP 头X-Forwarded-For、X-Real-IP注入到请求中API 客户端模式使用配置的 Looker API client id/secret 建立客户端会话此时无需每次请求都携带用户令牌。组合使用建议与 Looker 工具集协同官方文档明确建议将本工具与 Looker MCP Toolbox 中的其他工具配合使用以形成完整的自动化链路例如先用looker-get-dashboards/looker-get-looks获取内容 ID再用looker-query或looker-make-dashboard/looker-make-look生成或构造查询与内容最后用looker-generate-embed-url把拿到 ID 的内容转成可嵌入 URL。这一组合方式使得 LLM 无需人工查阅 ID即可端到端地完成查询内容 → 获取 ID → 生成嵌入链接的闭环。预构建配置 looker.yaml 中同时包含get_dashboard、make_dashboard、make_look、query等工具正是这种协同设计的体现。关于 Looker 数据源的基础要求API 用户、GCP API 启用、IAM 权限等可参考 Looker 数据源文档 中的说明。使用前提与限制该工具依赖 Looker 数据源的 API 认证使用前需确保 Looker 侧已创建 API 用户并完成 MCP Toolbox 数据源配置嵌入 URL 仅在会话有效期内可用会话长度由数据源的LookerSessionLength配置决定该工具被标记为只读操作tools.NewReadOnlyAnnotations见 lookergenerateembedurl.go不会修改 Looker 中的任何内容工具配置需严格遵循 YAML 结构未知字段会解析失败type固定为looker-generate-embed-urldescription不可省略。总结looker-generate-embed-url是 MCP Toolbox Looker 集成中衔接内容获取与内容分发的关键工具它以两个参数typeid为输入通过 Looker SDK 的CreateEmbedUrlAsMe签名接口输出带会话限制的私有嵌入 URL。借助 MCP Toolbox 的预构建配置该工具可与get_dashboard、make_look等工具组合让 LLM 能够自主完成 Looker 内容的定位、构建与嵌入链接生成为在第三方应用中以 Embed 方式消费 Looker 内容提供了一条可直接落地的路径。【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表