Skip to main content
Glama
google-maps-transit

google-maps-transit

by Ocean-Ch

maps-mcp

A Model Context Protocol server for Google Maps — routing, place discovery, and commute comparison over stdio.

Tools

get_transit_commute

Route between two addresses (or neighborhoods). Supports transit (default), driving, walking, bicycling, two_wheeler. Multi-leg trips via intermediates (A→B→C). Returns up to 3 alternative routes, each with:

  • mode, duration_minutes, distance_km, summary, steps_count

  • transit: segments (line + vehicle type), transfers, walking_minutes, first_departure, last_arrival

  • driving / two_wheeler: duration_in_traffic_minutes (traffic-aware), toll_roads

search_places

Find restaurants, hotels, attractions, parks, gas stations, etc. using free-text queries. Optionally bias by location (near), filter by place type (type), and filter to currently-open places (open_now). Returns up to 20 results with name, address, rating, price level, open/closed status, and a id for follow-up.

get_place_details

Full details for a place from search_places: phone, website, per-day opening hours, editorial summary, and up to 5 user reviews. Takes a place_id.

compare_commutes

Rank 2–5 candidate origins against a shared destination by travel time. Fans out in parallel and returns results sorted fastest → slowest. Per-origin failures surface inline rather than aborting the whole comparison.

Related MCP server: MCP Google Map Server

Google Cloud setup

In Google Cloud Console, pick or create a project and enable these APIs (APIs & Services → Library):

  • Routes API — for get_transit_commute and compare_commutes

  • Places API (New) — for search_places and get_place_details

Then Credentials → Create credentials → API key. Restrict the key to those two APIs. Put the value in .env:

echo 'GOOGLE_MAPS_API_KEY=your-key-here' > .env

Setup & running

npm install
npm run build
npm start          # or: npx tsx src/index.ts  (dev, no build needed)

Make target

What it does

make install

npm ci

make build

Compile TypeScript → dist/

make dev / make start

Run server (dev / compiled)

make test

Unit + in-memory e2e tests

make test-live

Live API test (needs key)

make smoke

One real API request

make docker-build / make docker-run

Build/run Docker image

Connecting a client (e.g. Cursor / Claude Desktop)

{
  "mcpServers": {
    "maps-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/maps-mcp/dist/index.js"],
      "env": { "GOOGLE_MAPS_API_KEY": "your-key-here" }
    }
  }
}

For dev without building: "command": "npx", "args": ["tsx", "/absolute/path/to/maps-mcp/src/index.ts"].

Notes

  • MCP server name: google-maps-transit

  • driving and two_wheeler use TRAFFIC_AWARE routing (Routes API v2)

  • Up to MAX_ROUTES = 3 alternatives returned; Google may return fewer

  • Missing GOOGLE_MAPS_API_KEY surfaces as a clear tool error

Available Tools

4 tools
compare_commutescompare_commutesA
Read-only

Compares commute times from multiple candidate origins to a single shared destination using real-time Google Maps data.

        Perfect for questions like:
        • "Which of these 3 apartments has the best commute to my office?"
        • "I'm considering moving to Brooklyn, Queens, or Jersey City — which is fastest to Midtown?"
        • "Compare driving vs. transit isn't needed — just rank these addresses by commute time."

        Accepts 2–5 origin addresses. Returns them ranked fastest → slowest, each with the best
        available route (duration, distance, transit lines, traffic-aware driving time, etc.).
        Failed lookups for individual origins are surfaced as errors in-line rather than aborting the whole comparison.

Inputs: origins (required), destination (required), mode, avoid_tolls, +1 more. Returns: mode, results, destination

get_place_detailsget_place_detailsA
Read-only

Returns detailed information about a specific place: phone number, website URL, full opening hours for each day of the week, a short editorial summary, and up to 5 user reviews.

        Always requires a place ID obtained from a prior search_places call.
        Use this as a follow-up when the user wants full details about one of the search results, e.g.
        • "What are the opening hours for that first restaurant?"
        • "Does it have a website I can check?"
        • "Show me the reviews for the top result."

Inputs: place_id (required). Returns: id, name, hours, phone, +9 more

get_transit_commuteget_transit_commuteA

Returns commute routes between two addresses using real-time Google Maps data. Use this when the user asks about commute, travel time, or exact travel times between two addresses. Supports transit, driving, walking, bicycling, and two_wheeler modes. Supports multi-leg trips via the intermediates parameter (e.g. A→B→C). Returns up to 3 alternative routes, each with duration in minutes, transit lines used, number of transfers, and walking time.

Inputs: origin (required), destination (required), mode, avoid_tolls, +2 more. Returns: routes

search_placessearch_placesA
Read-only

Searches for places — restaurants, cafés, hotels, attractions, shops, parks, and more — using real-time Google Maps data.

        Use this when the user asks things like:
        • "Find coffee shops near the Eiffel Tower"
        • "Best sushi restaurants in downtown Seattle"
        • "Dog-friendly parks in Austin, TX"
        • "Museums open right now in London"
        • "Gas stations along Highway 1"

        Returns up to 20 results with name, address, star rating, price level, open/closed status, and type tags.
        To get phone number, website, opening hours, and user reviews for a specific result, pass its id to get_place_details.

Inputs: query (required), near, type, open_now, +1 more. Returns: places, query_used

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 4 tools

    Disambiguation4/5

    search_places and get_place_details are cleanly separated as search vs. detail lookup, and the commute tools have distinct scopes (point-to-point vs. multi-origin ranking). The only mild overlap is between get_transit_commute and compare_commutes, both of which compute routes, though the descriptions make the boundary fairly clear.

    Naming Consistency5/5

    All four tools follow a consistent snake_case verb_noun pattern: get_transit_commute, search_places, get_place_details, compare_commutes. The convention is predictable and self-explanatory.

    Tool Count4/5

    Four tools is slightly lean for a maps server covering both routing and place discovery, but each tool earns its place and there is no redundancy. It is well-scoped, just on the minimal side.

    Completeness4/5

    The surface covers commute/routing (including multi-leg and comparison ranking) and a full place search-plus-detail lifecycle. Minor gaps exist—no standalone distance matrix, geocoding, or turn-by-turn directions—but core agent workflows are supported.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers