[{"data":1,"prerenderedAt":580},["ShallowReactive",2],{"navigation_docs":3,"-mcp-gis-integration":155,"-mcp-gis-integration-surround":575},[4,26,47,68,93,106,127],{"title":5,"path":6,"stem":7,"children":8,"page":25},"Getting Started","\u002Fgetting-started","1.getting-started",[9,13,17,21],{"title":10,"path":11,"stem":12},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":14,"path":15,"stem":16},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F2.quick-start",{"title":18,"path":19,"stem":20},"Authentication","\u002Fgetting-started\u002Fauthentication","1.getting-started\u002F3.authentication",{"title":22,"path":23,"stem":24},"Rate Limits","\u002Fgetting-started\u002Frate-limits","1.getting-started\u002F4.rate-limits",false,{"title":27,"path":28,"stem":29,"children":30,"page":25},"API Reference","\u002Fapi-reference","2.api-reference",[31,35,39,43],{"title":32,"path":33,"stem":34},"Overview","\u002Fapi-reference\u002Foverview","2.api-reference\u002F1.overview",{"title":36,"path":37,"stem":38},"REST API","\u002Fapi-reference\u002Frest-api","2.api-reference\u002F2.rest-api",{"title":40,"path":41,"stem":42},"Error Codes","\u002Fapi-reference\u002Ferror-codes","2.api-reference\u002F3.error-codes",{"title":44,"path":45,"stem":46},"Pagination","\u002Fapi-reference\u002Fpagination","2.api-reference\u002F4.pagination",{"title":48,"path":49,"stem":50,"children":51,"page":25},"Map Integration","\u002Fmap-integration","3.map-integration",[52,56,60,64],{"title":53,"path":54,"stem":55},"Embed Maps","\u002Fmap-integration\u002Fembed-maps","3.map-integration\u002F1.embed-maps",{"title":57,"path":58,"stem":59},"Custom Styles","\u002Fmap-integration\u002Fcustom-styles","3.map-integration\u002F2.custom-styles",{"title":61,"path":62,"stem":63},"Tile Rendering","\u002Fmap-integration\u002Ftile-rendering","3.map-integration\u002F3.tile-rendering",{"title":65,"path":66,"stem":67},"Static Maps","\u002Fmap-integration\u002Fstatic-maps","3.map-integration\u002F4.static-maps",{"title":69,"path":70,"stem":71,"children":72,"page":25},"Geocoding","\u002Fgeocoding","4.geocoding",[73,77,81,85,89],{"title":74,"path":75,"stem":76},"Forward Geocoding (Search)","\u002Fgeocoding\u002Fforward-geocoding","4.geocoding\u002F1.forward-geocoding",{"title":78,"path":79,"stem":80},"Reverse Geocoding","\u002Fgeocoding\u002Freverse-geocoding","4.geocoding\u002F2.reverse-geocoding",{"title":82,"path":83,"stem":84},"Autocomplete","\u002Fgeocoding\u002Fautocomplete","4.geocoding\u002F3.autocomplete",{"title":86,"path":87,"stem":88},"Place Lookup","\u002Fgeocoding\u002Fplace-lookup","4.geocoding\u002F4.place-lookup",{"title":90,"path":91,"stem":92},"Nearby Search","\u002Fgeocoding\u002Fnearby","4.geocoding\u002F5.nearby",{"title":94,"path":95,"stem":96,"children":97,"page":25},"Routing","\u002Frouting","5.routing",[98,102],{"title":99,"path":100,"stem":101},"Directions","\u002Frouting\u002Fdirections","5.routing\u002F1.directions",{"title":103,"path":104,"stem":105},"Isochrones","\u002Frouting\u002Fisochrones","5.routing\u002F2.isochrones",{"title":107,"path":108,"stem":109,"children":110,"page":25},"Auth & Security","\u002Fauth-security","6.auth-security",[111,115,119,123],{"title":112,"path":113,"stem":114},"API Keys","\u002Fauth-security\u002Fapi-keys","6.auth-security\u002F1.api-keys",{"title":116,"path":117,"stem":118},"Scopes & Permissions","\u002Fauth-security\u002Fscopes-permissions","6.auth-security\u002F2.scopes-permissions",{"title":120,"path":121,"stem":122},"Rate Limiting","\u002Fauth-security\u002Frate-limiting","6.auth-security\u002F3.rate-limiting",{"title":124,"path":125,"stem":126},"Best Practices","\u002Fauth-security\u002Fbest-practices","6.auth-security\u002F4.best-practices",{"title":128,"path":129,"stem":130,"children":131,"page":25},"Mcp","\u002Fmcp","7.mcp",[132,135,139,143,147,151],{"title":32,"path":133,"stem":134},"\u002Fmcp\u002Foverview","7.mcp\u002F1.overview",{"title":136,"path":137,"stem":138},"Setup","\u002Fmcp\u002Fsetup","7.mcp\u002F2.setup",{"title":140,"path":141,"stem":142},"Available Tools","\u002Fmcp\u002Favailable-tools","7.mcp\u002F3.available-tools",{"title":144,"path":145,"stem":146},"GIS Integration","\u002Fmcp\u002Fgis-integration","7.mcp\u002F4.gis-integration",{"title":148,"path":149,"stem":150},"Examples","\u002Fmcp\u002Fexamples","7.mcp\u002F5.examples",{"title":152,"path":153,"stem":154},"Troubleshooting","\u002Fmcp\u002Ftroubleshooting","7.mcp\u002F6.troubleshooting",{"id":156,"title":144,"body":157,"description":568,"extension":569,"links":570,"meta":571,"navigation":572,"path":145,"seo":573,"stem":146,"__hash__":574},"docs\u002F7.mcp\u002F4.gis-integration.md",{"type":158,"value":159,"toc":547},"minimark",[160,164,169,174,182,198,201,205,216,220,226,230,233,257,263,269,272,276,280,286,292,299,430,434,440,446,449,451,455,459,462,482,486,489,507,509,513,517,523,527,533,537,543],[161,162,163],"p",{},"Most of the MCP tools return data in formats GIS tools already speak — QGIS connection URIs, MapLibre style JSON, and GeoJSON — so you can load results directly without a conversion step.",[165,166,168],"h2",{"id":167},"qgis-integration","QGIS integration",[170,171,173],"h3",{"id":172},"two-mcp-servers-working-together","Two MCP servers working together",[161,175,176,177,181],{},"The workflow that unlocks the most value uses ",[178,179,180],"strong",{},"two MCP servers in the same conversation",":",[183,184,185,192],"ol",{},[186,187,188,191],"li",{},[178,189,190],{},"maps.guru MCP"," — provides the map data (tiles, styles, datasets)",[186,193,194,197],{},[178,195,196],{},"QGIS MCP"," — controls QGIS itself (add layers, set styles, export)",[161,199,200],{},"Your AI assistant calls both and coordinates the handoff.",[170,202,204],{"id":203},"adding-tile-layers","Adding Tile Layers",[206,207,212],"pre",{"className":208,"code":210,"language":211},[209],"language-text","You: \"Add my city-streets map from maps.guru to QGIS\"\n\nAI Assistant:\n  1. Calls maps_guru.get_tile_url({ style_slug: \"city-streets\" })\n     → Returns QGIS-ready URI\n\n  2. Calls qgis.add_raster_layer({\n       path: \"type=xyz&url=https:\u002F\u002Ftiles.maps.guru\u002Fv1\u002F...&zmax=14\",\n       provider: \"wms\"\n     })\n     → QGIS loads the tile layer\n","text",[213,214,210],"code",{"__ignoreMap":215},"",[170,217,219],{"id":218},"loading-geojson-datasets","Loading GeoJSON Datasets",[206,221,224],{"className":222,"code":223,"language":211},[209],"You: \"Load my earthquake dataset from maps.guru into QGIS\"\n\nAI Assistant:\n  1. Calls maps_guru.list_datasets({ style_id: \"...\" })\n     → Finds earthquake dataset\n\n  2. Calls maps_guru.get_dataset_geojson({ dataset_id: \"abc123\" })\n     → Returns GeoJSON URL\n\n  3. Calls qgis.add_vector_layer({\n       path: \"https:\u002F\u002Fmaps.guru\u002Fapi\u002Fv1\u002Fdatasets\u002Fabc123\u002Fgeojson?key=mapx_xxx\",\n       provider: \"ogr\"\n     })\n     → QGIS loads the vector layer with all features\n",[213,225,223],{"__ignoreMap":215},[170,227,229],{"id":228},"manual-qgis-setup-without-a-qgis-mcp","Manual QGIS setup (without a QGIS MCP)",[161,231,232],{},"If you don't have the QGIS MCP connected, you can still wire up tiles manually — the assistant just has to hand you the connection URI:",[183,234,235,238,245,251],{},[186,236,237],{},"Ask: \"Get the tile URL for my city-streets style\"",[186,239,240,241,244],{},"Copy the ",[213,242,243],{},"qgis_uri"," value from the response",[186,246,247,248],{},"In QGIS: ",[178,249,250],{},"Layer → Add Layer → Add XYZ Tiles",[186,252,253,254],{},"Paste the URI string and click ",[178,255,256],{},"Add",[161,258,259,260,262],{},"The ",[213,261,243],{}," format looks like:",[206,264,267],{"className":265,"code":266,"language":211},[209],"type=xyz&url=https:\u002F\u002Ftiles.maps.guru\u002Fv1\u002Fplanet-vector\u002F{z}\u002F{x}\u002F{y}.pbf?key=mapx_xxx&zmax=14&zmin=0\n",[213,268,266],{"__ignoreMap":215},[270,271],"hr",{},[165,273,275],{"id":274},"maplibre-integration","MapLibre integration",[170,277,279],{"id":278},"style-json","Style JSON",[161,281,282,285],{},[213,283,284],{},"get_style_json"," returns a complete MapLibre GL style spec, with all tile, sprite, and glyph URLs already signed with your API key:",[206,287,290],{"className":288,"code":289,"language":211},[209],"You: \"Export my maps.guru style for use in MapLibre\"\n\nAI Assistant calls maps_guru.get_style_json({ style_id: \"...\" })\n→ Returns full style.json\n",[213,291,289],{"__ignoreMap":215},[161,293,294,295,298],{},"You get the full style — sources (with ",[213,296,297],{},"?key="," appended), sprites, glyphs, layers, and paint properties — ready to drop into MapLibre GL JS:",[206,300,304],{"className":301,"code":302,"language":303,"meta":215,"style":215},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const map = new maplibregl.Map({\n  container: 'map',\n  style: styleJson, \u002F\u002F from the MCP response\n  center: [2.3522, 48.8566],\n  zoom: 12\n});\n","javascript",[213,305,306,342,364,382,407,418],{"__ignoreMap":215},[307,308,311,315,319,323,326,329,332,336,339],"span",{"class":309,"line":310},"line",1,[307,312,314],{"class":313},"spNyl","const",[307,316,318],{"class":317},"sTEyZ"," map ",[307,320,322],{"class":321},"sMK4o","=",[307,324,325],{"class":321}," new",[307,327,328],{"class":317}," maplibregl",[307,330,331],{"class":321},".",[307,333,335],{"class":334},"s2Zo4","Map",[307,337,338],{"class":317},"(",[307,340,341],{"class":321},"{\n",[307,343,345,349,351,354,358,361],{"class":309,"line":344},2,[307,346,348],{"class":347},"swJcz","  container",[307,350,181],{"class":321},[307,352,353],{"class":321}," '",[307,355,357],{"class":356},"sfazB","map",[307,359,360],{"class":321},"'",[307,362,363],{"class":321},",\n",[307,365,367,370,372,375,378],{"class":309,"line":366},3,[307,368,369],{"class":347},"  style",[307,371,181],{"class":321},[307,373,374],{"class":317}," styleJson",[307,376,377],{"class":321},",",[307,379,381],{"class":380},"sHwdD"," \u002F\u002F from the MCP response\n",[307,383,385,388,390,393,397,399,402,405],{"class":309,"line":384},4,[307,386,387],{"class":347},"  center",[307,389,181],{"class":321},[307,391,392],{"class":317}," [",[307,394,396],{"class":395},"sbssI","2.3522",[307,398,377],{"class":321},[307,400,401],{"class":395}," 48.8566",[307,403,404],{"class":317},"]",[307,406,363],{"class":321},[307,408,410,413,415],{"class":309,"line":409},5,[307,411,412],{"class":347},"  zoom",[307,414,181],{"class":321},[307,416,417],{"class":395}," 12\n",[307,419,421,424,427],{"class":309,"line":420},6,[307,422,423],{"class":321},"}",[307,425,426],{"class":317},")",[307,428,429],{"class":321},";\n",[170,431,433],{"id":432},"static-map-images","Static map images",[161,435,436,439],{},[213,437,438],{},"get_static_map"," generates PNGs you can embed in reports, briefs, or chat messages without standing up a map client:",[206,441,444],{"className":442,"code":443,"language":211},[209],"You: \"Generate a 1200x800 map of downtown San Francisco at zoom 14\"\n\nAI Assistant calls maps_guru.get_static_map({\n  style_slug: \"city-streets\",\n  lat: 37.7749,\n  lng: -122.4194,\n  zoom: 14,\n  width: 1200,\n  height: 800\n})\n→ Returns image URL + inline base64\n",[213,445,443],{"__ignoreMap":215},[161,447,448],{},"The response carries both a public URL (for links) and inline base64 (so the image renders directly in the chat).",[270,450],{},[165,452,454],{"id":453},"arcgis-integration","ArcGIS integration",[170,456,458],{"id":457},"xyz-tiles","XYZ tiles",[161,460,461],{},"Both ArcGIS Pro and ArcGIS Online can consume XYZ tile layers:",[183,463,464,470,476],{},[186,465,466,467],{},"Ask the assistant for the tile URL via ",[213,468,469],{},"get_tile_url",[186,471,472,473],{},"In ArcGIS Pro: ",[178,474,475],{},"Insert → New Map → Add Data → Data From Path",[186,477,478,479],{},"Paste: ",[213,480,481],{},"https:\u002F\u002Ftiles.maps.guru\u002Fv1\u002Fplanet-vector\u002F{z}\u002F{x}\u002F{y}.pbf?key=mapx_xxx",[170,483,485],{"id":484},"geojson","GeoJSON",[161,487,488],{},"ArcGIS loads GeoJSON directly:",[183,490,491,497,500],{},[186,492,493,494],{},"Export via ",[213,495,496],{},"get_dataset_geojson",[186,498,499],{},"Save the response to a file",[186,501,502,503,506],{},"In ArcGIS: ",[178,504,505],{},"Add Data → Browse"," and pick the file",[270,508],{},[165,510,512],{"id":511},"workflow-examples","Workflow examples",[170,514,516],{"id":515},"urban-planning-analysis","Urban planning analysis",[206,518,521],{"className":519,"code":520,"language":211},[209],"1. \"Create a light map style called 'Urban Analysis'\"\n2. \"Get the QGIS tile URL for 'urban-analysis'\"\n3. \"Load my zoning-districts dataset into QGIS\"\n4. \"Generate a static overview map at zoom 11\"\n",[213,522,520],{"__ignoreMap":215},[170,524,526],{"id":525},"field-data-collection","Field data collection",[206,528,531],{"className":529,"code":530,"language":211},[209],"1. \"What datasets do I have on my field-survey style?\"\n2. \"Export the sampling-points dataset as GeoJSON\"\n3. \"Reverse geocode 34.0522, -118.2437\"\n",[213,532,530],{"__ignoreMap":215},[170,534,536],{"id":535},"report-generation","Report generation",[206,538,541],{"className":539,"code":540,"language":211},[209],"1. \"Generate static maps for Paris, London, and Tokyo\"\n2. \"What's my remaining quota for this month?\"\n",[213,542,540],{"__ignoreMap":215},[544,545,546],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":215,"searchDepth":366,"depth":366,"links":548},[549,555,559,563],{"id":167,"depth":344,"text":168,"children":550},[551,552,553,554],{"id":172,"depth":366,"text":173},{"id":203,"depth":366,"text":204},{"id":218,"depth":366,"text":219},{"id":228,"depth":366,"text":229},{"id":274,"depth":344,"text":275,"children":556},[557,558],{"id":278,"depth":366,"text":279},{"id":432,"depth":366,"text":433},{"id":453,"depth":344,"text":454,"children":560},[561,562],{"id":457,"depth":366,"text":458},{"id":484,"depth":366,"text":485},{"id":511,"depth":344,"text":512,"children":564},[565,566,567],{"id":515,"depth":366,"text":516},{"id":525,"depth":366,"text":526},{"id":535,"depth":366,"text":536},"Use maps.guru map styles and datasets with QGIS, ArcGIS, and MapLibre through MCP.","md",null,{},true,{"title":144,"description":568},"BJ793m5ieIZ8O4CAygbkwP5Kq8FQ_CY6RCnxbU2HMOQ",[576,578],{"title":140,"path":141,"stem":142,"description":577,"children":-1},"Complete reference for all 15 MCP tools provided by the maps.guru MCP server.",{"title":148,"path":149,"stem":150,"description":579,"children":-1},"Real-world usage scenarios for the maps.guru MCP server with step-by-step walkthroughs.",1777621084738]