Google Maps Extension
Server archived
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.
- goose Desktop
 - goose CLI
 
Command
npx -y @modelcontextprotocol/server-google-maps
Environment Variable
GOOGLE_MAPS_API_KEY: <YOUR_TOKEN>
Configuration
Note that you'll need Node.js installed on your system to run this command, as it uses npx.
- goose Desktop
 - goose CLI
 
- Launch the installer
 - Click 
OKto confirm the installation - Get your Google Maps API Key and paste it in
 - Click 
Add Extension - Click the button in the top-left to open the sidebar
 - Navigate to the chat
 
- Run the 
configurecommand: 
goose configure
- Choose to add a 
Command-line Extension 
  ┌   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 (SSE) 
  │  ○ Remote Extension (Streaming HTTP) 
  └ 
- Give your extension a name
 
  ┌   goose-configure 
  │
  ◇  What would you like to configure?
  │  Add Extension (Connect to a new extension) 
  │
  ◇  What type of extension would you like to add?
  │  Command-line Extension 
  │
  ◆  What would you like to call this extension?
  │  Google Maps
  └ 
- Enter the command
 
  ┌   goose-configure 
  │
  ◇  What would you like to configure?
  │  Add Extension (Connect to a new 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
  └ 
- Enter the number of seconds Goose should wait for actions to complete before timing out. Default is 300s
 
 ┌   goose-configure 
 │
 ◇  What would you like to configure?
 │  Add Extension (Connect to a new 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
 │
 ◆  Please set the timeout for this tool (in secs):
 │  300
 └ 
- Choose to add a description. If you select "Yes" here, you will be prompted to enter a description for the extension.
 
 ┌   goose-configure 
 │
 ◇  What would you like to configure?
 │  Add Extension (Connect to a new 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
 │
 ◆  Please set the timeout for this tool (in secs):
 │  300
 │
 ◇  Would you like to add a description?
 │  No
 │
 └ 
- Obtain a Google Maps API Key and paste it in.
 
 ┌   goose-configure 
 │
 ◇  What would you like to configure?
 │  Add Extension (Connect to a new 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
 │
 ◇  Please set the timeout for this tool (in secs):
 │  300
 │
 ◇  Would you like to add a description?
 │  No
 │   
 ◆  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
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."