@cablate/mcp-google-map 0.0.33 → 0.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  Give your AI agent the ability to understand the physical world — geocode, route, search, and reason about locations.
8
8
 
9
- - **10 tools** — geocode, reverse-geocode, search-nearby, search-places, place-details, directions, distance-matrix, elevation, timezone, weather
9
+ - **13 tools** — 10 atomic + 3 composite (explore-area, plan-route, compare-places)
10
10
  - **3 modes** — stdio, StreamableHTTP, standalone exec CLI
11
11
  - **Agent Skill** — built-in skill definition teaches AI how to chain geo tools ([`skills/google-maps/`](./skills/google-maps/))
12
12
 
@@ -14,7 +14,7 @@ Give your AI agent the ability to understand the physical world — geocode, rou
14
14
 
15
15
  | | This project | [Grounding Lite](https://cloud.google.com/blog/products/ai-machine-learning/announcing-official-mcp-support-for-google-services) |
16
16
  |---|---|---|
17
- | Tools | **10** | 3 |
17
+ | Tools | **13** | 3 |
18
18
  | Geocoding | Yes | No |
19
19
  | Step-by-step directions | Yes | No |
20
20
  | Elevation | Yes | No |
@@ -22,6 +22,7 @@ Give your AI agent the ability to understand the physical world — geocode, rou
22
22
  | Place details | Yes | No |
23
23
  | Timezone | Yes | No |
24
24
  | Weather | Yes | Yes |
25
+ | Composite tools (explore, plan, compare) | Yes | No |
25
26
  | Open source | MIT | No |
26
27
  | Self-hosted | Yes | Google-managed only |
27
28
  | Agent Skill | Yes | No |
@@ -56,7 +57,11 @@ Special thanks to [@junyinnnn](https://github.com/junyinnnn) for helping add sup
56
57
  | `maps_directions` | Get step-by-step navigation between two points with route details. |
57
58
  | `maps_elevation` | Get elevation (meters above sea level) for geographic coordinates. |
58
59
  | `maps_timezone` | Get timezone ID, name, UTC/DST offsets, and local time for coordinates. |
59
- | `maps_weather` | Get current weather conditions — temperature, humidity, wind, UV, precipitation. |
60
+ | `maps_weather` | Get current weather conditions or forecast — temperature, humidity, wind, UV, precipitation. |
61
+ | **Composite Tools** | |
62
+ | `maps_explore_area` | Explore what's around a location — searches multiple place types and gets details in one call. |
63
+ | `maps_plan_route` | Plan an optimized multi-stop route — geocodes, finds best order, returns directions. |
64
+ | `maps_compare_places` | Compare places side-by-side — searches, gets details, and optionally calculates distances. |
60
65
 
61
66
  All tools are annotated with `readOnlyHint: true` and `destructiveHint: false` — MCP clients can auto-approve these without user confirmation.
62
67
 
@@ -106,7 +111,7 @@ Then configure your MCP client:
106
111
  ### Server Information
107
112
 
108
113
  - **Transport**: stdio (`--stdio`) or Streamable HTTP (default)
109
- - **Tools**: 10 Google Maps tools
114
+ - **Tools**: 13 Google Maps tools (10 atomic + 3 composite)
110
115
 
111
116
  ### CLI Exec Mode (Agent Skill)
112
117
 
@@ -117,7 +122,7 @@ npx @cablate/mcp-google-map exec geocode '{"address":"Tokyo Tower"}'
117
122
  npx @cablate/mcp-google-map exec search-places '{"query":"ramen in Tokyo"}'
118
123
  ```
119
124
 
120
- All 10 tools available: `geocode`, `reverse-geocode`, `search-nearby`, `search-places`, `place-details`, `directions`, `distance-matrix`, `elevation`, `timezone`, `weather`. See [`skills/google-maps/`](./skills/google-maps/) for the agent skill definition and full parameter docs.
125
+ All 13 tools available: `geocode`, `reverse-geocode`, `search-nearby`, `search-places`, `place-details`, `directions`, `distance-matrix`, `elevation`, `timezone`, `weather`, `explore-area`, `plan-route`, `compare-places`. See [`skills/google-maps/`](./skills/google-maps/) for the agent skill definition and full parameter docs.
121
126
 
122
127
  ### API Key Configuration
123
128
 
@@ -209,7 +214,10 @@ src/
209
214
  │ ├── directions.ts # maps_directions tool
210
215
  │ ├── elevation.ts # maps_elevation tool
211
216
  │ ├── timezone.ts # maps_timezone tool
212
- └── weather.ts # maps_weather tool
217
+ ├── weather.ts # maps_weather tool
218
+ │ ├── exploreArea.ts # maps_explore_area (composite)
219
+ │ ├── planRoute.ts # maps_plan_route (composite)
220
+ │ └── comparePlaces.ts # maps_compare_places (composite)
213
221
  └── utils/
214
222
  ├── apiKeyManager.ts # API key management
215
223
  └── requestContext.ts # Per-request context (API key isolation)
@@ -241,6 +249,38 @@ skills/
241
249
 
242
250
  For enterprise security reviews, see [Security Assessment Clarifications](./SECURITY_ASSESSMENT.md) — a 23-item checklist covering licensing, data protection, credential management, tool contamination, and AI agent execution environment verification.
243
251
 
252
+ ## Roadmap
253
+
254
+ ### New Tools
255
+
256
+ | Tool | What it unlocks | Status |
257
+ |------|----------------|--------|
258
+ | `maps_static_map` | Return map images with pins/routes — multimodal AI can "see" the map | Planned |
259
+ | `maps_air_quality` | AQI, pollutants — health-aware travel, outdoor planning, real estate | Planned |
260
+ | `maps_validate_address` | Standardize and verify addresses — logistics/e-commerce | Planned |
261
+ | `maps_isochrone` | "Show me everything within 30 min drive" — reachability analysis | Planned |
262
+ | `maps_batch_geocode` | Geocode hundreds of addresses in one call — data enrichment | Planned |
263
+
264
+ ### Capabilities
265
+
266
+ | Feature | What it unlocks | Status |
267
+ |---------|----------------|--------|
268
+ | Spatial Context | Agent remembers "the area we were just looking at" across turns | Research |
269
+ | Geo Agent Template | One command to spin up a full geo-aware AI agent | Research |
270
+ | Geo-Reasoning Benchmark | 10-scenario test suite measuring LLM geospatial reasoning accuracy | Research |
271
+
272
+ ### Use Cases We're Building Toward
273
+
274
+ These are the real-world scenarios driving our tool decisions:
275
+
276
+ - **Travel planning** — "Plan a day trip in Tokyo" (geocode → search → directions → weather)
277
+ - **Real estate analysis** — "Analyze this neighborhood: schools, commute, flood risk" (search-nearby × N + elevation + distance-matrix)
278
+ - **Logistics optimization** — "Route these 12 deliveries efficiently from the warehouse" (plan-route)
279
+ - **Field sales** — "Visit 6 clients in Chicago, minimize drive time, find lunch spots" (plan-route + search-nearby)
280
+ - **Disaster response** — "Nearest open hospitals? Am I in a flood zone?" (search-nearby + elevation)
281
+ - **Content creation** — "Top 5 neighborhoods in Austin with restaurant density and airport distance" (explore-area + distance-matrix)
282
+ - **Accessibility** — "Wheelchair-accessible restaurants, avoid steep routes" (search-nearby + place-details + elevation)
283
+
244
284
  ## Changelog
245
285
 
246
286
  See [CHANGELOG.md](./CHANGELOG.md) for version history.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cablate/mcp-google-map",
3
- "version": "0.0.33",
3
+ "version": "0.0.35",
4
4
  "mcpName": "io.github.cablate/google-map",
5
5
  "description": "Google Maps tools for AI agents — geocode, search, directions, elevation via MCP server or standalone CLI",
6
6
  "type": "module",
@@ -35,7 +35,7 @@ Without this Skill, the agent can only guess or refuse when asked "how do I get
35
35
 
36
36
  ## Tool Map
37
37
 
38
- 8 tools in three categories — pick by scenario:
38
+ 13 tools in four categories — pick by scenario:
39
39
 
40
40
  ### Place Discovery
41
41
  | Tool | When to use | Example |
@@ -52,10 +52,19 @@ Without this Skill, the agent can only guess or refuse when asked "how do I get
52
52
  | `directions` | How to get from A to B | "Route from Taipei Main Station to the airport" |
53
53
  | `distance-matrix` | Compare distances across multiple points | "Which of these 3 hotels is closest to the airport?" |
54
54
 
55
- ### Terrain
55
+ ### Environment
56
56
  | Tool | When to use | Example |
57
57
  |------|-------------|---------|
58
58
  | `elevation` | Query altitude | "Elevation profile along this hiking trail" |
59
+ | `timezone` | Need local time at a destination | "What time is it in Tokyo?" |
60
+ | `weather` | Weather at a location (current or forecast) | "What's the weather in Paris?" |
61
+
62
+ ### Composite (one-call shortcuts)
63
+ | Tool | When to use | Example |
64
+ |------|-------------|---------|
65
+ | `explore-area` | Overview of a neighborhood | "What's around Tokyo Tower?" |
66
+ | `plan-route` | Multi-stop optimized itinerary | "Visit these 5 places efficiently" |
67
+ | `compare-places` | Side-by-side comparison | "Which ramen shop near Shibuya?" |
59
68
 
60
69
  ---
61
70
 
@@ -160,6 +160,95 @@ Response:
160
160
 
161
161
  ---
162
162
 
163
+ ## timezone
164
+
165
+ Get timezone and local time for coordinates.
166
+
167
+ ```bash
168
+ exec timezone '{"latitude": 35.6586, "longitude": 139.7454}'
169
+ ```
170
+
171
+ | Param | Type | Required | Description |
172
+ |-------|------|----------|-------------|
173
+ | latitude | number | yes | Latitude |
174
+ | longitude | number | yes | Longitude |
175
+ | timestamp | number | no | Unix timestamp in ms (defaults to now) |
176
+
177
+ Response:
178
+ ```json
179
+ { "timeZoneId": "Asia/Tokyo", "timeZoneName": "Japan Standard Time", "utcOffset": 32400, "dstOffset": 0, "localTime": "2026-03-14T16:19:16.000" }
180
+ ```
181
+
182
+ ---
183
+
184
+ ## weather
185
+
186
+ Get current weather or forecast. Coverage: most regions, but China, Japan, South Korea, Cuba, Iran, North Korea, Syria are unsupported.
187
+
188
+ ```bash
189
+ exec weather '{"latitude": 37.4220, "longitude": -122.0841}'
190
+ exec weather '{"latitude": 37.4220, "longitude": -122.0841, "type": "forecast_daily", "forecastDays": 3}'
191
+ ```
192
+
193
+ | Param | Type | Required | Description |
194
+ |-------|------|----------|-------------|
195
+ | latitude | number | yes | Latitude |
196
+ | longitude | number | yes | Longitude |
197
+ | type | string | no | `current` (default), `forecast_daily`, `forecast_hourly` |
198
+ | forecastDays | number | no | 1-10, for forecast_daily (default: 5) |
199
+ | forecastHours | number | no | 1-240, for forecast_hourly (default: 24) |
200
+
201
+ ---
202
+
203
+ ## explore-area (composite)
204
+
205
+ Explore a neighborhood in one call. Internally chains geocode → search-nearby (per type) → place-details (top N).
206
+
207
+ ```bash
208
+ exec explore-area '{"location": "Tokyo Tower", "types": ["restaurant", "cafe"], "topN": 2}'
209
+ ```
210
+
211
+ | Param | Type | Required | Description |
212
+ |-------|------|----------|-------------|
213
+ | location | string | yes | Address or landmark |
214
+ | types | string[] | no | Place types to search (default: restaurant, cafe, attraction) |
215
+ | radius | number | no | Search radius in meters (default: 1000) |
216
+ | topN | number | no | Top results per type to get details for (default: 3) |
217
+
218
+ ---
219
+
220
+ ## plan-route (composite)
221
+
222
+ Plan an optimized multi-stop route. Internally chains geocode → distance-matrix → nearest-neighbor → directions.
223
+
224
+ ```bash
225
+ exec plan-route '{"stops": ["Tokyo Tower", "Shibuya Station", "Shinjuku Station", "Ueno Park"], "mode": "driving"}'
226
+ ```
227
+
228
+ | Param | Type | Required | Description |
229
+ |-------|------|----------|-------------|
230
+ | stops | string[] | yes | Addresses or landmarks (min 2) |
231
+ | mode | string | no | driving, walking, bicycling, transit (default: driving) |
232
+ | optimize | boolean | no | Auto-optimize visit order (default: true) |
233
+
234
+ ---
235
+
236
+ ## compare-places (composite)
237
+
238
+ Compare places side-by-side. Internally chains search-places → place-details → distance-matrix.
239
+
240
+ ```bash
241
+ exec compare-places '{"query": "ramen near Shibuya", "limit": 3}'
242
+ ```
243
+
244
+ | Param | Type | Required | Description |
245
+ |-------|------|----------|-------------|
246
+ | query | string | yes | Search query |
247
+ | userLocation | object | no | `{ latitude, longitude }` — adds distance/drive time |
248
+ | limit | number | no | Max places to compare (default: 5) |
249
+
250
+ ---
251
+
163
252
  ## Chaining Patterns
164
253
 
165
254
  ### Basic Patterns