skill-gemini-google-maps-tool
Query Gemini with Google Maps grounding
Install
mkdir -p .claude/skills/skill-gemini-google-maps-tool && curl -L -o skill.zip "https://mcp.directory/api/skills/download/311" && unzip -o skill.zip -d .claude/skills/skill-gemini-google-maps-tool && rm skill.zipInstalls to .claude/skills/skill-gemini-google-maps-tool
About this skill
When to use
- When you need location-aware AI responses about places
- When you need recommendations for restaurants, hotels, attractions
- When you need accurate, up-to-date information from Google Maps
Gemini Google Maps Tool Skill
Purpose
Comprehensive guide for using gemini-google-maps-tool, a CLI and Python library that connects Gemini to Google Maps' database of 250+ million places worldwide for location-aware responses with accurate, up-to-date information.
When to Use This Skill
Use this skill when:
- Querying for location-based recommendations (restaurants, hotels, attractions)
- Generating itineraries with place-specific information
- Building applications that need location-aware AI responses
- Integrating Google Maps data into AI workflows
- Creating travel, food, or local business applications
Do NOT use this skill for:
- General Gemini queries without location context
- Tasks that don't involve places or geographical information
- Direct Google Maps API queries (this uses Gemini with Maps grounding)
CLI Tool: gemini-google-maps-tool
A production-ready CLI and Python library for querying Gemini with Google Maps grounding.
Installation
# Install globally with uv tool
uv tool install gemini-google-maps-tool
# Or from source
git clone https://github.com/dnvriend/gemini-google-maps-tool.git
cd gemini-google-maps-tool
uv tool install .
Prerequisites
- Python 3.14+
- uv package manager
- Gemini API Key from Google AI Studio
Quick Start
# Set API key
export GEMINI_API_KEY="your-api-key"
# Basic query
gemini-google-maps-tool query "Best coffee shops in Amsterdam"
# With location context
gemini-google-maps-tool query "Italian restaurants nearby" \
--lat-lon "52.37,4.89"
# Markdown output with sources
gemini-google-maps-tool query "Museums in Paris" --text
Progressive Disclosure
<details> <summary><strong>📖 Core Commands (Click to expand)</strong></summary>query - Query Gemini with Google Maps Grounding
Query Gemini with Google Maps integration for location-aware information about places, businesses, directions, and attractions.
Usage:
gemini-google-maps-tool query "QUERY" [OPTIONS]
Arguments:
QUERY: The search query (required unless using --stdin)--lat-lon LAT,LON: Location coordinates in format "lat,lon" (e.g., "37.78193,-122.40476")--model {flash|flash-lite}: Model selectionflash: gemini-2.5-flash (more powerful, higher cost)flash-lite: gemini-2.5-flash-lite (default, faster, cost-effective)
-v, --verbose: Enable INFO logging (operation-level details)-vv: Enable DEBUG logging (detailed API calls, validation)-vvv: Enable TRACE logging (full HTTP traces, library internals)--text/-t: Output markdown text instead of JSON--stdin/-s: Read query from stdin
Examples:
# Basic query
gemini-google-maps-tool query "Best coffee shops in Amsterdam"
# With location context
gemini-google-maps-tool query "Italian restaurants nearby" \
--lat-lon "52.37,4.89"
# Using different model
gemini-google-maps-tool query "Plan a day in NYC" --model flash
# Markdown output with sources
gemini-google-maps-tool query "Best museums in Paris" --text
# Verbose mode with grounding metadata
gemini-google-maps-tool query "Sushi restaurants" -v
# Debug mode with full details
gemini-google-maps-tool query "Hotels in London" -vv
# Trace mode with HTTP details
gemini-google-maps-tool query "Attractions in Rome" -vvv
# Reading from stdin (for pipelines)
echo "Best bakeries in San Francisco" | \
gemini-google-maps-tool query --stdin
# Pipeline with jq
gemini-google-maps-tool query "Coffee shops" | \
jq '.response_text'
Output Formats:
JSON (default):
{
"response_text": "Here are some great coffee shops...",
"grounding_metadata": {
"grounding_chunks": [
{
"title": "Blue Bottle Coffee",
"uri": "https://maps.google.com/?cid=...",
"place_id": "places/ChIJ..."
}
]
}
}
Markdown (with --text):
Here are some great coffee shops...
---
## Sources
1. [Blue Bottle Coffee](https://maps.google.com/?cid=...)
2. [Philz Coffee](https://maps.google.com/?cid=...)
completion - Generate Shell Completion Scripts
Generate shell completion scripts for Bash, Zsh, or Fish to enable tab-completion for commands and options.
Usage:
gemini-google-maps-tool completion {bash|zsh|fish}
Arguments:
SHELL: Shell type (required) - bash, zsh, or fish
Examples:
# Bash - temporary (current session)
eval "$(gemini-google-maps-tool completion bash)"
# Bash - persistent
echo 'eval "$(gemini-google-maps-tool completion bash)"' >> ~/.bashrc
# Zsh - temporary
eval "$(gemini-google-maps-tool completion zsh)"
# Zsh - persistent
echo 'eval "$(gemini-google-maps-tool completion zsh)"' >> ~/.zshrc
# Fish - install to completions directory
gemini-google-maps-tool completion fish > \
~/.config/fish/completions/gemini-google-maps-tool.fish
# File-based (better performance)
gemini-google-maps-tool completion bash > \
~/.gemini-google-maps-tool-complete.bash
echo 'source ~/.gemini-google-maps-tool-complete.bash' >> ~/.bashrc
Output: Shell-specific completion script that can be evaluated or saved to a file.
</details> <details> <summary><strong>⚙️ Advanced Features (Click to expand)</strong></summary>Multi-Level Verbosity Logging
Progressive detail control for debugging and monitoring:
- No flag (default): WARNING level - only critical issues
-v: INFO level - high-level operations, important events-vv: DEBUG level - detailed operations, API calls, validation steps-vvv: TRACE level - full request/response, library internals, HTTP traces
Examples:
# INFO: See which files are processed
gemini-google-maps-tool query "Best restaurants" -v
# DEBUG: See API call details and validation
gemini-google-maps-tool query "Hotels nearby" -vv
# TRACE: See full HTTP requests/responses
gemini-google-maps-tool query "Museums" -vvv
Google Maps Grounding
What is it? Google Maps grounding connects Gemini to Google Maps' database of 250+ million places worldwide, providing:
- Location-aware responses with accurate, up-to-date information
- Personalized recommendations tailored to specific areas
- Automatic citation generation with structured sources
- Seamless integration via Gemini's API
Grounding Metadata:
With -v or --text, responses include:
- Grounding Chunks: Google Maps sources (title, URI, place_id)
- Grounding Supports: Text segments linked to sources
- Widget Context Token: For interactive maps integration
Example:
gemini-google-maps-tool query "Best pizza in Brooklyn" -v
Returns JSON with:
{
"response_text": "...",
"grounding_metadata": {
"grounding_chunks": [
{
"title": "Roberta's Pizza",
"uri": "https://maps.google.com/?cid=...",
"place_id": "places/ChIJ..."
}
],
"grounding_supports": [...],
"google_maps_widget_context_token": "..."
}
}
Location Context
Provide location coordinates for personalized, location-aware responses:
Format: --lat-lon "latitude,longitude"
Examples:
# Amsterdam center
gemini-google-maps-tool query "Coffee shops nearby" \
--lat-lon "52.37,4.89"
# San Francisco
gemini-google-maps-tool query "Italian restaurants" \
--lat-lon "37.78,-122.40"
# Tokyo
gemini-google-maps-tool query "Sushi restaurants" \
--lat-lon "35.68,139.76"
Coordinate Ranges:
- Latitude: -90 to 90
- Longitude: -180 to 180
Model Selection
Choose between two Gemini models:
flash-lite (default):
- Model: gemini-2.5-flash-lite
- Faster, more cost-effective
- Best for simple location queries
- Recommended for most use cases
flash:
- Model: gemini-2.5-flash
- More powerful and capable
- Best for complex queries and itinerary planning
- Higher cost
Examples:
# Default (flash-lite)
gemini-google-maps-tool query "Best restaurants"
# Explicit flash-lite
gemini-google-maps-tool query "Hotels" --model flash-lite
# Use flash for complex queries
gemini-google-maps-tool query "Plan a 3-day trip to Paris" \
--model flash
Python Library Usage
Import and use programmatically in Python applications:
Basic Usage:
from gemini_google_maps_tool import get_client, query_maps
# Initialize client
client = get_client()
# Execute query
result = query_maps(
client=client,
query="Best coffee shops near me",
)
print(result.response_text)
With Location and Grounding:
from gemini_google_maps_tool import get_client, query_maps
client = get_client()
result = query_maps(
client=client,
query="Italian restaurants nearby",
lat_lon=(37.78193, -122.40476),
model="gemini-2.5-flash",
include_grounding=True,
)
# Access response
print(result.response_text)
# Access grounding metadata
if result.grounding_metadata:
for chunk in result.grounding_metadata.grounding_chunks:
print(f"Source: {chunk.title} - {chunk.uri}")
Error Handling:
from gemini_google_maps_tool import (
get_client,
query_maps,
ClientError,
QueryError,
)
try:
client = get_client()
result = query_maps(client, "Best restaurants")
print(result.response_text)
except ClientError as e:
print(f"Client error: {e}")
except QueryError as e:
print(f"Query error: {e}")
</details>
<details>
<summary><strong>🔧 Troubleshooting (Click to expand)</strong></summary>
Common Issues
Issue: GEMINI_API_KEY not set
Error: GEMINI_API_KEY environment variable is required.
Solution:
# Set for current session
export GEMINI_API_KEY="your-api-key"
# Or add to shell profile
echo 'export GEMINI_API_KEY="your-api-key"' >> ~/.zshrc
source ~/.zshrc
# Or retrieve from macOS Keychain
export GEMINI_API_KEY=$(security find-generic-password \
-a "production" -s "GEMINI_API_KEY" -w)
Issue: Invalid lat-lon format
ValueError: Invalid lat-lon format
Solution:
- Use format: "latitude,longitude"
- Latitude range: -90 to 90
- Longitude range: -180 to 180
# Correct
gemini-google-maps-tool query "restaurants" --lat-lon "52.37,4.89"
# Incorrect
gemini-google-maps-tool query "restaurants" --lat-lon "52.37 4.89"
gemini-google-maps-tool query "restaurants" --lat-lon "200,50"
Issue: API returns no response candidates
QueryError: API returned no response candidates
Possible causes:
- Rate limiting (too many requests)
- API service issues
- Query content filtering
- Insufficient API quota
Solution:
- Wait a few seconds and retry
- Rephrase your query
- Check API quota in Google Cloud Console
- Verify API key is valid and active
Issue: Empty response text
QueryError: API returned empty response text
Possible causes:
- Content filtering or safety blocks
- Query processing issues
- Incomplete API response
Solution:
- Rephrase query with different wording
- Try simpler or more specific query
- Wait and retry
- Check if query violates content policies
Getting Help
# Main help
gemini-google-maps-tool --help
# Command-specific help
gemini-google-maps-tool query --help
gemini-google-maps-tool completion --help
# Version information
gemini-google-maps-tool --version
Debug Mode
Enable verbose logging to diagnose issues:
# INFO level
gemini-google-maps-tool query "test" -v
# DEBUG level (detailed)
gemini-google-maps-tool query "test" -vv
# TRACE level (full HTTP traces)
gemini-google-maps-tool query "test" -vvv
</details>
Output Formats
JSON (default):
- Structured data with
response_textfield - Optional
grounding_metadatawith-v - Easy to parse and pipe to other tools
- Logs to stderr, JSON to stdout
Markdown (--text):
- Human-readable text
- Automatic source citations
- Clean formatting
- Includes "Sources" section with links
Best Practices
- Use location context for better results: Provide
--lat-lonwhen asking about specific areas - Choose appropriate model: Use
flash-lite(default) for simple queries,flashfor complex tasks - Enable verbosity for debugging: Use
-v,-vv, or-vvvto understand what's happening - Secure API key storage: Use environment variables or keychain instead of hardcoding
- Monitor API usage: Google Maps grounding costs $25 per 1,000 prompts
- Use JSON for automation: Default JSON output is perfect for scripts and pipelines
- Cache completion scripts: Generate to file instead of eval for better performance
Pricing
- Google Maps Grounding: $25 per 1,000 grounded prompts
- Free Tier: Up to 500 requests per day
- Monitor usage: Google Cloud Console
Learn more: Gemini API Pricing
Resources
- GitHub: https://github.com/dnvriend/gemini-google-maps-tool
- Google Maps Grounding Docs: https://ai.google.dev/gemini-api/docs/maps-grounding
- Gemini API Documentation: https://ai.google.dev/gemini-api/docs
- Get API Key: https://aistudio.google.com/app/apikey
- Google AI Studio: https://aistudio.google.com/
You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
rust-coding-skill
UtakataKyosui
Guides Claude in writing idiomatic, efficient, well-structured Rust code using proper data modeling, traits, impl organization, macros, and build-speed best practices.
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.