Geocoding, elevation, IP geolocation and coordinate transforms from the MapTiler Cloud API.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Forward-geocode up to 50 queries in one request. Returns a JSON ARRAY of GeoJSON FeatureCollections, one per query, in order. API: GET /geocoding/{q1;q2;...}.json.
1-50 place/address strings to geocode.
Max results per query (1-10).
Comma-separated place types to include.
Comma-separated ISO 3166-1 alpha-2 country codes to restrict to.
Comma-separated ISO 639-1 language codes for results.
Disputed-border worldview: default | auto | ch | us.
Treat the last term of each query as a prefix.
Forward-geocode up to 50 queries in one request. Returns a JSON ARRAY of GeoJSON FeatureCollections, one per query, in order. API: GET /geocoding/{q1;q2;...}.json.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results per query (1-10). |
| types | string | Comma-separated place types to include. |
| country | string | Comma-separated ISO 3166-1 alpha-2 country codes to restrict to. |
| queries* | array | 1-50 place/address strings to geocode. |
| language | string | Comma-separated ISO 639-1 language codes for results. |
| worldview | string | Disputed-border worldview: default | auto | ch | us. |
| autocomplete | boolean | Treat the last term of each query as a prefix. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"queries"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Max results per query (1-10)."
},
"types": {
"type": "string",
"description": "Comma-separated place types to include."
},
"country": {
"type": "string",
"description": "Comma-separated ISO 3166-1 alpha-2 country codes to restrict to."
},
"queries": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"description": "1-50 place/address strings to geocode."
},
"language": {
"type": "string",
"description": "Comma-separated ISO 639-1 language codes for results."
},
"worldview": {
"enum": [
"default",
"auto",
"ch",
"us"
],
"type": "string",
"description": "Disputed-border worldview: default | auto | ch | us."
},
"autocomplete": {
"type": "boolean",
"description": "Treat the last term of each query as a prefix."
}
}
}Search for a place, address, or POI by name and get matching locations as GeoJSON features. e.g. 'Zurich' or '1600 Pennsylvania Ave'. API: GET /geocoding/{query}.json.
| Argument | Type | Description |
|---|---|---|
| bbox | string | Bounding box "west,south,east,north" to restrict results. |
| limit | integer | Max results (1-10). Default 5. |
| query* | string | Place/address/POI to search for (goes in the URL path). |
| types | string | Comma-separated place types to include (e.g. address,poi,city). |
| country | string | Comma-separated ISO 3166-1 alpha-2 country codes to restrict to. |
| language | string | Comma-separated ISO 639-1 language codes for results. |
| proximity | string | Bias toward a point: "lon,lat" or the literal "ip". |
| worldview | string | Disputed-border worldview: default | auto | ch | us. |
| fuzzyMatch |
Geolocates the IP address making the request — from a hosted Worker this is the server's egress IP, not the end-user's. API: GET /geolocation/ip.json.
| Argument | Type | Description |
|---|---|---|
| elevation | boolean | Include elevation of the located point. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"elevation": {
"type": "boolean",
"description": "Include elevation of the located point."
}
}
}Fetch the GeoJSON FeatureCollection of a MapTiler-hosted dataset by its data id. API: GET /data/{dataId}/features.json.
| Argument | Type | Description |
|---|---|---|
| dataId* | string | MapTiler dataset id (from your MapTiler Cloud account). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"dataId"
],
"properties": {
"dataId": {
"type": "string",
"description": "MapTiler dataset id (from your MapTiler Cloud account)."
}
}
}Look up ground elevation at up to 50 coordinates. Returns an array of [lng, lat, elevation] triples. API: GET /elevation/{locations}.json.
| Argument | Type | Description |
|---|---|---|
| unit | string | Elevation unit. Default meters. |
| locations* | array | 1-50 [longitude, latitude] pairs (latitude -85..85). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"locations"
],
"properties": {
"unit": {
"enum": [
"meters",
"feet"
],
"type": "string",
"description": "Elevation unit. Default meters."
},
"locations": {
"type": "array",
"items": {
"type": "array",
"items": false,
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"type": "number",
"maximum": 180,
"minimum": -180
},
{
"type": "number",
"maximum": 85,
"minimum": -85
}
]
},
"maxItems": 50,
"minItems": 1,
"description": "1-50 [longitude, latitude] pairs (latitude -85..85)."
}
}
}Find the place(s) at a given longitude/latitude, returned as GeoJSON features. API: GET /geocoding/{longitude},{latitude}.json.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results (1-10). Default 5. |
| types | string | Comma-separated place types to include. |
| language | string | Comma-separated ISO 639-1 language codes for results. |
| latitude* | number | Latitude, -90..90. |
| longitude* | number | Longitude, -180..180. |
| worldview | string | Disputed-border worldview: default | auto | ch | us. |
| excludeTypes | boolean | If true, `types` becomes an exclude list instead. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"longitude",
"latitude"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Max results (1-10). Default 5."
},
"types": {
"type": "string",
"description": "Comma-separated place types to include."
},
"language": {
"type": "string",
"description": "Comma-separated ISO 639-1 language codes for results."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude, -90..90."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude, -180..180."
},
"worldview": {
"enum": [
"default",
"auto",
"ch",
"us"
],
"type": "string",
"description": "Disputed-border worldview: default | auto | ch | us."
},
"excludeTypes": {
"type": "boolean",
"description": "If true, `types` becomes an exclude list instead."
}
}
}Search MapTiler's CRS/EPSG database by free text or key:value filters (e.g. 'code:4326', 'kind:CRS-PROJCRS'). API: GET /coordinates/search/{query}.json.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results (1-50). Default 10. |
| query* | string | Search terms; supports filters like "code:4326" or "kind:CRS-PROJCRS". |
| offset | integer | Pagination offset. Default 0. |
| exports | boolean | Include WKT / Proj4 export strings for each CRS. |
| transformations | boolean | Include available transformations for each CRS. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Max results (1-50). Default 10."
},
"query": {
"type": "string",
"description": "Search terms; supports filters like \"code:4326\" or \"kind:CRS-PROJCRS\"."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Pagination offset. Default 0."
},
"exports": {
"type": "boolean",
"description": "Include WKT / Proj4 export strings for each CRS."
},
"transformations": {
"type": "boolean",
"description": "Include available transformations for each CRS."
}
}
}Transform up to 50 coordinate pairs from a source coordinate reference system to a target one (EPSG codes). API: GET /coordinates/transform/{coordinates}.json.
| Argument | Type | Description |
|---|---|---|
| ops | string | Pipe-separated transformation operation codes to force a path. |
| s_srs | integer | Source CRS / EPSG code. Default 4326 (WGS84). |
| t_srs | integer | Target CRS / EPSG code. Default 4326 (WGS84). |
| coordinates* | array | 1-50 [x, y] coordinate pairs in the source CRS. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"coordinates"
],
"properties": {
"ops": {
"type": "string",
"description": "Pipe-separated transformation operation codes to force a path."
},
"s_srs": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Source CRS / EPSG code. Default 4326 (WGS84)."
},
"t_srs": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Target CRS / EPSG code. Default 4326 (WGS84)."
},
"coordinates": {
"type": "array",
"items": {
"type": "array",
"items": false,
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"type": "number"
},
{
"type": "number"
}
]
},
"maxItems": 50,
"minItems": 1,
"description": "1-50 [x, y] coordinate pairs in the source CRS."
}
}
}| boolean |
| Allow approximate matching of the query terms. |
| autocomplete | boolean | Treat the last term as a prefix for as-you-type search. |
| excludeTypes | boolean | If true, `types` becomes an exclude list instead. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"bbox": {
"type": "string",
"description": "Bounding box \"west,south,east,north\" to restrict results."
},
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Max results (1-10). Default 5."
},
"query": {
"type": "string",
"description": "Place/address/POI to search for (goes in the URL path)."
},
"types": {
"type": "string",
"description": "Comma-separated place types to include (e.g. address,poi,city)."
},
"country": {
"type": "string",
"description": "Comma-separated ISO 3166-1 alpha-2 country codes to restrict to."
},
"language": {
"type": "string",
"description": "Comma-separated ISO 639-1 language codes for results."
},
"proximity": {
"type": "string",
"description": "Bias toward a point: \"lon,lat\" or the literal \"ip\"."
},
"worldview": {
"enum": [
"default",
"auto",
"ch",
"us"
],
"type": "string",
"description": "Disputed-border worldview: default | auto | ch | us."
},
"fuzzyMatch": {
"type": "boolean",
"description": "Allow approximate matching of the query terms."
},
"autocomplete": {
"type": "boolean",
"description": "Treat the last term as a prefix for as-you-type search."
},
"excludeTypes": {
"type": "boolean",
"description": "If true, `types` becomes an exclude list instead."
}
}
}