🚀 Mapbox Developer MCP Server
A Model Context Protocol (MCP) server that provides AI assistants with direct access to Mapbox developer APIs. This server enables AI models to interact with Mapbox services, helping developers build Mapbox applications more efficiently.
View the related image
🚀 Quick Start
Integration with Developer Tools
Get started by integrating with your preferred AI development environment:
- Claude Code Integration - Command-line development with Claude
- Claude Desktop Integration - Desktop application integration
- Cursor Integration - Cursor IDE integration
- VS Code Integration - Visual Studio Code with GitHub Copilot
DXT Package Distribution
This MCP server can be packaged as a DXT (Desktop Extension) file for easy distribution and installation. DXT is a standardized format for distributing local MCP servers, similar to browser extensions.
Creating the DXT Package
To create a DXT package:
npm install -g @anthropic-ai/dxt
npm run build
npx @anthropic-ai/dxt pack
This will generate mcp-devkit-server.dxt using the configuration in manifest.json.
The DXT package includes:
- Pre-built server code (
dist/esm/index.js)
- Server metadata and configuration
- User configuration schema for the Mapbox access token
- Automatic environment variable setup
Hosted MCP Endpoint
For quick access, you can use our hosted MCP endpoint:
Endpoint: https://mcp-devkit.mapbox.com/mcp
For detailed setup instructions for different clients and API usage, see the Hosted MCP Server Guide. Note: This guide references the standard MCP endpoint - you'll need to update the endpoint URL to use the devkit endpoint above.
Getting Your Mapbox Access Token
A Mapbox access token is required to use this MCP server.
- Sign up for a free Mapbox account at mapbox.com/signup
- Navigate to your Account page
- Create a new token with the required scopes for your use case
For more information about Mapbox access tokens, see the Mapbox documentation on access tokens.
⚠️ Important Note
The MAPBOX_ACCESS_TOKEN environment variable is required. Each tool requires specific token scopes/privileges to function properly. For example:
- Reading styles requires
styles:read scope
- Creating styles requires
styles:write scope
- Managing tokens requires
tokens:read and tokens:write scopes
- Accessing feedback requires
user-feedback:read scope
✨ Features
This section is not explicitly described in a feature - summary way in the original text, but the overall features can be inferred as follows:
- Provide AI assistants with direct access to Mapbox developer APIs.
- Enable AI models to interact with Mapbox services, helping developers build Mapbox applications more efficiently.
- Support various integration methods with developer tools.
- Provide multiple useful tools for accessing documentation, references, managing styles and tokens, etc.
- Include comprehensive distributed tracing for production - ready observability.
📦 Tools
Documentation Tools
get_latest_mapbox_docs_tool - Access the latest official Mapbox documentation directly from the source. This tool fetches comprehensive, up - to - date information about all Mapbox APIs, SDKs, and developer resources from docs.mapbox.com/llms.txt.
Example prompts:
- "What are the latest Mapbox APIs available for developers?"
- "Show me all current Mapbox services and SDKs"
- "I need up - to - date Mapbox documentation for my project"
- "What mapping solutions does Mapbox offer for my tech stack?"
- "Give me an overview of Mapbox's navigation and routing capabilities"
- "Compare Mapbox web SDKs versus mobile SDKs"
- "What's new in the Mapbox ecosystem?"
📖 See more examples and interactive demo →
Reference Tools
get_reference_tool - Access static Mapbox reference documentation and schemas. This tool provides essential reference information that helps AI assistants understand Mapbox concepts and build correct styles and tokens.
Note: This tool exists as a workaround for Claude Desktop's current limitation with MCP resources. Claude Desktop can see resources (via resources/list) but doesn't automatically call resources/read to fetch their content. This tool provides the same reference data through the tool interface, which Claude Desktop does support. Other MCP clients that fully support the resources protocol can access this data directly as MCP Resources (see Resources section below).
Available References:
resource://mapbox-style-layers - Mapbox GL JS style specification reference guide covering all layer types (fill, line, symbol, circle, fill - extrusion) and their properties
resource://mapbox-streets-v8-fields - Complete field definitions for all Mapbox Streets v8 source layers, including enumerated values for each field (useful for building filters)
resource://mapbox-token-scopes - Comprehensive token scope reference explaining what each scope allows and which scopes are needed for different operations
resource://mapbox-layer-type-mapping - Mapping of Mapbox Streets v8 source layers to compatible GL JS layer types, with common usage patterns
Example prompts:
- "What fields are available for the landuse layer?"
- "Show me the token scopes reference"
- "What layer type should I use for roads?"
- "Get the Streets v8 fields reference"
- "What scopes do I need to display a map?"
Style Management Tools
Complete set of tools for managing Mapbox styles via the Styles API:
Style Builder Tool - Create and modify Mapbox styles programmatically through conversational prompts
📖 See the Style Builder documentation for detailed usage and examples →
ListStylesTool - List all styles for a Mapbox account
- Input:
limit (optional - max number of styles), start (optional - pagination token)
- Returns: Array of style metadata with optional pagination info
CreateStyleTool - Create a new Mapbox style
- Input:
name, style (Mapbox style specification)
- Returns: Created style details with ID
RetrieveStyleTool - Retrieve a specific style by ID
- Input:
styleId
- Returns: Complete style specification
UpdateStyleTool - Update an existing style
- Input:
styleId, name (optional), style (optional)
- Returns: Updated style details
DeleteStyleTool - Delete a style by ID
- Input:
styleId
- Returns: Success confirmation
PreviewStyleTool - Generate preview URL for a Mapbox style using an existing public token
- Input:
styleId, title (optional), zoomwheel (optional), zoom (optional), center (optional), bearing (optional), pitch (optional)
- Returns: URL to open the style preview in browser
- Note: This tool automatically fetches the first available public token from your account for the preview URL. Requires at least one public token with
styles:read scope.
⚠️ Important Note
All style tools require a valid Mapbox access token with specific scopes. Using a token without the correct scope will result in authentication errors.
- ListStylesTool: Requires
styles:list scope
- CreateStyleTool: Requires
styles:write scope
- RetrieveStyleTool: Requires
styles:download scope
- UpdateStyleTool: Requires
styles:write scope
- DeleteStyleTool: Requires
styles:write scope
- PreviewStyleTool: Requires
tokens:read scope (to list tokens) and at least one public token with styles:read scope
Note: The username is automatically extracted from the JWT token payload.
Example prompts:
- "Can you create a Christmas themed Style for me?"
- "Please generate a preview link for this style"
- "Can you change the background to snow style?"
Token Management Tools
create - token
Create a new Mapbox access token with specified scopes and optional URL restrictions.
Parameters:
note (string, required): Description of the token
scopes (array of strings, required): Array of scopes/permissions for the token. Must be valid Mapbox scopes (see below)
allowedUrls (array of strings, optional): URLs where the token can be used (max 100)
expires (string, optional): Expiration time in ISO 8601 format (maximum 1 hour in the future)
Available Scopes:
Available scopes for public tokens:
styles:tiles - Read styles as raster tiles
styles:read - Read styles
fonts:read - Read fonts
datasets:read - Read datasets
vision:read - Read Vision API
Example:
{
"note": "Development token for my app",
"scopes": ["styles:read", "fonts:read"],
"allowedUrls": ["https://myapp.com"]
}
Example prompts:
- "Create a new Mapbox token for my web app with styles:read and fonts:read permissions"
- "Generate a token that expires in 30 minutes with styles:tiles and vision:read scopes"
- "Create a restricted token that only works on https://myapp.com with styles:read, fonts:read, and datasets:read"
list - tokens
List Mapbox access tokens for the authenticated user with optional filtering and pagination.
Parameters:
default (boolean, optional): Filter to show only the default public token
limit (number, optional): Maximum number of tokens to return per page (1 - 100)
sortby (string, optional): Sort tokens by "created" or "modified" timestamp
start (string, optional): The token ID after which to start the listing (when provided, auto - pagination is disabled)
usage (string, optional): Filter by token type: "pk" (public)
Pagination behavior:
- When no
start parameter is provided, the tool automatically fetches all pages of results
- When a
start parameter is provided, only the requested page is returned (for manual pagination control)
Example:
{
"limit": 10,
"sortby": "created",
"usage": "pk"
}
Example prompts:
- "List all my Mapbox tokens"
- "Show me my public tokens sorted by creation date"
- "Find my default public token"
- "List the 5 most recently modified tokens"
- "Show all public tokens in my account"
Feedback Tools
Access user feedback items from the Mapbox Feedback API. These tools allow you to retrieve and view user - reported issues, suggestions, and feedback about map data, routing, and POI details.
list_feedback_tool - List user feedback items with comprehensive filtering, sorting, and pagination options.
Parameters:
feedback_ids (array of UUIDs, optional): Filter by one or more feedback item IDs
after (string, optional): Cursor from a previous response for pagination
limit (number, optional): Maximum number of items to return (1 - 1000, default varies)
sort_by (string, optional): Sort field - received_at (default), created_at, or updated_at
order (string, optional): Sort direction - asc (default) or desc
status (array, optional): Filter by status - received, fixed, reviewed, out_of_scope
category (array, optional): Filter by feedback categories
search (string, optional): Search phrase to match against feedback text
trace_id (array, optional): Filter by trace IDs
created_before, created_after (ISO 8601 string, optional): Filter by creation date range
received_before, received_after (ISO 8601 string, optional): Filter by received date range
updated_before, updated_after (ISO 8601 string, optional): Filter by update date range
format (string, optional): Output format - formatted_text (default) or json_string
Returns: Paginated list of feedback items with pagination cursors.
get_feedback_tool - Get a single user feedback item by its unique ID.
Parameters:
feedback_id (UUID, required): The unique identifier of the feedback item
format (string, optional): Output format - formatted_text (default) or json_string
Returns: Single feedback item with details including status, category, feedback text, location, and timestamps.
⚠️ Important Note
Both feedback tools: Require user - feedback:read scope on the access token
Example prompts:
- "List all feedback items with status 'fixed'"
- "Show me feedback items in the 'poi_details' category created after July 1st"
- "Get feedback item with ID 40eae4c7 - b157 - 4b49 - a091 - 7e1099bba77e"
- "Find feedback items containing 'apartment building' in the feedback text"
- "List all routing issue feedback from the last month"
Local Processing Tools
GeoJSON Preview tool (Beta)
Generate a geojson.io URL to visualize GeoJSON data. This tool:
- Validates GeoJSON format (Point, LineString, Polygon, Feature, FeatureCollection, etc.)
- Returns a direct URL to geojson.io for instant visualization
- Supports both GeoJSON objects and JSON strings as input
Example usage:
{
"geojson": {
"type": "Point",
"coordinates": [-122.4194, 37.7749]
}
}
Returns: A single URL string that can be opened in a browser to view the GeoJSON data.
Note: This is a beta feature currently optimized for small to medium - sized GeoJSON files. Large GeoJSON files may result in very long URLs and slower performance. We plan to optimize this in future versions by implementing alternative approaches for handling large datasets.
Example prompts:
- "Generate a preview URL for this GeoJSON data"
- "Create a geojson.io link for my uploaded route.geojson file"
Coordinate Conversion tool
Convert coordinates between different coordinate reference systems (CRS), specifically between WGS84 (EPSG:4326) and Web Mercator (EPSG:3857).
Parameters:
coordinates (array, required): Array of coordinate pairs to convert. Each coordinate pair should be [longitude, latitude] for WGS84 or [x, y] for Web Mercator
fromCRS (string, required): Source coordinate reference system. Supported values: "EPSG:4326" (WGS84), "EPSG:3857" (Web Mercator)
toCRS (string, required): Target coordinate reference system. Supported values: "EPSG:4326" (WGS84), "EPSG:3857" (Web Mercator)
Returns:
An array of converted coordinate pairs in the target CRS format.
Example:
{
"coordinates": [
[-122.4194, 37.7749],
[-74.006, 40.7128]
],
"fromCRS": "EPSG:4326",
"toCRS": "EPSG:3857"
}
Example prompts:
- "Convert these coordinates from WGS84 to Web Mercator: [-122.4194, 37.7749] and [-74.006, 40.7128]"
- "Convert the coordinates [-13627361.0, 4544761.0] from Web Mercator to WGS84"
Bounding Box tool
Calculates the bounding box of given GeoJSON content, returning coordinates as [minX, minY, maxX, maxY].
Parameters:
geojson (string or object, required): GeoJSON content to calculate bounding box for. Can be provided as:
- A JSON string that will be parsed
- A GeoJSON object
Supported GeoJSON types:
- Point
- LineString
- Polygon
- MultiPoint
- MultiLineString
- MultiPolygon
- GeometryCollection
- Feature
- FeatureCollection
Returns:
An array of four numbers representing the bounding box: [minX, minY, maxX, maxY]
minX: Western - most longitude
minY: Southern - most latitude
maxX: Eastern - most longitude
maxY: Northern - most latitude
Example:
{
"geojson": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-73.9857, 40.7484]
},
"properties": {}
},
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-74.006, 40.7128]
},
"properties": {}
}
]
}
}
Example prompts:
- "Calculate the bounding box of this GeoJSON file" (then upload a .geojson file)
- "What's the bounding box for the coordinates in the uploaded parks.geojson file?"
💻 Prompts
MCP Prompts are pre - built workflow templates that guide AI assistants through multi - step tasks. They orchestrate multiple tools in the correct sequence, providing best practices and error handling built - in.
create - and - preview - style
Create a new Mapbox map style and generate a shareable preview link with automatic token management.
Arguments:
style_name (required): Name for the new map style
style_description (optional): Description of the style theme or purpose
base_style (optional): Base style to start from (e.g., "streets - v12", "dark - v11")
preview_location (optional): Location to center the preview map
preview_zoom (optional): Zoom level for the preview (0 - 22, default: 12)
What it does:
- Checks for an existing public token with
styles:read scope
- Creates a new public token if needed
- Creates the map style
- Generates a preview link
Example usage:
Use prompt: create - and - preview - style
Arguments:
style_name: "My Custom Map"
style_description: "A dark - themed map for nighttime navigation"
base_style: "dark - v11"
preview_location: "San Francisco"
preview_zoom: "13"
build - custom - map
Use conversational AI to build a custom styled map based on a theme description.
Arguments:
theme (required): Theme description (e.g., "dark cyberpunk", "nature - focused", "minimal monochrome")
emphasis (optional): Features to emphasize (e.g., "parks and green spaces", "transit lines")
preview_location (optional): Location to center the preview map
preview_zoom (optional): Zoom level for the preview (0 - 22, default: 12)
What it does:
- Uses the Style Builder tool to create a themed style based on your description
- Creates the style in your Mapbox account
- Generates a preview link
Example usage:
Use prompt: build - custom - map
Arguments:
theme: "retro 80s neon"
emphasis: "nightlife and entertainment venues"
preview_location: "Tokyo"
preview_zoom: "14"
analyze - geojson
Analyze and visualize GeoJSON data with automatic validation and bounding box calculation.
Arguments:
geojson_data (required): GeoJSON object or string to analyze
show_bounds (optional): Calculate and display bounding box (true/false, default: true)
convert_coordinates (optional): Provide Web Mercator conversion examples (true/false, default: false)
What it does:
- Validates GeoJSON format
- Calculates bounding box (if requested)
- Provides coordinate conversion examples (if requested)
- Generates an interactive visualization link
Example usage:
Use prompt: analyze - geojson
Arguments:
geojson_data: {"type":"FeatureCollection","features":[...]}
show_bounds: "true"
convert_coordinates: "false"
setup - mapbox - project
Complete setup workflow for a new Mapbox project with proper token security and style initialization.
Arguments:
project_name (required): Name of the project or application
project_type (optional): Type of project: "web", "mobile", "backend", or "fullstack" (default: "web")
production_domain (optional): Production domain for URL restrictions (e.g., "myapp.com")
style_theme (optional): Initial style theme: "light", "dark", "streets", "outdoors", "satellite" (default: "light")
What it does:
- Creates development token with localhost URL restrictions
- Creates production token with domain URL restrictions (if provided)
- Creates backend secret token for server - side operations (if needed)
- Creates an initial map style using the specified theme
- Generates preview link and provides integration guidance
Example usage:
Use prompt: setup - mapbox - project
Arguments:
project_name: "Restaurant Finder"
project_type: "fullstack"
production_domain: "restaurantfinder.com"
style_theme: "light"
debug - mapbox - integration
Systematic troubleshooting workflow for diagnosing and fixing Mapbox integration issues.
Arguments:
issue_description (required): Description of the problem (e.g., "map not loading", "401 error")
error_message (optional): Exact error message from console or logs
style_id (optional): Mapbox style ID being used, if applicable
environment (optional): Where the issue occurs: "development", "production", "staging"
What it does:
- Verifies token validity and required scopes
- Checks style configuration and existence
- Analyzes error messages and provides specific solutions
- Tests API endpoints to isolate the problem
- Provides step - by - step fix instructions
- Offers prevention strategies
Example usage:
Use prompt: debug - mapbox - integration
Arguments:
issue_description: "Getting 401 errors when map loads"
error_message: "401 Unauthorized"
style_id: "my - style - id"
environment: "production"
design - data - driven - style
Create a map style with data - driven properties that respond dynamically to feature data using expressions.
Arguments:
style_name (required): Name for the data - driven style
data_description (required): Description of the data (e.g., "population by city", "earthquake magnitudes")
property_name (required): Name of the data property to visualize (e.g., "population", "magnitude")
visualization_type (optional): How to visualize: "color", "size", "both", "heatmap" (default: "color")
color_scheme (optional): Color scheme: "sequential", "diverging", "categorical" (default: "sequential")
What it does:
- Explains data - driven styling concepts and expressions
- Provides appropriate expression templates for your use case
- Offers color scales and size ranges based on visualization type
- Creates the style with data - driven layers
- Includes advanced expression examples (zoom - based, conditional)
- Provides best practices for accessibility and performance
Example usage:
Use prompt: design - data - driven - style
Arguments:
style_name: "Population Density Map"
data_description: "City population data"
property_name: "population"
visualization_type: "both"
color_scheme: "sequential"
📚 Resources
This server exposes static reference documentation as MCP Resources. While these are primarily accessed through the get_reference_tool, MCP clients that fully support the resources protocol can access them directly.
Available Resources:
- Mapbox Style Specification Guide (
resource://mapbox-style-layers)
- Complete reference for Mapbox GL JS layer types and properties
- Covers fill, line, symbol, circle, and fill - extrusion layers
- Includes paint and layout properties for each layer type
- Mapbox Streets v8 Fields Reference (
resource://mapbox-streets-v8-fields)
- Field definitions for all Streets v8 source layers
- Enumerated values for filterable fields
- Essential for building accurate style filters
- Example:
landuse layer has class field with values like park, cemetery, hospital, etc.
- Mapbox Token Scopes Reference (
resource://mapbox-token-scopes)
- Comprehensive documentation of token scopes
- Explains public vs. secret token scopes
- Common scope combinations for different use cases
- Best practices for token management
- Mapbox Layer Type Mapping (
resource://mapbox-layer-type-mapping)
- Maps Streets v8 source layers to compatible GL JS layer types
- Organized by geometry type (polygon, line, point)
- Includes common usage patterns and examples
- Helps avoid incompatible layer type/source layer combinations
Accessing Resources:
- Claude Desktop & Most MCP Clients: Use the
get_reference_tool to access these references
- Future MCP Clients: May support direct resource access via the MCP resources protocol
Note: Resources provide static reference data that doesn't change frequently, while tools provide dynamic, user - specific data (like listing your styles or tokens) and perform actions (like creating styles or tokens).
🔧 Observability & Tracing
This server includes comprehensive distributed tracing using OpenTelemetry (OTEL) for production - ready observability.
Features
- Opt - in Configuration: Tracing is disabled by default, enabling it requires only setting an OTLP endpoint
- Tool Execution Tracing: Automatic instrumentation of all tool executions with timing, success/failure status, and error details
- HTTP Request Instrumentation: Complete request/response tracing for Mapbox API calls with CloudFront correlation IDs
- Configuration Tracing: Startup configuration loading with error tracking
- Security: Input/output sizes logged but content is protected
- Low Overhead: <1% CPU impact, ~10MB memory for trace buffers
Quick Start with Jaeger
npm run tracing:jaeger:start
cp .env.example .env
npm run inspect:build
npm run tracing:jaeger:stop
Supported Backends
The server supports any OTLP - compatible backend including:
- Development: Jaeger (local Docker)
- Cloud Providers: AWS X - Ray, Azure Monitor, Google Cloud Trace
- SaaS Platforms: Datadog, New Relic, Honeycomb
See .env.example for configuration examples for each platform.
Documentation
- Complete Tracing Guide - Detailed configuration, features, and integration examples
- Verification Guide - Step - by - step verification and troubleshooting
Environment Variables
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
OTEL_SERVICE_NAME=mapbox-mcp-devkit-server
OTEL_TRACES_SAMPLER=traceidratio
OTEL_TRACES_SAMPLER_ARG=0.1
🛠️ Development
Testing
Tool Snapshot Tests
The project includes snapshot tests to ensure tool integrity and prevent accidental additions or removals of tools. These tests automatically discover all tools and create a snapshot of their metadata.
What the snapshot test covers:
- Tool class names (TypeScript classes follow
PascalCaseTool convention, e.g., ListStylesTool)
- Tool names (MCP identifiers must follow
snake_case_tool convention, e.g., list_styles_tool)
- Tool descriptions
When to update snapshots:
- Adding a new tool: After creating a new tool, run the test with snapshot update flag:
npm test -- test/tools/tool - naming - convention.test.ts --updateSnapshot
- Removing a tool: After removing a tool, update the snapshot:
npm test -- src/tools/tool - naming - convention.test.ts --updateSnapshot
- Modifying tool metadata: If you change a tool's name or description, update the snapshot:
npm test -- src/tools/tool - naming - convention.test.ts --updateSnapshot
Running snapshot tests:
npm test
npm test -- --updateSnapshot
Important: Only update snapshots when you have intentionally added, removed, or modified tools. Unexpected snapshot failures indicate accidental changes to the tool structure.
Inspecting Server
Using Node.js
npm run inspect:build
Using Docker
docker build -t mapbox-mcp-devkit .
npx @modelcontextprotocol/inspector docker run -i --rm --env MAPBOX_ACCESS_TOKEN="YOUR_TOKEN" mapbox-mcp-devkit
Creating New Tools
npx plop create - tool
Generated file structure:
The plop generator creates three files for each new tool:
src/tools/your - tool - name - tool/
├── YourToolNameTool.schema.ts # Input schema definition and types
├── YourToolNameTool.ts # Main tool implementation
└── YourToolNameTool.test.ts # Unit tests
After creating a new tool:
- Update the input schema in
YourToolNameTool.schema.ts:
- Define the input parameters using Zod schema
- Export both the schema and the inferred TypeScript type
- Update the tool description in
YourToolNameTool.ts:
- Provide a clear description of what the tool does
- Implement the tool logic in the
execute method
- Update test cases with actual test data in
YourToolNameTool.test.ts
- Update the snapshot test to include the new tool:
npm test -- src/tools/tool - naming - convention.test.ts --updateSnapshot
- Run all tests to ensure everything works:
npm test
Schema separation benefits:
- Better code organization with separate schema files
- Easier maintenance when schema changes
- Consistent with existing tools in the project
- Enhanced TypeScript type safety
Environment Variables
VERBOSE_ERRORS
Set VERBOSE_ERRORS=true to get detailed error messages from the MCP server. This is useful for debugging issues when integrating with MCP clients.
By default, the server returns generic error messages. With verbose errors enabled, you'll receive the actual error details, which can help diagnose API connection issues, invalid parameters, or other problems.
ENABLE_MCP_UI
MCP - UI Support (Enabled by Default)
MCP - UI allows tools that return URLs to also return interactive iframe resources that can be embedded directly in supporting MCP clients. This is enabled by default and is fully backwards compatible with all MCP clients.
Supported Tools:
preview_style_tool - Embeds Mapbox style previews
geojson_preview_tool - Embeds geojson.io visualizations
style_comparison_tool - Embeds side - by - side style comparisons
How it Works:
- Tools return both a text URL (always works) and a UIResource for iframe embedding
- Clients that don't support MCP - UI (like Claude Desktop) simply ignore the UIResource and use the text URL
- Clients that support MCP - UI (like Goose) can render the iframe for a richer experience
Disabling MCP - UI (Optional):
If you want to disable MCP - UI support:
Via environment variable:
export ENABLE_MCP_UI=false
Or via command - line flag:
node dist/esm/index.js --disable - mcp - ui
Note: You typically don't need to disable this. The implementation is fully backwards compatible and doesn't affect clients that don't support MCP - UI. See mcpui.dev for compatible clients.
🚑 Troubleshooting
Issue: Tools fail with authentication errors
Solution: Check that your MAPBOX_ACCESS_TOKEN has the required scopes for the tool you're using. See the token scopes section above.
Issue: Large GeoJSON files cause slow performance
Solution: The GeoJSON preview tool may be slow with very large files. Consider simplifying geometries or using smaller datasets for preview purposes.
🤝 Contributing
We welcome contributions to the Mapbox Development MCP Server! Please review our documentation:
- Engineering Standards (docs/engineering_standards.md) - Comprehensive guidelines for all contributors
- CLAUDE.md - Architecture and technical patterns
- AGENTS.md - Critical patterns and common errors for AI agents
- GitHub Copilot Guidelines - Copilot - specific development practices