
MCP Toolbox 数据库工具集looker-get-agent 工具实战指南【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolboxlooker-get-agent是 MCP Toolbox 为 Looker 集成提供的一组会话分析Conversation Analytics管理工具之一它允许 LLM大语言模型通过 Looker Go SDK 按 ID 精确检索某个已存在的 Looker Agent。本指南以其官方文档 looker-get-agent.md 为核心结合仓库内 lookergetagent.go 源码与 Looker 数据源实现完整讲解该工具的定义方式、参数语义、调用链路与配套工具生态帮助读者在server.yaml中正确启用并理解其底层原理。工具定位按 ID 检索 Looker Agentlooker-get-agent是 MCP Toolbox 中 Looker 工具族的一员功能是检索一个指定的 Looker Agent。它面向 Looker 的会话分析Conversation Analytics能力当 LLM 在对话流程中需要获取某个 Agent 的详细配置如名称、指令、绑定数据源时即可调用该工具。从源码看该工具的实现位于 internal/tools/looker/lookergetagent/lookergetagent.go第 32 行注册资源类型const resourceType string looker-get-agent并在init()中通过tools.Register(resourceType, newConfig)注册到工具注册表第 143 行实际调用 Looker Go SDK 的sdk.GetAgent(agentId, , source.LookerApiSettings())完成远端查询返回值直接透传给调用方即 Looker API 返回的 Agent 对象。快速上手在 server.yaml 中定义工具要在 MCP Toolbox 服务器中使用该工具必须在server.yaml文件中显式声明。文档给出了最小 JSON 调用形态即参数agent_id为必填用于指定要检索的 Agent ID{ name: looker-get-agent, parameters: { agent_id: 123 } }上述 JSON 是 LLM 调用工具时的请求负载。而在服务器配置层面工具本身需要在server.yaml中按工具定义的方式注册示例如下kind: tool name: get_agent type: looker-get-agent source: my-looker-instance description: | Retrieve a Looker agent. - agent_id (string): The ID of the agent.这里每个字段的语义为字段类型必填说明kindstring是固定为tool声明这是一个工具定义namestring是工具在 MCP 服务器内的唯一名称供 LLM 调用如get_agenttypestring是必须为looker-get-agent指定工具类型对应源码中的resourceTypesourcestring是Looker 数据源名称即server.yaml中声明的 source 的名称如my-looker-instancedescriptionstring是传给 LLM 的工具描述用于让模型理解该工具何时调用以及参数含义从 lookergetagent.go 第 55-60 行的Config结构可以看到type与source都带有validate:required约束第 69-72 行的Initialize方法还会强制校验description若为空则直接返回错误description is required for tool %q。因此上述三项缺一不可。参数与调用语义agent_id唯一的运行时参数looker-get-agent只接受一个运行时参数agent_id字符串类型对应要检索的 Looker Agent 的 ID。文档示例中的123为字符串形式的数字 ID。源码中该参数在第 74 行通过parameters.NewStringParameter(agent_id, The ID of the agent., parameters.WithStringDefault())定义默认值为空字符串。第 135-142 行的调用逻辑为从参数映射中取出agent_id若为空则返回客户端错误agent_id must be specifiedHTTP 400。也就是说LLM 必须在每次调用时提供有效的agent_id空值会被显式拒绝。只读标注lookergetagent.go 第 81-82 行将工具的ReadOnlyHint置为true即该工具被标记为只读操作——它只查询 Agent 信息不产生任何写副作用。这一标注会被 MCP 服务器用于权限与行为约束也符合检索类工具的定位。调用链路与源码级原理1. 工具注册looker-get-agent在包初始化阶段调用tools.Register(resourceType, newConfig)注册自身newConfig使用 goccy/go-yaml 解码器将 YAML 工具定义解码为Config结构体lookergetagent.go 第 40-46 行。2. 数据源兼容性校验该工具要求其source必须是实现了compatibleSource接口的数据源lookergetagent.go 第 48-53 行type compatibleSource interface { UseClientAuthorization() bool GetAuthTokenHeaderName() string LookerApiSettings() *rtl.ApiSettings GetLookerSDK(context.Context, string) (*v4.LookerSDK, error) }ValidateSource在服务器启动阶段即校验source是否满足该接口不匹配会返回invalid source for looker-get-agent tool错误。Looker 数据源 internal/sources/looker/looker.go 正是这些方法的实现者。3. 获取 SDK 并执行查询调用时lookergetagent.go 第 117-150 行的核心流程从上下文获取 logger调用source.GetLookerSDK(ctx, accessToken)获得 Looker SDK v4 实例失败则返回 500校验agent_id非空否则 400执行sdk.GetAgent(agentId, , source.LookerApiSettings())若 SDK 返回错误中包含status401则映射为 HTTP 401 未授权错误其余错误走util.ProcessGeneralError统一处理成功则原样返回 Agent 对象。在 Looker 数据源侧internal/sources/looker/looker.go 第 249-281 行GetLookerSDK会根据use_client_oauth配置走两条路径开启客户端授权默认UseClientAuthorization()返回strings.ToLower(s.UseClientOAuth) ! false时要求调用必须携带 access token并通过transportWithAuthHeader把Authorization头、x-looker-appid: go-sdk头以及客户端 IP 附加到每个请求上关闭时使用数据源配置的client_id/client_secret建立的持久 SDK 客户端。4. 鉴权与令牌传递该工具实现了RequiresClientAuthorization与GetAuthTokenHeaderNamelookergetagent.go 第 154-168 行把是否要求客户端授权、以及令牌应放置的 HTTP 头名称均委托给数据源决定。这意味着在启用了客户端 OAuth 的场景下LLM 发起的检索请求会携带调用方自己的凭据实现端到端的用户级授权。Looker 数据源配置要点looker-get-agent依赖一个有效的 Looker source。在server.yaml中声明 Looker 数据源时internal/sources/looker/looker.go 第 68-84 行的Config结构支持以下关键字段字段类型必填说明namestring是数据源名称工具定义中的source字段须与此对应typestring是固定为 Looker 数据源类型base_urlstring是Looker 实例的 API 基础地址会写入 SDK 的ApiSettings.BaseUrlclient_idstring否Looker API 客户端 ID服务端授权模式使用client_secretstring否Looker API 客户端密钥verify_sslbool否是否校验证书默认关闭关闭时日志会输出 TLS 校验跳过警告use_client_oauthstring否是否使用客户端 OAuth端用户令牌默认false之外的值均视为开启timeoutstring否请求超时time.Duration 字符串会解析为秒数写入 SDKshow_hidden_models / show_hidden_explores / show_hidden_fieldsbool否是否暴露隐藏的模型/Explore/字段默认均为trueproject / location / quotaProjectstring否与 Google Cloud 集成相关的项目与位置信息数据源初始化时会把上述配置组装为rtl.ApiSettingsAPI 版本固定为4.0并构建 SDK 客户端。因此在使用looker-get-agent前需确保server.yaml中已存在一个指向目标 Looker 实例且凭据正确的 source。配套 Agent 管理工具族looker-get-agent并非孤立存在MCP Toolbox 提供了一整套 Looker Agent 生命周期管理工具方便 LLM 自主完成列出 → 获取 → 创建 → 更新 → 删除的闭环工具类型功能文档looker-list-agents列出所有 Agent无参数looker-list-agents.mdlooker-get-agent按agent_id检索单个 Agentlooker-get-agent.mdlooker-create-agent创建 Agent支持name、instructions、sources、code_interpreter等参数looker-create-agent.mdlooker-update-agent更新已有 Agentlooker-update-agent.mdlooker-delete-agent删除 Agentlooker-delete-agent.md典型的 Agent 管理流程是先通过looker-list-agents拿到 Agent 列表与 ID再用looker-get-agent查看某个 Agent 的详细配置据此决定是创建、更新还是删除。若 LLM 需要进一步利用这些 Agent 分析数据还可配合looker-conversational-analytics工具looker-conversational-analytics.md向其提交自然语言问题与 15 个model/explore组合。常见错误与排查根据源码中的错误处理逻辑使用looker-get-agent时可能遇到以下几类问题现象可能原因对应处理启动时报description is required工具定义缺少description字段补齐工具描述lookergetagent.go 第 70-72 行启动时报invalid source ... not a compatible typesource字段指向了非 Looker 类型的数据源将source指向正确的 Looker source第 109-115 行调用返回 400agent_id must be specified调用未携带agent_id或值为空在参数中传入有效的 Agent ID第 140-142 行调用返回 401 未授权access token 缺失或无效客户端 OAuth 模式检查调用方凭据与令牌头配置第 145-147 行、第 249-255 行调用返回 500error getting sdkSDK 创建失败常见于client_id/client_secret无效非客户端授权模式核对数据源凭据第 127-130 行、第 277-280 行小结looker-get-agent为 LLM 提供了按 ID 检索 Looker Conversation Analytics Agent 的标准能力是 Agent 管理工具族中查询详情的关键一环。其使用门槛很低在server.yaml中声明一个type: looker-get-agent的工具定义source指向已配置的 Looker 数据源并在调用时传入agent_id即可。理解其背后由compatibleSource接口、GetLookerSDK与GetAgent构成的调用链路以及客户端 OAuth 与客户端凭据两种授权模式有助于在真实部署中快速定位配置与鉴权问题构建可靠的 LLM Looker 会话分析工作流。【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考