MCP Toolbox 的 looker-get-connections 工具:用 MCP 一键枚举 Looker 全部数据库连接

发布时间:2026/9/15 0:51:19

MCP Toolbox 的 looker-get-connections 工具:用 MCP 一键枚举 Looker 全部数据库连接 MCP Toolbox 的 looker-get-connections 工具用 MCP 一键枚举 Looker 全部数据库连接【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolboxlooker-get-connections是 MCP Toolbox 中 Looker 集成提供的一个只读工具用于一次性返回 Looker 源中配置的全部数据库连接及其关键元数据连接名、方言、默认 Schema、数据库、多数据库支持能力。本文以 looker-get-connections 官方文档 为主体结合仓库中该工具的 Go 实现与预置配置讲解其功能、YAML 声明方式、输出结构以及底层实现原理帮助你快速在自己的 MCP 配置中启用并正确使用它。工具概览无参数、全量返回looker-get-connections的设计非常简单直接它不接受任何参数调用后返回 Looker 系统中配置的所有数据库连接。这在语义层驱动的 Agent 工作流中非常有用——LLM 往往需要先了解当前 Looker 实例上挂了哪些数据库、分别是什么方言才能进一步发起查询、判断连接名合法性或为下游工具如 looker-get-connection-tables、looker-get-connection-schemas提供正确的连接名参数。从源码结构看该工具的实现位于 lookergetconnections.go通过常量resourceType looker-get-connections在工具注册表中注册并实现了tools.ToolConfig与tools.Tool两个接口ToolConfigType、Initialize、Invoke、GetSourceName、ValidateSource等。其中Invoke方法不接受任何输入参数直接通过 Looker SDK 拉取连接列表。兼容的源类型该工具声明了一个compatibleSource接口约束要求其关联的源必须实现以下方法UseClientAuthorization() bool GetAuthTokenHeaderName() string LookerApiSettings() *rtl.ApiSettings GetLookerSDK(context.Context, string) (*v4.LookerSDK, error)对应到配置层面即type: looker的源。若声明的source不是兼容类型工具在ValidateSource阶段就会返回“invalid source for …”错误配置无法通过校验。在配置文件中声明该工具looker-get-connections本身是工具声明kind: tool必须关联到一个已经定义好的 Looker 源kind: source。官方文档给出的最小可运行示例kind: tool name: get_connections type: looker-get-connections source: looker-source description: | This tool retrieves a list of all database connections configured in the Looker system. Parameters: This tool takes no parameters. Output: A JSON array of objects, each representing a database connection and including details such as: - name: The connections unique identifier. - dialect: The database dialect (e.g., mysql, postgresql, bigquery). - default_schema: The default schema for the connection. - database: The associated database name (if applicable). - supports_multiple_databases: A boolean indicating if the connection can access multiple databases.字段参考表fieldtyperequireddescriptiontypestringtrueMust be looker-get-connections.sourcestringtrueName of the source Looker instance.descriptionstringtrueDescription of the tool that is passed to the LLM.几个要点type必须严格为looker-get-connections。源码中该字段带validate:required标签并且工具注册表按此字符串分发解析写错类型将无法加载。source必须指向一个type: looker的源名例如上文示例中的looker-source。description是必填项。在Initialize中如果cfg.Description 会直接返回description is required for tool ...错误。这段描述会被注入到 LLM 的上下文tools.Manifest{Description: cfg.Description, ...}用于让模型理解工具用途因此建议写清参数与输出语义如上例所示。可选的annotations字段可以覆盖工具的默认注解该工具默认按只读注解NewReadOnlyAnnotations处理因为它只做查询、不产生副作用。该 YAML 示例与仓库预置配置 looker-dev.yaml 中get_connections工具的声明完全一致可直接参考使用。定义 Looker 源前置条件由于工具本身无参数它的可用性完全取决于关联源的配置。Looker 源source.md只使用 API 认证你需要先在 Looker 中创建一个 API 用户获取client_id与client_secret。一个典型配置如下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 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}注意事项来自官方文档base_url形如https://looker.example.com不要带尾部斜杠Looker 部署在本机时通常需要加上 API 端口如https://looker.example.com:19999。verify_ssl几乎总是true全小写仅当 Looker 使用自签名证书时才改为false任何非true的值都会被解释为false。client_id/client_secret是 Looker 服务器分配的一串随机字符若使用 Looker OAuth 则无需填写。强烈建议用${ENV_NAME}环境变量替换方式注入敏感信息不要把密钥硬编码进配置文件。如果使用 Conversational Analytics 相关工具还需在源上配置project与location并启用geminidataanalytics.googleapis.com、cloudaicompanion.googleapis.com两个 GCP API 以及对应的 IAM 角色但对于looker-get-connections这类常规工具仅需 API 认证即可。调用过程与输出结构底层调用链Invoke方法的核心逻辑如下通过source.GetLookerSDK(ctx, accessToken)获得 Looker SDK 客户端调用sdk.AllConnections(name, dialect(name), database, schema, ...)按字段列表拉取全部连接对每个连接再调用sdk.ConnectionFeatures(connName, multiple_databases, ...)探测该连接是否支持多数据库将每条连接整理成 map 并聚合为一个 JSON 数组返回。这里有一处值得注意的实现细节返回字段名是dialect_name与schema而不是文档描述中直译的dialect与default_schema。源码中映射关系为vMap[name] *v.Name vMap[dialect_name] *v.Dialect.Name vMap[database] *v.Database // 仅当非空 vMap[schema] *v.Schema // 仅当非空 vMap[supports_multiple_databases] *conn.MultipleDatabases因此该工具实际返回的 JSON 对象形如[ { name: my_mysql_conn, dialect_name: mysql, database: analytics, schema: public, supports_multiple_databases: false }, { name: my_pg_conn, dialect_name: postgresql, supports_multiple_databases: true } ]name连接的唯一标识后续连接相关工具tables/schemas/columns/databases都需要它作为输入参数。dialect_name数据库方言名称如mysql、postgresql、bigquery等。database/schema可能为空源码中只有指针非空时才写入 map因此字段可能缺席。supports_multiple_databases布尔值来自 Looker 的连接特性探测结果。错误处理与安全性源码对调用做了防御性处理SDK 返回 401 时映射为http.StatusUnauthorized的“unauthorized error”其他错误走统一的ProcessGeneralError处理工具在RequiresClientAuthorization/GetAuthTokenHeaderName中透传源的客户端授权配置因此当源开启use_client_oauth时会转发客户端的 OAuth 访问令牌避免把长期凭证暴露给每个调用方。测试验证该工具的配置解析行为由 lookergetconnections_test.go 覆盖TestParseFromYamlLookerGetConnections验证一段最小的 YAMLkind: tool/name/type: looker-get-connections/source/description能被正确解析为Config并断言字段值一致TestFailParseFromYamlLookerGetConnections验证声明了未知字段如method: GOT时解析失败并给出明确的错误定位信息。这说明“仅type、source、description三个必填字段、无其他可选参数”的行为是经过测试保证的配置时不必也不能添加额外字段。典型使用场景在 MCP 驱动的 Looker 语义层问答工作流中looker-get-connections通常承担“侦察”角色常见组合连接发现LLM 先调用get_connections了解当前实例上有哪些数据库连接及各自方言元数据下钻选定一个name后配合 looker-get-connection-tables、looker-get-connection-schemas、looker-get-connection-table-columns 获取表、Schema、字段级别的元数据健康检查辅助仓库中 lookerhealthpulse.go 的checkDBConnections也调用了AllConnections并按连接逐一执行TestConnection可见连接枚举是 Looker 可观测性与运维类工具共用的基础能力。小结looker-get-connections是一个无参数、只读的工具一次调用返回 Looker 实例的全部数据库连接与关键属性是 Agent 理解 Looker 数据环境的入口。配置只需三要素type: looker-get-connections、指向type: looker源的source以及会被注入 LLM 上下文的description。实际返回字段以源码为准name、dialect_name、database、schema、supports_multiple_databases其中database、schema在为空时不会出现在结果中。完整可运行的示例可参考仓库预置配置 looker-dev.yaml 与 Looker 工具文档目录 tools/。【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/15 0:46:19

猪行为识别数据集:从COCO标注到YOLOv8训练的完整实践

简介:一套面向智慧养殖场景的猪行为识别数据集,适合计算机视觉研发人员、农业工程研究者及畜牧智能化项目开发者使用。数据集聚焦猪圈内猪只的日常行为自动识别,覆盖喝、吃、睡觉、站立四个关键动作类别;标注文件采用COCO JSON格式…

2026/9/15 0:46:19

5200万USDT批量冻结背后:新币担保资金盘如何被一锅端

最近圈子里讨论得最凶的,是那笔5200万USDT被批量冻结的事。过去大家见惯了单个地址被Tether拉黑、某个账户被交易所风控,但这次不一样——它不是冻一两个地址,而是把整条“新币担保”的资金链条一锅端了。消息传出来之后,不少做项…

2026/9/15 0:46:19

AI工作搭子:职场人的意图-动作双向翻译引擎

1. 这不是又一个“AI办公助手”,而是一个能陪你改PPT、催报销、写周报的活人同事最近刷朋友圈,总能看到有人发截图:“刚让WorkBuddy帮我把老板那句‘再优化一下’翻译成具体修改项,直接标红了三页PPT里的字体间距和图表配色”&…

2026/9/15 1:01:20

8款AI论文工具实测:从选题到文献综述全流程优化

1. 为什么你需要这些AI论文工具?作为一名带过上百篇毕业论文的导师,我见过太多学生在文献检索阶段浪费大量时间。去年有个学生为了找一篇关键文献,花了整整两周泡在图书馆,最后发现需要的参考文献其实就在某个学术数据库里躺着。这…

2026/9/15 1:01:20

同一把 TaoToken Key,从 Sol 切到 Luna 后 Codex 额度耐用了

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 1:01:20

嵌入式Linux C++开发实践与优化指南

1. 嵌入式Linux C开发概述在嵌入式系统开发领域,LinuxC的组合正在成为中高端设备的标配方案。作为一名在工业控制和消费电子领域有十年开发经验的工程师,我见证了从纯C到C的转型过程。现在的嵌入式设备性能越来越强,开发复杂度越来越高&#…

2026/9/15 1:01:20

2026中小企业从零启动 AI 获客,简单落地路线

2026 年中小企业 AI 获客可依托 AI 内容能力结合抓词 GEO地域搜索优化落地。针对传统获客成本高、转化不稳、AI 运营无体系等问题,通过搭建地域关键词矩阵、产出本地化内容的方式,低成本布局搜索流量,是适配中小企、成本可控的稳妥获客方式。…

2026/9/15 1:01:20

MATLAB实现二维小波变换图像增强技术详解

1. 项目概述:二维小波变换在图像增强中的应用 在数字图像处理领域,图像增强技术一直是研究热点。基于二维小波变换的图像增强方法因其独特的优势而备受关注。这种方法通过将图像分解到不同频率子带,能够有针对性地处理图像中的细节和噪声&…

2026/9/15 0:56:20

文件包含漏洞深度解析:从LFI到RFI的利用手法与防御实战

做过 Web 安全测试或者刷过 CTF 的朋友,对“文件包含”这四个字应该都不陌生。不管是 LFI(本地文件包含)还是 RFI(远程文件包含),只要代码里出现 include 之类的函数,同时参数又可控&#xff0c…

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/14 11:22:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码