maplibre-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MARTIN_URL | No | The base URL of the Martin server to use. Defaults to 'http://localhost:3000'. | http://localhost:3000 |
| MAPLIBRE_MCP_TOOLSETS | No | Comma-separated list of toolsets to enable. Choose from style, gl-js, native, martin, or all. Defaults to 'style,gl-js'. | style,gl-js |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| validate_styleA | Checks a MapLibre style against the MapLibre Style Specification and lists every problem, each with the path to the property it is about. Run it after editing a style. Pass the style as an object, a URL or a file path. |
| describe_style_specA | Looks up a name in the MapLibre Style Specification: a layer type (like "fill"), a layer or root property (like "fill-extrusion-height" or "sky"), a source type (like "geojson") or an expression operator (like "interpolate"). Returns its documentation, type, default, allowed values, expression support and which MapLibre GL JS and MapLibre Native versions support it. Check here before using a property you are not sure exists in MapLibre, since Mapbox GL JS has properties that MapLibre does not. |
| describe_sourcesA | Reads the metadata of every source in a MapLibre style (TileJSON, PMTiles headers and GeoJSON data) and lists the source layers and fields each one provides. Then checks that every layer uses a source, source layer and fields that exist. Use it before writing layers against data you do not know, and when a layer draws nothing. Pass the style as an object, a URL or a file path. |
| format_styleA | Formats a MapLibre style with the keys in the order of the style specification and two space indentation, the same way as gl-style-format. A style given as a file path is formatted in place, otherwise the formatted JSON is returned. |
| migrate_styleA | Migrates an old style to the current MapLibre Style Specification, the same way as gl-style-migrate: version 7 styles become version 8, and legacy functions and filters become expressions. A style given as a file path is migrated in place, otherwise the migrated JSON is returned. |
| show_mapA | Shows the user an interactive MapLibre map in the chat, with GeoJSON layers and markers on an OpenFreeMap basemap. The user sees the map and you do not; to look at a map yourself, use render_style. Without center and zoom, the map fits the layers and markers. Needs a client that supports MCP Apps. |
| render_styleA | Renders a MapLibre style to a PNG image, so you can see what the style looks like, for example after changing it. Also reports what the renderer noticed, such as style errors, failed requests and missing icons. Pass the style as an object, a URL or a file path. Without center, zoom or bounds, the camera stored in the style is used. |
| compare_stylesA | Renders two versions of a MapLibre style at the same camera, and returns one image with the style before, the style after, and their differences in red. Use it after changing a style, to check that the change did what you meant and nothing else, at a few places and zoom levels. Pass each style as an object, a URL or a file path. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| MapLibre map |
TDQS
Scored across 8 tools
Each tool has a distinct purpose: rendering, comparing, validating, spec lookup, source inspection, formatting, migration, and interactive display. Descriptions clearly differentiate between agent-facing and user-facing map views, eliminating ambiguity.
All tool names follow a consistent verb_noun snake_case pattern (render_style, validate_style, describe_sources, etc.), making the set predictable and easy to reason about.
With 8 tools, the server is well-scoped for the domain of MapLibre style management. Each tool covers a distinct aspect without redundancy or bloat.
The tool surface covers the full style workflow: rendering, comparison, validation, specification lookup, source metadata inspection, formatting, migration, and user display. No obvious gaps for the stated purpose.