Maproll

io.maproll由 maproll.io 发布v0.2.3更新于 Nov 8, 2026

Make production-ready static maps. Every map is a URL you can embed anywhere.

已验证STDIO仅桌面位置与生活媒体与设计

概览

AI 生成的概览

Maproll 让助手用数据生成静态地图,并以永久、可嵌入的 maproll URL 返回。

可以做什么
  • 用结构化数据创建地图:数值生成分级统计图,颜色填充区域,文本值生成定性分组,highlight 用于标出指定区域。
  • 在已有地图 URL 上追加图层:标记、路线、比例圆、图案填充、注释和标签,可分多轮逐步构建。
  • 把地名解析为真实坐标以及国家、地区、城市和机场的 ISO 或 IATA 编码。
  • 查询渲染器实际支持的 scope、主题、标记图标、投影和图案填充。
  • 读取只读目录资源,并使用内置提示词生成风格化地图、README 片段和自然语言修改。
适用场景
适合让助手把数据或描述变成可分享的静态地图——分级统计图、高亮区域、海上航线或带注释的标记——并返回可嵌入文档、README 或仪表盘的 URL。
运行要求
通过 npx 以 stdio 在本地运行 npm 包 @maproll/mcp,需要 Node 20 或更高版本。无需账号或 API 密钥;可选的 MAPROLL_API_KEY 可去除水印。需联网访问 maproll 的公开渲染 API。
安装前请注意
未使用密钥生成的地图角落会带 maproll 水印。可选的 MAPROLL_API_KEY 通过服务器环境变量传入;密钥 90 天后过期,过期后已发布的嵌入会重新显示水印,需重新生成地图。地图数据与地名查询会发送到 maproll 的托管服务。OpenStreetMap 署名始终保留。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Maproll,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

@maproll/mcp

Let an AI assistant make real maps. Every map comes back as a maproll URL — permanent, embeddable, and the handle for the next change.

[World choropleth of coffee consumption per capita, made through the maproll MCP server]

That image is not a file in this repository. It is a maproll URL rendering live, which is the whole idea: the URL is the map.

Install

bash
claude mcp add maproll -- npx -y @maproll/mcp

Any other client takes the same command as config — Claude Desktop, Cursor (.cursor/mcp.json), VS Code (.vscode/mcp.json under "servers"):

json
{  "mcpServers": {    "maproll": {      "command": "npx",      "args": ["-y", "@maproll/mcp"]    }  }}

Needs Node 20 or newer. No API key, no signup, no account — the server runs from npm on demand and talks to the public render API.

Try it

Ask your assistant, in these words or your own:

Map coffee consumption per capita for the ten biggest drinkers.

Highlight the EU member states on a light map.

Draw the sea route from Shanghai to Rotterdam, with the ports marked.

Compare NATO and BRICS members on a dark map, and give me a URL I can embed.

The third one is the one to try if you only try one. Sea routes thread Suez, Panama and Malacca instead of drawing a straight line across Asia:

[Sea route from Shanghai to Rotterdam through the Suez canal, with both ports marked]

Tools

create_map

A map from your data. Numeric values give a choropleth, colours paint regions flat, text values give qualitative buckets, and highlight covers the case where the point is which regions rather than how much.

Region ids are ISO 3166-1 alpha-2 at the world scope (US, DE, BR) and ISO 3166-2 inside a country scope (RO-B, RO-CJ). Data arrives structured — the server owns the URL grammar, so the model never hand-assembles US:200:#ff0000.

add_layers

Markers, routes, proportional circles, pattern fills, annotations and labels, added to a map you already made. It takes that map's URL and appends — so it is also how a map gets built up over several turns instead of rebuilt from scratch each time.

find_places

A place name resolved to real coordinates and the id maproll uses. Countries, regions, cities and airports, each with its ISO 3166-1 / 3166-2 / IATA code.

Worth using before every marker. Coordinates recalled from memory are routinely wrong by degrees, and a map draws a wrong marker exactly as confidently as a right one.

describe_options

The scopes, themes, marker icons, projections and pattern fills the renderer actually accepts. An invented theme or icon name renders nothing and reports no error, so checking beats guessing.

What comes back

Every tool that makes a map returns the rendered PNG to look at, plus:

FieldWhat it is
svg_urlThe map. Embeddable, permanent, and the handle the other tools take.
png_urlThe same map as PNG.
editor_urlOpens it in the maproll editor, loaded and editable.
embedA ready <img> tag.
warningsNon-fatal problems — region ids the renderer did not recognise, for instance.

Why the URL is the map

An agent usually hands back an artifact: a file, a blob, something that exists in the conversation and nowhere else. maproll hands back an address.

prompt → assistant → maproll MCP → https://api.maproll.io/map.svg?…                                        ↓              README · docs · dashboard · newsletter · the next tool call

There is no session and no state to keep, because svg_url is the state. Pass it to add_layers and a new URL comes back with the addition applied. Every URL from every step still renders, forever, in an <img> tag with no JavaScript.

Branding and keys

Maps work with no account. What anonymous costs is the wordmark: every map this server makes carries the small maproll mark in the corner.

A key removes it. Mint one in the editor at app.maproll.io → API keys, and pass it in the server's environment:

json
{  "mcpServers": {    "maproll": {      "command": "npx",      "args": ["-y", "@maproll/mcp"],      "env": { "MAPROLL_API_KEY": "mr_live_…" }    }  }}

With a key, returned URLs carry a signature bound to that one map, so an embedded map renders clean wherever it is published — without the key itself ever appearing in a link someone can copy. Two things worth knowing: keys expire after 90 days, and when one expires, embeds published under it start carrying the wordmark again. Regenerate the maps if that matters.

OpenStreetMap attribution stays on either way. That is a licence obligation, not branding.

VariableDefaultPurpose
MAPROLL_API_KEY—Entitles renders, and removes the wordmark.
MAPROLL_PLACES_URLhttps://mcp.maproll.io/placesWhere find_places resolves names. Override only for local development.

Resources and prompts

Seven read-only resources publish the catalogs a model otherwise guesses at — maproll://grammar most of all, plus the scope, theme, icon, projection and pattern lists and a set of worked examples.

Three prompts ship with the server: mapped_episode (a dataset in the house style of Mapped), readme_map (a map plus a paste-ready snippet with real alt text), and refine_map (change an existing map in plain English).

Documentation

Development

See DEVELOPMENT.md for the layout, the local loop, and the end-to-end smoke test. Publishing notes are in PUBLISHING.md.

MIT licensed.

来源:README.md,提交 523dee1

工具

4

create_map

Create a map

Make a production-ready static map and return its URL plus a rendered preview. The map is a URL: the returned svg_url renders the same image forever, embeds in an <img> tag with no JavaScript, and is the handle the other maproll tools accept. Use it for choropleths (numeric values per region), flat colour paints, qualitative category maps, and plain highlight maps. Region ids are ISO 3166-1 alpha-2 at the "world" scope ("US", "DE", "BR") and ISO 3166-2 inside a country scope ("RO-B", "RO-CJ"). Numeric values and text categories cannot appear in the same map — pick one. Do not use it for interactive or zoomable maps, driving directions, or street-level detail; maproll renders static statistical maps, not a slippy map.

输入参数bboxextrascope必填themetitlewidthbreaksheightlabelslegendvaluesscaleBar另有 12 个

add_layers

Add layers to a map

Add markers, routes, proportional circles, pattern fills, annotations or labels to an existing map, and return the new URL. Takes the svg_url of a map you already made. Everything on it is kept — this appends rather than replaces, so it is also how you build a map up over several turns. Resolve coordinates with find_places before adding a marker. Guessed lat/lon lands in the wrong country and the render will not complain. Use sea routes for shipping: they follow the lanes through Suez, Panama and Malacca instead of drawing a straight line over land.

输入参数map必填labelsroutesmarkerspatternsannotationsproportional

find_places

Find a place

Resolve a place name to real coordinates and the region id maproll uses. Searches countries, regions, cities and airports, and returns each hit's ISO 3166-1 / 3166-2 / IATA code alongside its latitude and longitude. Use it before placing any marker or lat,lon route endpoint. Coordinates recalled from memory are frequently wrong by degrees, and a map renders a wrong marker exactly as confidently as a right one.

输入参数kindlimitquery必填

describe_options

List what the renderer accepts

Return the exact accepted values for scopes, themes, marker icons, projections, pattern fills, or the URL grammar. The same content is published as the maproll:// resources; this tool is for hosts that do not read resources. Check it rather than guessing a name — an icon or theme that does not exist renders nothing and reports no error.

输入参数kind必填

版本历史

2
  1. v0.2.2Oct 4, 2026
  2. v0.2.0Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分