The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Maproll listing page.
MCP server for maproll — make production-ready static maps from a URL.
Every map is a URL. This server gives an agent a typed way to build one, and returns the rendered map alongside it.
Status: M0 spike. One tool, no resources or prompts yet, not published. See the plan for what M1 adds.
Wire it into a client:
No API key. Anonymous renders carry the maproll wordmark; a token (later)
makes logo a parameter the caller controls.
create_mapStructured data in, a map URL and a rendered PNG out.
Returns svg_url, png_url, editor_url, a ready embed tag, and any
warnings (e.g. region ids the renderer did not recognise). The svg_url
is also the state handle — later tools take it and return a new one, so
there is no session to keep.
editor_url opens the map in app.maproll.io with everything loaded and
editable; the editor reads the query string back into state via its
parseUrl.
Data arrives structured rather than as the packed US:200:#ff0000 wire form.
That grammar is a serialisation detail; the server owns it.
server.ts never mentions a transport, so the same tools ship over stdio
today and streamable HTTP on a Worker later.
map-url.ts is a copy of the editor's builder. M1 extracts it to
@maproll/map-url and both sides import it.add_layers, or find_places yet.src/scopes.ts is generated from editor/src/lib/scopes.ts. It is checked in
so the package is self-contained; regenerate it when scopes change.