Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MARTIN_URLNoThe base URL of the Martin server to use. Defaults to 'http://localhost:3000'.http://localhost:3000
MAPLIBRE_MCP_TOOLSETSNoComma-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

CapabilityDetails
tools
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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. inspect_tile shows the values the fields take, and debug_layers says what each layer draws at a place. Pass the style as an object, a URL or a file path.

inspect_tileA

Reads the vector tile of a source at a place and zoom, and lists each source layer with its number of features, their geometry types, the values of each field and a few example features. It also gives the zoom range of the source and the source layers its metadata lists that the tile lacks. Use it to learn the values data really has, like the classes of roads, before writing filters and expressions. The source is either the id of a source in the style you pass, or the URL of a vector source: a TileJSON URL like a Martin source, a PMTiles archive, or a tile URL with {z}, {x} and {y}. Reads MVT and MLT tiles.

debug_layersA

Says for each layer of a style whether it draws anything at a place and zoom, and when it draws nothing, why: it is hidden or outside its zoom range, the tile lacks its source layer, its filter matches no feature (listed with the values the tile has), a fill layer gets no polygons, its opacity, width or size is 0 or its color transparent, or icons are missing from the sprite. It also notes text that GL JS draws with local fonts and MapLibre Native leaves out, because the style has no glyphs URL or the glyph server lacks its font stack. It reads the vector tiles and GeoJSON data at the place. Use it when a layer draws nothing. Pass the style as an object, a URL or a file path.

describe_gl_js_apiA

Looks up a class, method, option, event or function of MapLibre GL JS, like "Map", "Map#flyTo", "MapOptions.maxPitch", "click" or "addProtocol", in the type definitions that GL JS ships. Returns its signature, documentation, parameters, default and examples, and for a class or an options type, its members. Answers for the GL JS version this server renders with, or for another version, like the one a project uses. Check here before using a method or option you are not sure exists in MapLibre, since Mapbox GL JS has some that MapLibre GL JS does not.

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_pageA

Loads a web page with a MapLibre map in a headless browser and returns a screenshot of it, so you can see a map together with the plugins, controls and code of its page, which render_style leaves out since a style cannot hold them. Also reports the errors and warnings of the page, the requests that failed and the camera of the map. Pass an HTML file, which is served together with the files in its folder, or the URL of a page. A page that keeps its map in window.map is drawn once that map has loaded everything, and script can then use the map, for example to move the camera before the screenshot.

preview_styleA

Gives the user a link to an interactive map of a style, served by this server on their machine, so there is no viewer page to write, no web server to start and no browser to open for them. Given a file, the map follows it and redraws when the file changes. Given the style as an object, the map shows a changed style when you pass it together with the link, as link. Pass the style as an object, a URL or a file path.

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 fonts and icons that are missing. 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. For a view over 3D terrain, cameraPosition and lookAt place the camera in space, and the result gives the center, zoom, bearing and pitch of that view to store in the style.

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
MapLibre map

TDQS

A4.1/5.0

Scored across 11 tools

Disambiguation4/5

Most tools have clearly distinct purposes: spec/API lookup, source inspection, tile inspection, validation, debugging, and rendering. However, the set contains several output-oriented tools (render_style, render_page, compare_styles, preview_style, show_map) whose boundaries could be confused without careful reading, especially preview_style vs show_map and render_style vs render_page.

Naming Consistency5/5

All tool names use consistent snake_case and are verb-led (describe_, render_, compare_, preview_, debug_, inspect_, show_, validate_). Minor variations in noun plurality and the GL_JS acronym do not break the pattern.

Tool Count5/5

11 tools is well-scoped for a MapLibre style development and debugging assistant. Each tool appears to serve a distinct workflow: lookup, validation, source/tile inspection, debugging, and visual rendering.

Completeness4/5

The surface covers core style development needs: spec and API lookup, validation, source/tile inspection, layer debugging, and multiple rendering/preview paths. A minor gap is the lack of tools for directly editing or generating styles programmatically, though agents can likely work around this by editing style files and re-validating.

Maintenance

ActivityMaintained
ResponsivenessNo issues