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.

1.1K

9 Tools

Packaged by
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?

MCP Info

AttributeDetails
Docker Imagemcp/mapbox
Authormapbox
Repositoryhttps://github.com/mapbox/mcp-server

Image Building InfoDockerfile|https://github.com/mapbox/mcp-server/blob/main/Dockerfile

Docker Image built by|Docker Inc. Docker Scout Health Score| Docker Scout Health ScoreVerify Signature|COSIGN_REPOSITORY=mcp/signatures cosign verify mcp/mapbox --key https://raw.githubusercontent.com/docker/keyring/refs/heads/main/public/mcp/latest.pubLicence|MIT License

Available Tools (9)

Tools provided by this ServerShort Description
category_list_toolCategory List Tool
category_search_toolCategory Search Tool
directions_toolDirections Tool
isochrone_toolIsochrone Tool
matrix_toolMatrix Tool
reverse_geocode_toolReverse Geocode Tool
search_and_geocode_toolSearch and Geocode Tool
static_map_image_toolStatic Map Image Tool
version_toolVersion Information Tool

Tools Details

Tool: category_list_tool

Tool for retrieving the list of supported categories from Mapbox Search API. Use this when another function requires a list of categories. 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
languagestringoptionalIETF language tag for the response (e.g., "en", "es", "fr", "de", "ja")
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.

This tool is read-only. It does not modify its environment.

This tool interacts with external entities.


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 place category name 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.
languagestringoptionalIETF language tag 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

This tool is read-only. It does not modify its environment.

This tool interacts with external entities.


Tool: directions_tool

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

ParametersTypeDescription
coordinatesarrayArray of coordinate objects with longitude and latitude properties 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

This tool is read-only. It does not modify its environment.

This tool interacts with external entities.


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.

This tool is read-only. It does not modify its environment.

This tool interacts with external entities.


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.

This tool is read-only. It does not modify its environment.

This tool interacts with external entities.


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

This tool is read-only. It does not modify its environment.

This tool interacts with external entities.


Tool: search_and_geocode_tool

Search for POIs, brands, chains, geocode cities, towns, addresses. Do not use for generic place types such as 'museums', 'coffee shops', 'tacos', etc, because category_search_tool is better for that. Setting a proximity point is strongly encouraged for more local results.

ParametersTypeDescription
qstringSearch query text. Limited to 256 characters.
auto_completebooleanoptionalEnable partial and fuzzy matching
bboxobjectoptionalBounding box to limit results within [minLon, minLat, maxLon, maxLat]
countryarrayoptionalArray of ISO 3166 alpha 2 country codes to limit results
eta_typestringoptionalRequest estimated time of arrival (ETA) to results
languagestringoptionalISO language code for the response (e.g., "en", "es", "fr", "de", "ja")
navigation_profilestringoptionalRouting profile for ETA calculations
originobjectoptional
poi_categoryarrayoptionalArray of POI categories to include (e.g., ["restaurant", "cafe"])
proximitystringoptionalLocation to bias results towards. Either [longitude, latitude] or "ip" for IP-based location. STRONGLY ENCOURAGED for relevant results.
typesarrayoptionalArray of feature types to filter results (e.g., ["poi", "address", "place"])

This tool is read-only. It does not modify its environment.

This tool interacts with external entities.


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)

This tool is read-only. It does not modify its environment.

This tool interacts with external entities.


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