Skip to main content

Google Maps Extension

This tutorial covers how to add the Google Maps MCP Server as a Goose extension to enable geocoding, place searching, distance calculations, elevation data retrieval, and directions.

TLDR

Command

npx -y @modelcontextprotocol/server-google-maps

Environment Variable

GOOGLE_MAPS_API_KEY: <YOUR_TOKEN>

Configuration

info

Note that you'll need Node.js installed on your system to run this command, as it uses npx.

  1. Run the configure command:
goose configure
  1. Choose to add a Command-line Extension
  ┌   goose-configure 

◇ What would you like to configure?
│ Add Extension

◆ What type of extension would you like to add?
│ ○ Built-in Extension
│ ● Command-line Extension (Run a local command or script)
│ ○ Remote Extension

  1. Give your extension a name
  ┌   goose-configure 

◇ What would you like to configure?
│ Add Extension

◇ What type of extension would you like to add?
│ Command-line Extension

◆ What would you like to call this extension?
│ Google Maps

  1. Enter the command
  ┌   goose-configure 

◇ What would you like to configure?
│ Add Extension

◇ What type of extension would you like to add?
│ Command-line Extension

◇ What would you like to call this extension?
│ Google Maps

◆ What command should be run?
│ npx -y @modelcontextprotocol/server-google-maps

  1. Obtain a Google Maps API Key and paste it in.
 ┌   goose-configure 

◇ What would you like to configure?
│ Add Extension

◇ What type of extension would you like to add?
│ Command-line Extension

◇ What would you like to call this extension?
│ Google Maps

◇ What command should be run?
│ npx -y @modelcontextprotocol/server-google-maps
◆ Would you like to add environment variables?
│ Yes

◇ Environment variable name:
│ GOOGLE_MAPS_API_KEY

◇ Environment variable value:
│ ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪

◇ Add another environment variable?
│ No
└ Added github extension

Example Usage

Goose acts as an autonomous agent that tracks a delivery driver’s location, updates the customer in real-time, and adjusts ETAs dynamically based on Google Maps traffic data.

Goose can:

Monitor Driver Location

  • Goose gets the driver’s GPS coordinates every few seconds.
  • If the driver’s location is significantly behind schedule, Goose recalculates the ETA.

Traffic-Aware ETA Adjustments

  • Goose queries Google Maps for live traffic conditions.
  • If delays are detected, Goose updates the customer’s tracker with a new estimated time.

Dynamic Customer Notifications

  • If the driver is stuck in traffic, Goose sends an alert to the customer: “Your driver is running late due to traffic. Updated ETA: 7:25 PM.”
  • If the driver is ahead of schedule, Goose notifies the restaurant to prepare the food earlier.

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 customer’s 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.

Goose Output

CLI

Okay, I will track Driver #12345, query Google Maps for traffic data, adjust the ETA, and notify the customer.

Track Driver's GPS Location

  • Driver ID: #12345
  • Starting Point: 1955 Broadway, Suite 600, Oakland, CA 94612

Driver #12345's movement:

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

Geocode Destination Address

  • Customer Address: 2111 Mission Street, San Francisco, CA

I will convert this address into geographic coordinates:

─── maps_geocode | googlemaps ──────────────────────────

address: 2111 Mission Street, San Francisco, CA

Latitude: 37.7631446
Longitude: -122.4192073

Get Initial Directions and ETA

I will get the initial route and ETA from the driver's starting point to the customer's address.

─── maps_directions | googlemaps ──────────────────────────

destination: 2111 Mission St, San Francisco, CA mode: driving origin: ...

Distance: 12.1 miles
Initial ETA: 21 minutes
Estimated arrival at: 08:41 AM

Monitor Traffic and Adjust ETA

I will monitor traffic updates and recalculate the ETA periodically.

Remaining Distance: 8 miles
Updated ETA: 15 minutes
Estimated arrival at: 08:45 AM

There is no significant delay.

At 08:35 AM: There's a traffic incident.

─── maps_directions | googlemaps ──────────────────────────

destination: 2111 Mission St, San Francisco, CA mode: driving origin: Latitude: 37.8100, Longitude: -122.2670

I apologize, I am unable to use the lat/long for the request. I will call google maps api with names instead.

─── maps_directions | googlemaps ──────────────────────────

destination: 2111 Mission St, San Francisco, CA mode: driving origin: ...

Remaining Distance: 7 miles
Updated ETA: 26 minutes
Estimated arrival at: 08:46 AM

The ETA has increased by 5 minutes from the original ETA of 08:41 AM. The directions now include a message: "Expect delays due to congestion."

Update Customer and Send SMS

[... other extensions used (e.g. Webhooks, MySQL, ClickSend)...]

  • Update Live Tracker: The customer's live tracking interface is updated to reflect the new ETA of 08:46 AM.
  • Send SMS Notification: "Your delivery is now expected to arrive at approximately 08:46 AM due to traffic. We apologize for the inconvenience."