@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
|
-
- **
|
|
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 | **
|
|
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**:
|
|
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
|
|
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
|
-
│
|
|
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.
|
|
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
|
-
|
|
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
|
-
###
|
|
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
|