Transform any AI agent into a geospatially-aware system with Mapbox APIs. Provides geocoding, POI search, routing, travel time matrices, isochrones, and static map generation.
253
10 Tools
Version 4.43 or later needs to be installed to add the server automatically
Use cases
About
Transform any AI agent into a geospatially-aware system with Mapbox APIs. Provides geocoding, POI search, routing, travel time matrices, isochrones, and static map generation.
Attribute | Details |
---|---|
Docker Image | mcp/mapbox |
Author | mapbox |
Repository | https://github.com/mapbox/mcp-server |
Dockerfile | https://github.com/mapbox/mcp-server/blob/main/Dockerfile |
Docker Image built by | Docker Inc. |
Docker Scout Health Score | |
Verify Signature | COSIGN_REPOSITORY=mcp/signatures cosign verify mcp/mapbox --key https://raw.githubusercontent.com/docker/keyring/refs/heads/main/public/mcp/latest.pub |
Licence | BSD 3-Clause "New" or "Revised" License |
Tools provided by this Server | Short Description |
---|---|
category_list_tool | Get the complete list of supported search categories from Mapbox Search API. |
category_search_tool | Return all places that match a category (industry, amenity, or NAICS‑style code). |
directions_tool | Fetches directions from Mapbox API based on provided coordinates and direction method. |
forward_geocode_tool | Forward geocode addresses, cities, towns, neighborhoods, districts, postcodes, regions, and countries using Mapbox Geocoding API v6. |
isochrone_tool | Computes areas that are reachable within a specified amount of time from a location, and returns the reachable regions as contours of Polygons or LineStrings in GeoJSON format that you can display on a map. |
matrix_tool | Calculates travel times and distances between multiple points using Mapbox Matrix API. |
poi_search_tool | Find one specific place or brand location by its proper name or unique brand. |
reverse_geocode_tool | Find addresses, cities, towns, neighborhoods, postcodes, districts, regions, and countries around a specified geographic coordinate pair. |
static_map_image_tool | Generates a static map image from Mapbox Static Images API. |
version_tool | Get the current version information of the MCP server |
category_list_tool
Get the complete list of supported search categories from Mapbox Search API. Returns all available category IDs by default. Only use pagination (limit/offset) if token usage optimization is required. If using pagination, make multiple calls to retrieve ALL categories before proceeding with other tasks to ensure complete data.
Parameters | Type | Description |
---|---|---|
language | string optional | ISO language code for the response (e.g., "en", "es", "fr", "de", "ja"). If not provided, English (en) will be used as the default. |
limit | number optional | Number of categories to return (1-100). WARNING: Only use this parameter if you need to optimize token usage. If using pagination, please make multiple calls to retrieve all categories before proceeding with other tasks. If not specified, returns all categories. |
offset | number optional | Number of categories to skip for pagination. Default is 0. |
category_search_tool
Return all places that match a category (industry, amenity, or NAICS‑style code). Use when the user asks for a type of place, plural or generic terms like 'museums', 'coffee shops', 'electric‑vehicle chargers', or when the query includes is‑a phrases such as 'any', 'all', 'nearby'. Do not use when a unique name or brand is provided. Supports both JSON and text output formats.
Parameters | Type | Description |
---|---|---|
category | string | The canonical category ID to search for (e.g., "restaurant", "hotel", "cafe"). To get the full list of supported categories, use the category_list_tool. |
bbox | object optional | Bounding box to limit results within specified bounds |
country | array optional | Array of ISO 3166 alpha 2 country codes to limit results |
format | string optional | Output format: "json_string" returns raw GeoJSON data as a JSON string that can be parsed; "formatted_text" returns human-readable text with place names, addresses, and coordinates. Both return as text content but json_string contains parseable JSON data while formatted_text is for display. |
language | string optional | ISO language code for the response (e.g., "en", "es", "fr", "de", "ja") |
limit | number optional | Maximum number of results to return (1-25) |
poi_category_exclusions | array optional | Array of POI categories to exclude from results |
proximity | string optional | Location to bias results towards. Either coordinate object with longitude and latitude or "ip" for IP-based location |
directions_tool
Fetches directions from Mapbox API based on provided coordinates and direction method.
Parameters | Type | Description |
---|---|---|
coordinates | array | Array of [longitude, latitude] coordinate pairs to visit in order. Must include at least 2 coordinate pairs (starting and ending points). Up to 25 coordinates total are supported. |
alternatives | boolean optional | Whether to try to return alternative routes (true) or not (false, default). Up to two alternatives may be returned. |
arrive_by | string optional | The desired arrival time in ISO 8601 format (YYYY-MM-DDThh:mm:ssZ, YYYY-MM-DDThh:mmss±hh:mm, or YYYY-MM-DDThh:mm). This parameter is only available for the driving profile and is not supported by other profiles, not even driving-traffic. The travel time will be calculated based on historical and real-time traffic data. |
depart_at | string optional | The departure time in ISO 8601 format (YYYY-MM-DDThh:mm:ssZ, YYYY-MM-DDThh:mmss±hh:mm, or YYYY-MM-DDThh:mm). This parameter is only available for the driving and driving-traffic profiles. The travel time will be calculated based on historical and real-time traffic data. |
exclude | string optional | Whether to exclude certain road types and custom locations from routing. Multiple values can be specified as a comma-separated list. Available options: |
geometries
|string
optional|The format of the returned geometry. Options:max_height
|number
optional|The max vehicle height, in meters. The Directions API will compute a route that includes only roads with a height limit greater than or equal to the max vehicle height. Must be between 0 and 10 meters. The default value is 1.6 meters. Only available for driving and driving-traffic profiles.
max_weight
|number
optional|The max vehicle weight, in metric tons (1000 kg). The Directions API will compute a route that includes only roads with a weight limit greater than or equal to the max vehicle weight. Must be between 0 and 100 metric tons. The default value is 2.5 metric tons. Only available for driving and driving-traffic profiles.
max_width
|number
optional|The max vehicle width, in meters. The Directions API will compute a route that includes only roads with a width limit greater than or equal to the max vehicle width. Must be between 0 and 10 meters. The default value is 1.9 meters. Only available for driving and driving-traffic profiles.
routing_profile
|string
optional|Routing profile for different modes of transport. Options:forward_geocode_tool
Forward geocode addresses, cities, towns, neighborhoods, districts, postcodes, regions, and countries using Mapbox Geocoding API v6. Converts location name into geographic coordinates. Setting a proximity point helps to bias results towards a specific area for more relevant results. Do not use this tool for geocoding points of interest like businesses, landmarks, historic sites, museums, etc. Supports both JSON and text output formats.
Parameters | Type | Description |
---|---|---|
q | string | Search text to geocode. Max 256 characters, 20 words, no semicolons. |
autocomplete | boolean optional | Return partial/suggested results for partial queries |
bbox | object optional | Bounding box to limit results within specified bounds |
country | array optional | Array of ISO 3166 alpha 2 country codes to limit results |
format | string optional | Output format: "json_string" returns raw GeoJSON data as a JSON string that can be parsed; "formatted_text" returns human-readable text with place names, addresses, and coordinates. Both return as text content but json_string contains parseable JSON data while formatted_text is for display. |
language | string optional | IETF language tag for the response (e.g., "en", "es", "fr", "de", "ja") |
limit | number optional | Maximum number of results to return (1-10) |
permanent | boolean optional | Whether results can be stored permanently |
proximity | string optional | Location to bias results towards. Either [longitude, latitude] coordinates or "ip" for IP-based location. Can help get more relevant results when searching in a specific area. |
types | array optional | Array of feature types to filter results |
worldview | string optional | Returns features from a specific regional perspective |
isochrone_tool
Computes areas that are reachable within a specified amount of time from a location, and returns the reachable regions as contours of Polygons or LineStrings in GeoJSON format that you can display on a map. Common use cases: - Show a user how far they can travel in X minutes from their current location - Determine whether a destination is within a certain travel time threshold - Compare travel ranges for different modes of transportation'
Parameters | Type | Description |
---|---|---|
coordinates | object | A coordinate object with longitude and latitude properties around which to center the isochrone lines. Longitude: -180 to 180, Latitude: -85.0511 to 85.0511 |
generalize | number | Positive number in meters that is used to simplify geometries. |
- Walking: use 0-500. Prefer 50-200 for short contours (minutes < 10 or meters < 5000), 300-500 as they grow.
- Driving: use 1000-5000. Start at 2000, use 3000 if minutes > 10 or meters > 20000. Use 4000-5000 if near 60 minutes or 100000 meters.
contours_colors
|array
optional|Contour colors as hex strings without starting # (for example ff0000 for red. must match contours_minutes or contours_meters length if provided).
contours_meters
|array
optional|Distances in meters. Distances must be in increasing order. Must be specified either contours_minutes or contours_meters.
contours_minutes
|array
optional|Contour times in minutes. Times must be in increasing order. Must be specified either contours_minutes or contours_meters.
denoise
|number
optional|A floating point value that can be used to remove smaller contours. A value of 1.0 will only return the largest contour for a given value.
depart_at
|string
optional|An ISO 8601 date-time string representing the time to depart (format string: YYYY-MM-DDThh:mmss±hh:mm).
exclude
|array
optional|Exclude certain road types and custom locations from routing.
polygons
|boolean
optional|Whether to return Polygons (true) or LineStrings (false).
profile
|string
optional|Mode of travel.
matrix_tool
Calculates travel times and distances between multiple points using Mapbox Matrix API.
Parameters | Type | Description |
---|---|---|
coordinates | array | Array of coordinate objects with longitude and latitude properties. Must include at least 2 coordinate pairs. Up to 25 coordinates total are supported for most profiles (10 for driving-traffic). |
profile | string | Routing profile for different modes of transport. Options: |
annotations
|string
optional|Specifies the resulting matrices. Possible values are: duration (default), distance, or both values separated by a comma.
approaches
|string
optional|A semicolon-separated list indicating the side of the road from which to approach waypoints. Accepts "unrestricted" (default, route can arrive at the waypoint from either side of the road) or "curb" (route will arrive at the waypoint on the driving_side of the region). If provided, the number of approaches must be the same as the number of waypoints. You can skip a coordinate and show its position with the ; separator.
bearings
|string
optional|A semicolon-separated list of headings and allowed deviation indicating the direction of movement. Input as two comma-separated values per location: a heading course measured clockwise from true north between 0 and 360, and the range of degrees by which the angle can deviate (recommended value is 45° or 90°), formatted as {angle,degrees}. If provided, the number of bearings must equal the number of coordinates. You can skip a coordinate and show its position in the list with the ; separator.
destinations
|string
optional|Use the coordinates at given indices as destinations. Possible values are: a semicolon-separated list of 0-based indices, or "all" (default). The option "all" allows using all coordinates as destinations.
sources
|string
optional|Use the coordinates at given indices as sources. Possible values are: a semicolon-separated list of 0-based indices, or "all" (default). The option "all" allows using all coordinates as sources.poi_search_tool
Find one specific place or brand location by its proper name or unique brand. Use only when the user's query includes a distinct title (e.g., "The Met", "Starbucks Reserve Roastery") or a brand they want all nearby branches of (e.g., "Macy's stores near me"). Do not use for generic place types such as 'museums', 'coffee shops', 'tacos', etc. Setting a proximity point is strongly encouraged for more relevant results. Always try to use a limit of at least 3 in case the user's intended result is not the first result. Supports both JSON and text output formats.
Parameters | Type | Description |
---|---|---|
q | string | Search query text. Limited to 256 characters. |
auto_complete | boolean optional | Enable partial and fuzzy matching |
bbox | object optional | Bounding box to limit results within specified bounds |
country | array optional | Array of ISO 3166 alpha 2 country codes to limit results |
eta_type | string optional | Request estimated time of arrival (ETA) to results |
format | string optional | Output format: "json_string" returns raw GeoJSON data as a JSON string that can be parsed; "formatted_text" returns human-readable text with place names, addresses, and coordinates. Both return as text content but json_string contains parseable JSON data while formatted_text is for display. |
language | string optional | ISO language code for the response (e.g., "en", "es", "fr", "de", "ja") |
limit | number optional | Maximum number of results to return (1-10) |
navigation_profile | string optional | Routing profile for ETA calculations |
origin | object optional | Starting point for ETA calculations as coordinate object with longitude and latitude |
poi_category | array optional | Array of POI categories to include (e.g., ["restaurant", "cafe"]) |
proximity | string optional | Location to bias results towards. Either coordinate object with longitude and latitude or "ip" for IP-based location. STRONGLY ENCOURAGED for relevant results. |
types | array optional | Array of feature types to filter results (e.g., ["poi", "address", "place"]) |
reverse_geocode_tool
Find addresses, cities, towns, neighborhoods, postcodes, districts, regions, and countries around a specified geographic coordinate pair. Converts geographic coordinates (longitude, latitude) into human-readable addresses or place names. Use limit=1 for best results. This tool cannot reverse geocode businesses, landmarks, historic sites, and other points of interest that are not of the types mentioned. Supports both JSON and text output formats.
Parameters | Type | Description |
---|---|---|
latitude | number | Latitude coordinate to reverse geocode |
longitude | number | Longitude coordinate to reverse geocode |
country | array optional | Array of ISO 3166 alpha 2 country codes to limit results |
format | string optional | Output format: "json_string" returns raw GeoJSON data as a JSON string that can be parsed; "formatted_text" returns human-readable text with place names, addresses, and coordinates. Both return as text content but json_string contains parseable JSON data while formatted_text is for display. |
language | string optional | IETF language tag for the response (e.g., "en", "es", "fr", "de", "ja") |
limit | number optional | Maximum number of results (1-5). Use 1 for best results. If you need more than 1 result, you must specify exactly one type in the types parameter. |
permanent | boolean optional | Whether results can be stored permanently |
types | array optional | Array of feature types to filter results |
worldview | string optional | Returns features from a specific regional perspective |
static_map_image_tool
Generates a static map image from Mapbox Static Images API. Supports center coordinates, zoom level (0-22), image size (up to 1280x1280), various Mapbox styles, and overlays (markers, paths, GeoJSON). Returns PNG for vector styles, JPEG for raster-only styles.
Parameters | Type | Description |
---|---|---|
center | object | Center point of the map as coordinate object with longitude and latitude properties. Longitude: -180 to 180, Latitude: -85.0511 to 85.0511 |
size | object | Image size as object with width and height properties in pixels. Each dimension must be between 1 and 1280 pixels |
zoom | number | Zoom level (0-22). Fractional zoom levels are rounded to two decimal places |
highDensity | boolean optional | Whether to return a high-density (2x) image |
overlays | array optional | Array of overlays to add to the map. Overlays are rendered in order (last item appears on top) |
style | string optional | Mapbox style ID (e.g., mapbox/streets-v12, mapbox/satellite-v9, mapbox/dark-v11) |
version_tool
Get the current version information of the MCP server
{
"mcpServers": {
"mapbox": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"MAPBOX_ACCESS_TOKEN",
"mcp/mapbox"
],
"env": {
"MAPBOX_ACCESS_TOKEN": "YOUR_API_KEY_HERE"
}
}
}
}
Manual installation
You can install the MCP server using:
Installation for