尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

在 goose 中接入 Google Maps MCP 服务器:地理编码、地点搜索与实时路径追踪实战

在 goose 中接入 Google Maps MCP 服务器:地理编码、地点搜索与实时路径追踪实战 在 goose 中接入 Google Maps MCP 服务器地理编码、地点搜索与实时路径追踪实战【免费下载链接】goosean open source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM项目地址: https://gitcode.com/GitHub_Trending/goose3/goose导读本文以 goose 官方扩展教程 google-maps-mcp.md 为核心讲解如何把基于 Model Context ProtocolMCP的 Google Maps 服务器以命令行扩展stdio extension的形式接入 goose从而为 AI Agent 赋予**地理编码geocoding、地点搜索place searching、距离计算distance calculations、海拔数据获取elevation data与导航路线directions**等真实世界的地理能力。读完本文你将掌握一条完整的接入链路从npx启动 MCP 服务器、注入GOOGLE_MAPS_API_KEY环境变量到用一句自然语言 Prompt 驱动 goose 完成实时定位追踪 → 路况感知 ETA 调整 → 客户动态通知的完整自动化闭环。⚠️ 适用范围提示本文对应的扩展服务器为modelcontextprotocol/server-google-maps官方文档已将其标注为archived已归档使用前请先确认该 npm 包仍可拉取与正常运行。但这不影响本文的接入方法价值——所有 MCP 风格npx -y server 环境变量鉴权的扩展接入 goose 的方式都是相通的你完全可以把同样的步骤套用到仍在维护的 Google Maps 类 MCP 服务器上。为什么把 Google Maps 接进 goosegoose 是一个开源、可扩展的 AI Agent其扩展体系完全建立在 MCP 协议之上。外部 MCP 服务器通过标准输入输出stdio或 Streamable HTTP 与 goose 通信goose 在会话中会把服务器暴露的每个 tool 暴露给大模型调用。接入 Google Maps MCP 后goose 就获得了与真实地理世界交互的手脚地理编码与逆地理编码将2111 Mission Street, San Francisco, CA这类地址转换为经纬度坐标或反向解析地点/POI 搜索查找某区域内的商家、餐厅、加油站等距离与耗时计算基于实际路网而非直线距离估算两点间的里程与行车时间海拔查询获取指定坐标的高程数据路线规划获取含实时路况的驾车/步行/骑行路线与预计到达时间ETA。从架构上看goose 的扩展管理器把扩展分成四种类型源码见 extension.rs 中的ExtensionConfig枚举stdio本地命令行/脚本、builtingoose 内置、platform进程内平台扩展与streamable_http远程 HTTP。Google Maps 属于典型的stdio类型goose 以子进程方式启动npx命令二者通过标准输入/输出交换 MCP 消息。快速安装两条命令之外只有一个 API KeyGoogle Maps API 要求每次请求都携带 API Key因此接入的核心要素就两样启动命令环境变量。启动命令Commandnpx -y modelcontextprotocol/server-google-maps环境变量Environment VariableGOOGLE_MAPS_API_KEY: YOUR_TOKEN如果你使用的是 goose Desktop可以直接点击扩展安装深链Deeplink把下方 URL 粘贴到浏览器地址栏即可唤起安装向导goose://extension?cmdnpxarg-yarg%40modelcontextprotocol%2Fserver-google-mapsidgoogle-mapsnameGoogle%20MapsdescriptionGoogle%20Maps%20API%20integrationenvGOOGLE_MAPS_API_KEY%3DGoogle%20Maps%20API%20key这条 Deeplink 对应 goose 的扩展安装协议。参考 using-extensions.md 中对 Deeplink 参数格式的说明cmd是基础命令允许的取值之一是npxarg可重复、每个参数独立传递-y与包名各占一个argid是唯一标识name/description是展示信息env用于预填环境变量。所有参数必须做 URL 编码例如包名中的需编码为%40、空格编码为%20。CLI 完整配置goose configure 七步走在 goose CLI 中配置入口是交互式命令goose configure。以下每一步对应的界面输出均摘自官方教程 google-maps-mcp.md可逐屏对照。第 1 步运行配置命令goose configure第 2 步选择添加命令行扩展。先选Add Extension (Connect to a new extension)然后在扩展类型中选择Command-line Extension (Run a local command or script)——这就是上文说的stdio类型即让 goose 运行一条本地命令作为扩展进程┌ goose-configure │ ◇ What would you like to configure? │ Add Extension (Connect to a new extension) │ ◆ What type of extension would you like to add? │ ○ Built-in Extension │ ● Command-line Extension (Run a local command or script) │ ○ Remote Extension (Streamable HTTP) └第 3 步给扩展起名例如Google Maps◆ What would you like to call this extension? │ Google Maps第 4 步输入要执行的命令◆ What command should be run? │ npx -y modelcontextprotocol/server-google-maps注意这里需要 Node.js 运行时——因为npx是 Node.js 自带的包执行器教程中的提示youll need Node.js installed on your system to run this command与 goose 其他npx类扩展如 brave-mcp.md保持一致。第 5 步设置超时时间。默认值是300秒即 goose 等待该扩展单个 tool 调用完成的时长上限◆ Please set the timeout for this tool (in secs): │ 300在 goose 源码中DEFAULT_EXTENSION_TIMEOUT: u64 300正是这个默认值见 extensions.rs。300 秒是针对单次 tool 调用的等待上限而 Google Maps 的路线规划通常只需数秒即可返回只有在网络异常或 API 无响应时才可能触顶。第 6 步选择是否补充描述。如果选 Yes 会被继续要求输入一段描述文字本教程示例中直接选择No。第 7 步配置环境变量。这是鉴权关键一步——先到 Google Cloud Console 申请 Maps API Key然后选择Yes添加环境变量变量名填GOOGLE_MAPS_API_KEY变量值粘贴你的 Key界面中以掩码▪▪▪▪显示不会明文回显◆ Would you like to add environment variables? │ Yes │ ◇ Environment variable name: │ GOOGLE_MAPS_API_KEY │ ◇ Environment variable value: │ ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪ │ ◇ Add another environment variable? │ No └ Added google-maps extension落盘格式扩展配置到底写进了哪里goose configure的所有选择最终都会写入 goose 的全局配置文件默认路径为~/.config/goose/config.yaml各平台位置见 config-files.md中的extensions字段。对照上面七步落盘后的 YAML 大致如下extensions: google-maps: name: Google Maps type: stdio enabled: true cmd: npx args: [-y, modelcontextprotocol/server-google-maps] timeout: 300 description: Google Maps API integration envs: GOOGLE_MAPS_API_KEY: YOUR_API_KEY这些字段与 extension.rs 中ExtensionConfig::Stdio变体一一对应name是扩展标识名cmd/args拼出要启动的进程envs注入环境变量timeout覆盖默认 300 秒上限。从 extensions.rs 的name_to_key函数可以看出一个细节配置键由名称归一化而来——大写转小写、空格去除、其余非字母数字字符替换为下划线。因此界面里命名为 Google Maps 的扩展落盘键名是google-maps而官方教程结尾输出中显示Added google-maps extension与此一致。高级用户也可以绕过交互式向导直接编辑该 YAML。goose 解析时对envs字段还兼容env别名写法且允许在扩展缺省name时自动回退使用 map 键作为名称——这一点有crates/goose/src/config/extensions.rs中test_stdio_env_alias_accepted、test_stdio_without_name_uses_map_key等单元测试作为实现证据。需要提醒的是不要把 API Key 硬编码进仓库或提交到版本控制。goose 支持将密钥写入独立的 secrets 文件goose configure中也能选择性地保存扩展密钥如果使用环境变量注入请确保 Key 来自受保护的环境或 goose 密钥存储。启用、停用与移除扩展默认在添加时即启用。会话级开关在 CLI 中通过/extension npx -y modelcontextprotocol/server-google-maps可当场临时挂载goose session --with-extension GOOGLE_MAPS_API_KEYKEY npx -y modelcontextprotocol/server-google-maps可在不安装的情况下仅为当前会话启动该扩展注意环境变量要写在命令最前面。想永久变更默认启用集运行goose configure→Toggle Extensions用空格键切换启用状态。删除扩展须先停用再移除移除入口同样在goose configure中。这些管理方式与通用扩展一致完整说明可参考 using-extensions.md。实战示例让 goose 当一名路况感知的配送调度员配置完成后goose 并非只能回答A 到 B 有多远这种单点问题。由于 goose 是自主 Agent它能把地理编码、路线规划、ETA 计算等多个 tool编排成一条完整业务流程。官方教程给出的是一个配送实时追踪场景goose 追踪司机位置、感知路况、动态调整 ETA并在延误时自动通知客户。goose Prompt一句话下达完整任务Track the live GPS location of driver ID #12345. Query Google Maps for real-time traffic data and adjust the estimated delivery time if delays exceed 5 minutes. If ETA changes, update the customers live tracker and send an SMS notification. If the delay is greater than 20 minutes, check if another driver within a 1-mile radius can take over the delivery.这段话展示了 MCP 地理能力与 Agent 编排结合后的威力goose 需要自己拆解出轮询 GPS → 逆地理/地理编码 → 获取带路况的路线 → 比较 ETA → 触发通知/寻找替代司机的子任务序列并决定每一步调用哪个扩展 tool。goose 的自主执行过程节选自官方教程输出① 追踪司机 GPS 位置goose 按时间序列接收司机坐标起始点为 Oakland 某地址每分钟一条经纬度记录2025-02-23 08:20:00: Latitude: 37.8074, Longitude: -122.2697 (Starting point) 2025-02-23 08:21:00: Latitude: 37.8080, Longitude: -122.2690 2025-02-23 08:22:00: Latitude: 37.8090, Longitude: -122.2680 2025-02-23 08:23:00: Latitude: 37.8100, Longitude: -122.2670② 地理编码目的地把客户地址2111 Mission Street, San Francisco, CA交给maps_geocodetool得到坐标─── maps_geocode | googlemaps ────────────────────────── address: 2111 Mission Street, San Francisco, CA Latitude: 37.7631446 Longitude: -122.4192073③ 获取初始路线与 ETA调用maps_directions以 driving 模式规划起点→目的地路线─── maps_directions | googlemaps ────────────────────────── destination: 2111 Mission St, San Francisco, CA mode: driving Distance: 12.1 miles Initial ETA: 21 minutes Estimated arrival at: 08:41 AM④ 周期性监测路况并重算 ETA行驶中途08:35 AM出现交通事故goose 再次调用maps_directions用当前位置重算路线从响应中读出附加信息Expect delays due to congestionRemaining Distance: 7 miles Updated ETA: 26 minutes Estimated arrival at: 08:46 AM对比原 ETA08:41 AM预计延误已达 5 分钟——满足 Prompt 中的触发条件。注意一个值得借鉴的失败处理细节goose 第一次尝试直接用经纬度作为origin调用maps_directions时失败了I am unable to use the lat/long for the request它随即自我纠错改用可解析的地点名称再次请求并成功。这说明在实际接入中Google Maps 部分 tool 对输入格式有约束Agent 的推理循环能天然地处理这类参数兼容问题。⑤ 更新客户并发送通知goose 将新 ETA 同步到客户的实时追踪界面并通过短信告知客户Your delivery is now expected to arrive at approximately 08:46 AM due to traffic. We apologize for the inconvenience.官方示例中短信能力由其他扩展如 Webhooks、ClickSend 等承担——这正好体现了 goose 扩展体系的组合性Google Maps 负责地理与路况感知其余扩展负责送达与通知多个 MCP 服务器在同一个 Agent 会话内协作。排查与注意事项结合官方教程与 goose 扩展机制落地时请重点核对以下几点服务器归档状态modelcontextprotocol/server-google-maps已被标记为 archived。若npx拉取失败需寻找维护中的替代 MCP 服务器接入方法完全相同换包名 配好 API Key 即可goose 也内置了扩展目录便于发现可用服务器。Node.js 前置npx需要 Node.js 运行时缺失时会报找不到 npx之类的错误goose 官方教程对此有明确提示。API Key 与配额Google Maps API 按接口计费且有配额限制。高频轮询司机会消耗较多配额——教程示例中每几秒获取一次 GPS 坐标应理解为业务侧数据源真正触发 Google Maps 调用的是 ETA 重算这类请求。建议用最小必要频率调用maps_directions。输入格式约束如示例所示某些 tool 不接受裸经纬度作为 origin/destination优先使用可解析地址或受支持的格式可减少 Agent 的试错往返。超时与权限单次 tool 调用受timeout默认 300 秒约束若你的场景需要更长等待或更精细的权限管控可编辑配置文件中该扩展的timeout字段并结合 goose 的权限模式控制工具调用范围。总结把 Google Maps MCP 服务器接入 goose 并不复杂一条npx命令 一个GOOGLE_MAPS_API_KEY环境变量通过goose configure的交互式向导或直接编辑~/.config/goose/config.yaml的extensions段落即可完成。接入后goose 便在对话中获得了地理编码、地点搜索、距离计算、海拔与实时路线/ETA 等一组地理工具并能像配送调度示例那样把这些工具编排成定位 → 算路 → 感知路况 → 动态通知的自动化业务流程。这套stdio 扩展 环境变量鉴权 Agent 自主编排的接入模式适用于所有 MCP 服务器是扩展 goose 真实世界能力最通用的方式。【免费下载链接】goosean open source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM项目地址: https://gitcode.com/GitHub_Trending/goose3/goose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表