Google Maps saved places → SQLite → Claude MCP Server
Query your saved places with natural language through Claude Desktop/Code.
bb setup # Install dependencies
cp *.csv data/ # Add your Google Maps exports
bb places:import # Import to SQLite
bb index:fts # Build search index
bb mcp:config # Get Claude configSee CLAUDE.md for complete documentation.
- SQLite database with full schema (name, coords, categories, ratings, notes)
- FTS5 search for instant text queries
- Spatial queries (find places within X km)
- MCP server for Claude integration
- Free geocoding via Nominatim/OSM
- Deduplication and smart updates
bb query:lists # Show all your lists
bb query:near 59.3 18.1 5 # Places within 5km
bb places:stats # Database statsOnce configured:
- "Show restaurants in Stockholm"
- "Find hiking places within 10km of Abisko"
- "What places do I have in Japan?"
CSV → import_places.py → SQLite (FTS5, spatial index)
↓
places_mcp_server.py ← Claude Desktop/Code
Run bb tasks to see all available commands.
Key tasks:
places:import- Initial importplaces:update- Merge new exportsgeo:enrich- Add missing coordinatesindex:fts- Build search indexmcp:config- Get Claude config
bb.edn- Task definitions (fully documented)scripts/*.py- Import, geocoding, indexing, MCP serverdata/places.db- Your SQLite databaseCLAUDE.md- Full documentation
- Python 3.8+
- Babashka 1.3.0+
- SQLite 3.35+
Install deps: bb setup
- Import/search: $0 (local)
- Geocoding: $0 (Nominatim)
- Embeddings: ~$0.50 for 24k places (optional)
Adapted from Email Archive MCP
You'll want:
- Spatial queries (works now via Haversine, faster with SpatiaLite)
- Semantic search ($0.50 for embeddings: bb cost:embeddings)
- Regular updates from new Google exports: bb places:update
The geocoding is your bottleneck—8,560 places @ 1 req/sec = 2.4 hours. Run overnight or accept current 46% coverage.
Pattern proven via your email archive. Same architecture, different domain.
Your maps. Your data. Your queries.