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),仅供参考