MCP Toolbox Looker 连接数据库工具实战:looker-get-connection-databases 配置与原理全解析
MCP Toolbox Looker 连接数据库工具实战looker-get-connection-databases 配置与原理全解析【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox导读looker-get-connection-databases是开源项目 MCP Toolbox面向数据库的 MCP 服务器中 Looker 集成套件的一员用于返回指定 Looker 连接connection下可用的全部数据库名称列表。本文以官方文档 looker-get-connection-databases.md 为骨架结合仓库内该工具的 Go 实现、单元测试与预置配置完整讲解其功能定位、conn参数语义、YAML 配置方法、与get_connections的配合套路以及底层调用链帮助你准确地将该工具接入自己的 Agent 工作流。功能定位返回连接下的全部数据库looker-get-connection-databases工具的核心能力非常聚焦给定一个 Looker 中的数据库连接名称返回该连接下可用的所有数据库名称。从源码实现看lookergetconnectiondatabases.go工具在收到调用后完成以下动作从调用参数中取出字符串类型的conn参数即目标连接名通过 source 获取 Looker SDKv4实例调用 SDK 的ConnectionDatabases(conn, source.LookerApiSettings())方法将 SDK 返回的数据库列表直接作为工具结果返回。该工具只接受一个conn参数由源码中的parameters.NewStringParameter(conn, The connection containing the databases.)定义见 lookergetconnectiondatabases.go并在Initialize阶段将该参数注册进工具清单Manifest供 LLM 感知。关键适用前提官方文档明确强调该工具仅适用于支持多数据库multiple databases的连接。对于不支持多数据库的连接工具会返回空列表或报错。因此在 Agent 编排中通常需要先用get_connections确认目标连接的能力再决定是否调用本工具。配置示例完整 YAML 声明以下配置来自原文档并已在仓库预置配置 looker-dev.yaml 中得到完整实践name: get_connection_databaseskind: tool name: get_connection_databases type: looker-get-connection-databases source: looker-source description: | This tool retrieves a list of databases available through a specified Looker connection. This is only applicable for connections that support multiple databases. Use get_connections to check if a connection supports multiple databases. Parameters: - connection_name (required): The name of the database connection, obtained from get_connections. Output: A JSON array of strings, where each string is the name of an available database. If the connection does not support multiple databases, an empty list or an error will be returned.字段参考表以下字段表继承自原文档 Reference 部分fieldtyperequireddescriptiontypestringtrueMust be looker-get-connection-databases.sourcestringtrueName of the source Looker instance.descriptionstringtrueDescription of the tool that is passed to the LLM.几点需要特别说明type必须严格等于looker-get-connection-databases。该字符串在源码中定义为包级常量resourceType见 lookergetconnectiondatabases.go并通过tools.Register(resourceType, newConfig)在包init()阶段注册到全局工具注册表。注册失败如重复注册会直接panic。description是必填项。源码的Initialize方法在cfg.Description 时会直接返回错误description is required for tool %q见 lookergetconnectiondatabases.go。该描述会被完整透传给 LLM是 Agent 决定何时调用此工具的关键依据因此应当写清楚参数含义、输出格式与适用前提。source必须是已注册的 Looker source 名称配置中source: looker-source仅为示例命名。前置条件Looker Source 的初始化该工具依赖source字段指向的 Looker 实例。参考 source.md 中的标准初始化配置kind: source name: my-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}要点与 source.md 及 looker.go 中的默认值一致base_url为 Looker 服务器地址不要带末尾斜杠自建部署通常需追加 API 端口例如https://looker.example.com:19999client_id/client_secret由 Looker 服务器分配若使用 Looker OAuth 则无需配置verify_ssl几乎总是应为true除非使用自签名证书任何非true的值都会被解释为false推荐使用${ENV_NAME}环境变量替换方式注入敏感配置避免将密钥硬编码进配置文件源码中默认值还包括SslVerification: true、Timeout: 600s、UseClientOAuth: false、ShowHiddenModels/Explores/Fields: true、Location: us、SessionLength: 1200。与 get_connections 的配合先探测再取值由于looker-get-connection-databases只对支持多数据库的连接有意义官方文档与预置配置都建议先用get_connections类型looker-get-connections确认连接能力。预置配置中get_connections的 description 声明其输出包含supports_multiple_databases布尔字段见 looker-dev.yaml。这一字段在源码中有明确的实现依据lookergetconnections.go 中工具先调用sdk.AllConnections(name, dialect(name), database, schema, ...)拉取连接列表再对每个连接调用sdk.ConnectionFeatures(name, multiple_databases, ...)将结果写入supports_multiple_databases字段后返回。因此推荐的标准 Agent 调用链为get_connections → 找到 supports_multiple_databasestrue 的连接名 get_connection_databases → conn该连接名取回数据库名称列表 get_connection_schemas → 可选进一步下钻 schema get_connection_tables → 可选进一步下钻表其中get_connection_schemas也接受可选的database参数用于按数据库过滤与本文工具的返回值天然衔接见 looker-dev.yaml。底层调用链与错误处理从源码结构看looker-get-connection-databases的调用链如下Agent 调用 └─ Tool.Invoke(ctx, source, params, accessToken) ├─ 校验 params[conn] 必须为 string否则返回 AgentError ├─ source.GetLookerSDK(ctx, accessToken) // 获取 Looker SDK v4 └─ sdk.ConnectionDatabases(conn, apiSettings)错误处理上lookergetconnectiondatabases.go若 SDK 返回包含status401的错误工具包装为401 Unauthorized的客户端错误供上层识别认证失败其余错误通过util.ProcessGeneralError统一归类处理conn参数类型非 string 时返回 Agent 可读的类型错误信息。认证与授权模式工具通过RequiresClientAuthorization与GetAuthTokenHeaderName见 lookergetconnectiondatabases.go委托给 source 判断是否使用客户端授权use_client_oauth: true时开启并返回认证头名称Looker 场景默认为Authorization。当启用客户端授权时GetLookerSDK会为每次请求构造携带终端用户 access token 的传输层见 looker.go。Source 兼容性校验ValidateSource会检查source指向的实例是否实现了compatibleSource接口要求提供UseClientAuthorization、GetAuthTokenHeaderName、LookerApiSettings、GetLookerSDK方法见 lookergetconnectiondatabases.go。若 source 类型不兼容配置校验阶段即报错invalid source ... is not a compatible type而不会等到运行时才发现。测试验证YAML 解析的收与放该工具的行为由单元测试 lookergetconnectiondatabases_test.go 覆盖可作为配置正确性的参照TestParseFromYamlLookerGetConnectionDatabases验证最小化 YAMLkind: tool、name、type、source、description能被正确解析为Config结构并填充默认的AuthRequired: []TestFailParseFromYamlLookerGetConnectionDatabases验证未知字段会被拒绝——示例中在配置里加入了不存在的method: GOT字段解析器直接报错unknown field method。这说明该工具的配置采用严格模式type、source、description、name之外的字段如method一律不允许出现。实战建议与注意事项先查能力再取库始终以get_connections的supports_multiple_databases字段作为调用前置判断避免对单数据库连接发起无意义的调用并触发空列表/报错分支。description 是 Agent 的“操作手册”由于该字段会直接传递给 LLM务必在描述中写清参数来源取自get_connections、输出格式JSON 字符串数组与失败语义空列表或错误与预置配置保持同等信息密度。严格配置文件YAML 中除文档列出的字段外不得追加未知字段如method否则启动解析阶段即失败参考测试用例可快速排查此类问题。认证模式一致性若使用 Looker OAuthuse_client_oauth: true需确保请求链路携带 access token否则采用client_id/client_secret服务端认证二者由 source 统一处理工具本身无需关心。纵深探索链路拿到数据库列表后可继续调用get_connection_schemas→get_connection_tables→get_connection_table_columns构成从连接、库、模式、表到列的完整元数据下钻路径相关声明同样可在 looker-dev.yaml 中查阅。小结looker-get-connection-databases虽小却是 Looker 元数据探索链路上的关键一环。它通过单一的conn参数、严格的 YAML 配置校验和基于 Looker SDK v4 的稳定调用为 Agent 提供了“连接 → 数据库”这一层确定性能力。结合get_connections的能力探测与后续的 schema/tables 下钻工具即可在 MCP Toolbox 中构建完整的 Looker 元数据感知闭环。【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

EBSD技术全解析:从原理到应用,材料微观表征的晶体学手术刀

EBSD技术全解析:从原理到应用,材料微观表征的晶体学手术刀

说实话,在材料微观表征这个圈子里,EBSD(电子背散射衍射,Electron Backscatter Diffraction)早就不是新鲜词了。但这几年我明显感觉到一个趋势:越来越多的课题组和企业实验室,把EBSD从"锦上…

2026/9/15 23:39:50 阅读更多 →
React Native在OpenHarmony实现图片选择与裁剪

React Native在OpenHarmony实现图片选择与裁剪

1. 项目背景与核心价值在移动应用开发领域,跨平台框架与新兴操作系统的结合往往能碰撞出令人惊喜的火花。这次我们要探讨的正是React Native在OpenHarmony平台上实现图片选择与裁剪功能的完整技术方案。选择这个技术组合主要基于三个现实考量:首先&#…

2026/9/15 23:54:28 阅读更多 →
人形机器人标准体系结构

人形机器人标准体系结构

形机器人标准体系结构包括基础共性、类脑与智算、肢体与部组件、整机与系统、应用、安全伦理6 个部分,如图所示。基础共性标准包括术语与定义,分类分级、数字身份、中试与概念验证、测试与评估、可靠性与可维修性、开源开放和可持续八个类别,…

2026/9/15 23:56:24 阅读更多 →

最新新闻

高并发系统设计实战:从流量估算到容灾演练的12个关键环节

高并发系统设计实战:从流量估算到容灾演练的12个关键环节

1. 这不是一份“笔记”,而是一套可落地的系统设计实战手记你搜“system-design-notes”,大概率是刚刷完LeetCode中等题、能写个CRUD接口,但一看到“设计一个支持千万日活的短链服务”就头皮发麻——不是不会画UML图,而是根本不知道…

2026/9/16 1:17:32 阅读更多 →
用51单片机和HC蓝牙模块自制电子琴:定时器发声与矩阵键盘全解析

用51单片机和HC蓝牙模块自制电子琴:定时器发声与矩阵键盘全解析

简介:这是一份基于HC蓝牙模块与51单片机的电子琴项目压缩包,面向单片机入门学习者、电子设计爱好者,以及想通过蓝牙无线控制方式完成综合实训的开发者。项目以51单片机为控制核心,配合HC-05蓝牙模块接收手机或平板指令&#xff0c…

2026/9/16 1:17:32 阅读更多 →
跨域、SSE、WebSocket:前端实时通信与跨域方案深度解析

跨域、SSE、WebSocket:前端实时通信与跨域方案深度解析

跨域、SSE、WebSocket,这三个词你随便翻一份前端面试题集锦,基本都会出现;你再翻线上项目的告警日志,大概率也能看到它们相关的报错。我自己前后带过大小十来个项目,从最早的jQuery/iframe时代到现在的Vue/React单页应…

2026/9/16 1:17:32 阅读更多 →
用文档引导 Kubernetes 新贡献者:社区痛点剖析、实践原则与 2018 行动路线

用文档引导 Kubernetes 新贡献者:社区痛点剖析、实践原则与 2018 行动路线

用文档引导 Kubernetes 新贡献者:社区痛点剖析、实践原则与 2018 行动路线 【免费下载链接】community Kubernetes Community Documentation 项目地址: https://gitcode.com/GitHub_Trending/com/community 本文基于 2017 年 12 月 5 日 Kubernetes Contribu…

2026/9/16 1:17:32 阅读更多 →
Astryx Layout Regions 家族契约:Section、Layout 五槽位与 Toolbar 的页面结构化区域体系

Astryx Layout Regions 家族契约:Section、Layout 五槽位与 Toolbar 的页面结构化区域体系

Astryx Layout Regions 家族契约:Section、Layout 五槽位与 Toolbar 的页面结构化区域体系 【免费下载链接】astryx An open source design system thats fully customizable and agent ready 项目地址: https://gitcode.com/GitHub_Trending/as/astryx 导读…

2026/9/16 1:17:32 阅读更多 →
行星微生物组研究:通才物种与基因流动机制

行星微生物组研究:通才物种与基因流动机制

1. 行星微生物组研究的背景与意义微生物作为地球上最古老、分布最广泛的生命形式,构成了行星生态系统的隐形骨架。这项研究首次系统揭示了跨生境微生物群落的结构规律和基因流动机制,为我们理解微生物如何塑造地球环境提供了全新视角。在极端高温的深海热…

2026/9/16 1:16:31 阅读更多 →

日新闻

嵌入式三大高薪赛道:车规功能安全、RISC-V固件架构、边缘AI部署

嵌入式三大高薪赛道:车规功能安全、RISC-V固件架构、边缘AI部署

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

2026/9/16 0:00:51 阅读更多 →
IoT-For-Beginners 智能语音计时器:Wio Terminal 基于 DMAC 与 Flash 的音频采集实战

IoT-For-Beginners 智能语音计时器:Wio Terminal 基于 DMAC 与 Flash 的音频采集实战

IoT-For-Beginners 智能语音计时器:Wio Terminal 基于 DMAC 与 Flash 的音频采集实战 【免费下载链接】IoT-For-Beginners 12 Weeks, 24 Lessons, IoT for All! 项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners 本指南聚焦 GitHub Tren…

2026/9/16 0:01:52 阅读更多 →
基于MATLAB的CRI显色指数计算:从SPD光谱到Ra的完整流程

基于MATLAB的CRI显色指数计算:从SPD光谱到Ra的完整流程

简介:针对照明设计与光学研究中的光谱功率分布(SPD)与显色性指数(CRI)计算需求,这套MATLAB程序为照明工程师、LED研发人员及光学专业学生提供了轻量工具。代码通过解析光谱测量数据,自动完成波长…

2026/9/16 0:01:52 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/15 12:27:42 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/15 1:32:25 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/15 1:32:21 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/15 21:40:00 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/15 21:39:18 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/15 21:40:17 阅读更多 →