Skip to main content
Glama
mapbox

mapbox-docs

Official
by mapbox

Mapbox MCP Documentation Server

A Model Context Protocol (MCP) server that gives AI assistants instant access to Mapbox documentation and reference materials — no Mapbox access token required.

Quick Start

Hosted (no install required)

Connect directly to the hosted endpoint — nothing to install or maintain:

Claude Code / Claude Desktop / Cursor / VS Code

{
  "mcpServers": {
    "mapbox-docs": {
      "url": "https://mcp-docs.mapbox.com/mcp"
    }
  }
}

npx (runs locally, no install)

Claude Code — run claude mcp add:

claude mcp add mapbox-docs -- npx -y @mapbox/mcp-docs-server

Claude Desktop — add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "mapbox-docs": {
      "command": "npx",
      "args": ["-y", "@mapbox/mcp-docs-server"]
    }
  }
}

Cursor / VS Code — add the same mcpServers block to your editor's MCP settings file.


Docker

Build the image:

docker build -t mapbox/mcp-docs-server .

Or pull from the registry:

docker pull mapbox/mcp-docs-server

Claude Desktop / Cursor / VS Code — configure your MCP client to run the container:

{
  "mcpServers": {
    "mapbox-docs": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "mapbox/mcp-docs-server"]
    }
  }
}

Local (from source)

git clone https://github.com/mapbox/mcp-docs-server.git
cd mcp-docs-server
npm install
npm run build

Claude Desktop / Cursor / VS Code:

{
  "mcpServers": {
    "mapbox-docs": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-docs-server/dist/esm/index.js"]
    }
  }
}

Related MCP server: Mapbox MCP Server

Tools

get_document_tool — Fetches the full content of a specific Mapbox documentation page by URL. Use this to follow a link from a resource and retrieve the complete page content.

Example prompts:

  • "What Mapbox APIs are available?"

  • "How do I add a custom layer to a Mapbox style?"

  • "What's the latest Mapbox GL JS version?"

batch_get_documents_tool — Fetches multiple Mapbox documentation pages in a single call (max 20). More efficient than calling get_document_tool multiple times. Failed pages include an error message rather than failing the whole batch.

search_mapbox_docs_tool — Searches Mapbox documentation across API reference, GL JS, Help Center, Style Spec, Studio, Search JS, iOS/Android Maps and Navigation SDKs, and Tilesets, returning ranked page URLs and descriptions. Use this to find relevant documentation before fetching full pages with get_document_tool or batch_get_documents_tool.

Example prompts:

  • "Find docs about camera animation"

  • "Search for geocoding API examples"

  • "What documentation exists for custom layers?"

Resources

MCP resources expose reference data that AI assistants can read on demand:

Resource URI

Contents

resource://mapbox-api-reference

REST API reference docs (endpoints, parameters, rate limits)

resource://mapbox-sdk-docs

SDK and client library docs (iOS, Android, Flutter, web)

resource://mapbox-guides

Tutorials, how-tos, and guides

resource://mapbox-examples

Code examples, API playgrounds, and interactive demos

resource://mapbox-reference

Tilesets, data products, accounts, and pricing reference

resource://mapbox-style-layers

Style layer reference (paint/layout properties for all layer types)

resource://mapbox-streets-v8-fields

Mapbox Streets v8 tileset field reference

resource://mapbox-token-scopes

All available Mapbox token scopes with descriptions

resource://mapbox-layer-type-mapping

Mapping of Mapbox layer types to their properties

Development

Prerequisites

  • Node.js >= 22

  • npm

Setup

git clone https://github.com/mapbox/mcp-docs-server.git
cd mcp-docs-server
npm install

Commands

npm run build          # Compile TypeScript (ESM + CJS)
npm test               # Run test suite (vitest)
npm run lint           # ESLint
npm run format         # Prettier check
npm run format:fix     # Prettier auto-fix
npm run inspect:build  # Launch MCP Inspector against built server
npm run inspect:dev    # Launch MCP Inspector against source (tsx)

Architecture

The server is a TypeScript MCP server using @modelcontextprotocol/sdk with a dual ESM/CJS build via tshy.

  • Tools extend BaseTool<InputSchema, OutputSchema> in src/tools/

  • Resources extend BaseResource in src/resources/

  • No Mapbox access token required for documentation tools

  • HTTP requests use a shared httpPipeline with 1-hour caching

Creating a New Tool

  1. Create a directory src/tools/my-tool/

  2. Add MyTool.input.schema.ts (Zod schema), MyTool.output.schema.ts, and MyTool.ts (extends BaseTool)

  3. Register in src/tools/toolRegistry.ts

  4. Add tests in test/tools/my-tool/

Contributing

Please read CONTRIBUTING.md and VISION.md before submitting a pull request. Contributors using AI coding assistants should also review:

  • CLAUDE.md — for Claude Code

  • AGENTS.md — for other AI coding assistants (Cursor, Copilot, Aider, etc.)

License

MIT — see LICENSE

Available Tools

3 tools
batch_get_documents_toolBatch Get Mapbox Documents ToolA
Read-onlyIdempotent
Inspect

Fetch the full content of multiple Mapbox documentation pages in a single call (max 20). More efficient than calling get_document_tool multiple times. Returns an array of results — failed pages include an error message rather than failing the whole batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesArray of Mapbox documentation page URLs to fetch (max 20). All must be mapbox.com URLs.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond the annotations by disclosing the return array structure and that failed pages include an error message rather than failing the whole batch. Annotations already cover read-only, idempotent, and non-destructive traits, so the description supplements rather than repeats them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences long, front-loaded with the core purpose, and each sentence adds distinct value: what it does, why it is better than the alternative, and the partial-failure behavior. No filler or redundant phrases.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description covers the essential details: action, resource, upper limit, efficiency benefit, and return structure. Combined with the schema and annotations, the agent has enough context to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage of the single 'urls' parameter, including its type, max/min items, format, and the constraint that all URLs must be mapbox.com. The description does not add additional parameter-specific meaning beyond restating the batch context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches full content of multiple Mapbox documentation pages in a single call, with a specific verb ('Fetch') and resource ('multiple Mapbox documentation pages'). It explicitly distinguishes itself from the sibling get_document_tool by highlighting batch efficiency.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context by naming get_document_tool as the alternative and explaining that this batch version is more efficient for multiple pages. It does not explicitly state when not to use it, but the comparison implies single-page calls should use get_document_tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_document_toolGet Mapbox Document ToolA
Read-onlyIdempotent
Inspect

Fetch the full content of a specific Mapbox documentation page by URL. Use this after get_latest_mapbox_docs_tool to follow a link from the index and retrieve the complete page content. For fetching multiple pages at once, use batch_get_documents_tool instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL of a Mapbox documentation page to fetch. Must be a mapbox.com URL (e.g. https://docs.mapbox.com/api/search/geocoding/).

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, which already disclose the safety profile. The description does not contradict these and adds minimal extra behavioral context (e.g., 'full content'), but it does not discuss potential side effects, rate limits, or output format. Since annotations lower the burden, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two well-structured sentences. It front-loads the core function immediately, then provides usage context and an alternative in the second sentence. Every word contributes value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with strong annotations, the description is largely complete. It states what the tool does, when to use it, and how it relates to sibling tools. It does not specify the exact return format (e.g., plain text, markup), but the absence of an output schema makes this a minor gap, so a 4 is warranted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully documents the 'url' parameter with format, example, and constraint. The description only echoes 'by URL' and adds no additional parameter-level semantics beyond what the schema provides. With 100% schema coverage, the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action and resource: "Fetch the full content of a specific Mapbox documentation page by URL." It distinguishes from siblings by explicitly referencing get_latest_mapbox_docs_tool and batch_get_documents_tool, and the context signal for search_mapbox_docs_tool implies a different purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is provided: "Use this after get_latest_mapbox_docs_tool to follow a link from the index" and "For fetching multiple pages at once, use batch_get_documents_tool instead." This clearly defines when to use and suggests an alternative, fulfilling the dimension well.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_mapbox_docs_toolSearch Mapbox Docs ToolA
Read-onlyIdempotent
Inspect

Search Mapbox documentation by keyword or natural language query. Searches across API reference, GL JS, Help Center, Style Spec, Studio, Search JS, iOS/Android Maps and Navigation SDKs, and Tilesets. Returns ranked results with titles, URLs, and descriptions. Use get_document_tool to fetch the full content of a result page.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query for Mapbox documentation (e.g. "add a marker", "camera animation", "geocoding API").
limitNoMaximum number of results to return (1–20, default 5).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context by stating the broad scope of documentation sources and that results are ranked with titles, URLs, and descriptions. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four concise sentences, front-loaded with the core action. Every sentence contributes distinct information: what it searches, where it searches, what it returns, and how to proceed. No redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search tool with only two fully documented parameters and no output schema, the description is complete: it states the search scope, the return format (ranked results with titles, URLs, descriptions), and the logical next step (get_document_tool). Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both 'query' and 'limit' fully described in the schema. The description adds context about natural-language/kewyord searching and the breadth of sources, but it does not provide additional syntax or parameter details beyond what the schema already offers, aligning with the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Search Mapbox documentation', then enumerates the exact sources (API reference, GL JS, Help Center, etc.). It clearly distinguishes from sibling get_document_tool by positioning this as the search/retrieval step and explicitly says to use get_document_tool to fetch full content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates when to use this tool (when searching docs by keyword or natural language) and explicitly points to get_document_tool as the alternative for fetching full content. It does not mention the sibling batch_get_documents_tool, but the guidance given is sufficient for the primary workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.3.1
    • First observedbatch_get_documents_tool
    • First observedget_document_tool
    • First observedsearch_mapbox_docs_tool

TDQS

A4.4/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: search_index returns pages, get_document fetches a single page, and batch_get_documents fetches multiple. There is no overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun_tool pattern (batch_get_documents_tool, get_document_tool, search_mapbox_docs_tool), making them predictable and easy to understand.

Tool Count5/5

With 3 tools, the server covers the essential operations for documentation retrieval (search, single fetch, batch fetch) without unnecessary bloat. The count is well-scoped for this purpose.

Completeness4/5

The tool set covers search, single fetch, and batch fetch effectively. However, there is no tool to list or navigate the documentation structure (e.g., get index/topics), requiring reliance on search alone. This is a minor gap.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers