Mapbox MCP Server

Mapbox MCP Server

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

Signed
Built by Docker
Requires Secrets
Add to Docker Desktop

Version 4.43 or later needs to be installed to add the server automatically

Use cases

About

Mapbox MCP Server MCP Server

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.

What is an MCP Server?

Characteristics

AttributeDetails
Docker Imagemcp/mapbox
Authormapbox
Repositoryhttps://github.com/mapbox/mcp-server
Dockerfilehttps://github.com/mapbox/mcp-server/blob/main/Dockerfile
Docker Image built byDocker Inc.
Docker Scout Health ScoreDocker Scout Health Score
Verify SignatureCOSIGN_REPOSITORY=mcp/signatures cosign verify mcp/mapbox --key https://raw.githubusercontent.com/docker/keyring/refs/heads/main/public/mcp/latest.pub
LicenceBSD 3-Clause "New" or "Revised" License

Available Tools (10)

Tools provided by this ServerShort Description
category_list_toolGet the complete list of supported search categories from Mapbox Search API.
category_search_toolReturn all places that match a category (industry, amenity, or NAICS‑style code).
directions_toolFetches directions from Mapbox API based on provided coordinates and direction method.
forward_geocode_toolForward geocode addresses, cities, towns, neighborhoods, districts, postcodes, regions, and countries using Mapbox Geocoding API v6.
isochrone_toolComputes 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_toolCalculates travel times and distances between multiple points using Mapbox Matrix API.
poi_search_toolFind one specific place or brand location by its proper name or unique brand.
reverse_geocode_toolFind addresses, cities, towns, neighborhoods, postcodes, districts, regions, and countries around a specified geographic coordinate pair.
static_map_image_toolGenerates a static map image from Mapbox Static Images API.
version_toolGet the current version information of the MCP server

Tools Details

Tool: 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.

ParametersTypeDescription
languagestringoptionalISO language code for the response (e.g., "en", "es", "fr", "de", "ja"). If not provided, English (en) will be used as the default.
limitnumberoptionalNumber 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.
offsetnumberoptionalNumber of categories to skip for pagination. Default is 0.

Tool: 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.

ParametersTypeDescription
categorystringThe canonical category ID to search for (e.g., "restaurant", "hotel", "cafe"). To get the full list of supported categories, use the category_list_tool.
bboxobjectoptionalBounding box to limit results within specified bounds
countryarrayoptionalArray of ISO 3166 alpha 2 country codes to limit results
formatstringoptionalOutput 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.
languagestringoptionalISO language code for the response (e.g., "en", "es", "fr", "de", "ja")
limitnumberoptionalMaximum number of results to return (1-25)
poi_category_exclusionsarrayoptionalArray of POI categories to exclude from results
proximitystringoptionalLocation to bias results towards. Either coordinate object with longitude and latitude or "ip" for IP-based location

Tool: directions_tool

Fetches directions from Mapbox API based on provided coordinates and direction method.

ParametersTypeDescription
coordinatesarrayArray 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.
alternativesbooleanoptionalWhether to try to return alternative routes (true) or not (false, default). Up to two alternatives may be returned.
arrive_bystringoptionalThe 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_atstringoptionalThe 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.
excludestringoptionalWhether to exclude certain road types and custom locations from routing. Multiple values can be specified as a comma-separated list. Available options:
  • All profiles: ferry, cash_only_tolls
  • Driving/Driving-traffic profiles only: motorway, toll, unpaved, tunnel, country_border, state_border or point( ) For custom locations you can use Point exclusions (note lng and lat are space separated and at most 50 points are allowed) Note: country_border excludes all controlled country borders; borders within the Schengen Area are not excluded. geometries|stringoptional|The format of the returned geometry. Options:
  • none (default): no geometry object is returned at all, use this if you do not need all of the intermediate coordinates.
  • geojson: as GeoJSON LineString (might be very long as there could be a lot of points) max_height|numberoptional|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|numberoptional|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|numberoptional|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|stringoptional|Routing profile for different modes of transport. Options:
  • driving-traffic (default): automotive with current traffic conditions
  • driving: automotive based on typical traffic
  • walking: pedestrian/hiking
  • cycling: bicycle

Tool: 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.

ParametersTypeDescription
qstringSearch text to geocode. Max 256 characters, 20 words, no semicolons.
autocompletebooleanoptionalReturn partial/suggested results for partial queries
bboxobjectoptionalBounding box to limit results within specified bounds
countryarrayoptionalArray of ISO 3166 alpha 2 country codes to limit results
formatstringoptionalOutput 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.
languagestringoptionalIETF language tag for the response (e.g., "en", "es", "fr", "de", "ja")
limitnumberoptionalMaximum number of results to return (1-10)
permanentbooleanoptionalWhether results can be stored permanently
proximitystringoptionalLocation 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.
typesarrayoptionalArray of feature types to filter results
worldviewstringoptionalReturns features from a specific regional perspective

Tool: 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'

ParametersTypeDescription
coordinatesobjectA coordinate object with longitude and latitude properties around which to center the isochrone lines. Longitude: -180 to 180, Latitude: -85.0511 to 85.0511
generalizenumberPositive 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|arrayoptional|Contour colors as hex strings without starting # (for example ff0000 for red. must match contours_minutes or contours_meters length if provided). contours_meters|arrayoptional|Distances in meters. Distances must be in increasing order. Must be specified either contours_minutes or contours_meters. contours_minutes|arrayoptional|Contour times in minutes. Times must be in increasing order. Must be specified either contours_minutes or contours_meters. denoise|numberoptional|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|stringoptional|An ISO 8601 date-time string representing the time to depart (format string: YYYY-MM-DDThh:mmss±hh:mm). exclude|arrayoptional|Exclude certain road types and custom locations from routing. polygons|booleanoptional|Whether to return Polygons (true) or LineStrings (false). profile|stringoptional|Mode of travel.


Tool: matrix_tool

Calculates travel times and distances between multiple points using Mapbox Matrix API.

ParametersTypeDescription
coordinatesarrayArray 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).
profilestringRouting profile for different modes of transport. Options:
  • driving-traffic: automotive with current traffic conditions (limited to 10 coordinates)
  • driving: automotive based on typical traffic
  • walking: pedestrian/hiking
  • cycling: bicycle annotations|stringoptional|Specifies the resulting matrices. Possible values are: duration (default), distance, or both values separated by a comma. approaches|stringoptional|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|stringoptional|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|stringoptional|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|stringoptional|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.

Tool: 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.

ParametersTypeDescription
qstringSearch query text. Limited to 256 characters.
auto_completebooleanoptionalEnable partial and fuzzy matching
bboxobjectoptionalBounding box to limit results within specified bounds
countryarrayoptionalArray of ISO 3166 alpha 2 country codes to limit results
eta_typestringoptionalRequest estimated time of arrival (ETA) to results
formatstringoptionalOutput 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.
languagestringoptionalISO language code for the response (e.g., "en", "es", "fr", "de", "ja")
limitnumberoptionalMaximum number of results to return (1-10)
navigation_profilestringoptionalRouting profile for ETA calculations
originobjectoptionalStarting point for ETA calculations as coordinate object with longitude and latitude
poi_categoryarrayoptionalArray of POI categories to include (e.g., ["restaurant", "cafe"])
proximitystringoptionalLocation to bias results towards. Either coordinate object with longitude and latitude or "ip" for IP-based location. STRONGLY ENCOURAGED for relevant results.
typesarrayoptionalArray of feature types to filter results (e.g., ["poi", "address", "place"])

Tool: 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.

ParametersTypeDescription
latitudenumberLatitude coordinate to reverse geocode
longitudenumberLongitude coordinate to reverse geocode
countryarrayoptionalArray of ISO 3166 alpha 2 country codes to limit results
formatstringoptionalOutput 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.
languagestringoptionalIETF language tag for the response (e.g., "en", "es", "fr", "de", "ja")
limitnumberoptionalMaximum 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.
permanentbooleanoptionalWhether results can be stored permanently
typesarrayoptionalArray of feature types to filter results
worldviewstringoptionalReturns features from a specific regional perspective

Tool: 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.

ParametersTypeDescription
centerobjectCenter point of the map as coordinate object with longitude and latitude properties. Longitude: -180 to 180, Latitude: -85.0511 to 85.0511
sizeobjectImage size as object with width and height properties in pixels. Each dimension must be between 1 and 1280 pixels
zoomnumberZoom level (0-22). Fractional zoom levels are rounded to two decimal places
highDensitybooleanoptionalWhether to return a high-density (2x) image
overlaysarrayoptionalArray of overlays to add to the map. Overlays are rendered in order (last item appears on top)
stylestringoptionalMapbox style ID (e.g., mapbox/streets-v12, mapbox/satellite-v9, mapbox/dark-v11)

Tool: version_tool

Get the current version information of the MCP server

Use this MCP Server

{
  "mcpServers": {
    "mapbox": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "MAPBOX_ACCESS_TOKEN",
        "mcp/mapbox"
      ],
      "env": {
        "MAPBOX_ACCESS_TOKEN": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Why is it safer to run MCP Servers with Docker?

Manual installation

You can install the MCP server using:

Installation for