关于 maproll
maproll 是供 AI 助手创建和编辑静态地图的 MCP 服务。它返回永久、可嵌入的 URL,并提供地点查询和选项目录,帮助模型使用受支持的地图设置。
主要功能
- 01创建数据驱动地图
- 02添加标记、路线和图层
- 03将地点解析为坐标
- 04查看支持的地图选项
- 05返回可嵌入地图 URL
- 06提供地图资源与提示词
适用场景
- 01将区域数据绘制为分级设色图
- 02标记地点并绘制海上航线
- 03为现有地图添加图层
- 04在文档中嵌入地图
MCP 相关
该服务将地图创建、图层编辑、地点查询和选项发现作为工具提供。它还向 MCP 客户端发布只读目录资源和提示词。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| bbox | string | 否 | 裁剪到 "minLon,minLat,maxLon,maxLat";投影会重新适配该矩形。 |
| extra | object | 否 | 用于填写此处未列出的已记录参数的备用入口(patterns、annotations、proportional、labelMinArea 等)。原样传递。 |
| scope | string | 是 | 要绘制的地理范围。"world"、某个分组("EU"、"NATO"、"G20"、"ASEAN"、"AFRICA"),或用于其下属行政区的国家代码("RO")。完整列表请参阅 maproll://catalog/scopes。 |
| theme | enum | 否 | 配色主题。默认为深色。dark | dark-blue | dark-mono | light | light-blue | light-mono |
| title | string | 否 | 地图上方的标题。 |
| width | integer | 否 | 像素宽度。默认为 1200。 |
| breaks | array | 否 | 分箱上限。classification 为 custom 时必填。 |
| height | integer | 否 | 像素高度。默认为投影的纵横比对应的高度。 |
| labels | any | 否 | "ISO" 会为所有超过尺寸阈值的区域添加标签;数组则仅为指定的 ID 添加标签。 |
| legend | boolean | 否 | 显示图例。默认为 true;对于没有可显示比例尺的纯色填充图,设为 false。 |
| values | array | 否 | 各区域的数据。分级统计地图使用 `value`,纯色填充区域使用 `color`,定性分组使用 `category`。 |
| scaleBar | boolean | 否 | 左下角的公里比例尺。 |
| subtitle | string | 否 | 标题下方的较小一行文字。 |
| graticule | boolean | 否 | 绘制间隔为 10 度的经纬网。 |
| highlight | array | 否 | 要高亮显示的区域 ID,且不需要为其提供数据。当关注的是哪些区域而非数值大小时,请使用此项代替 `values`。 |
| colorScale | enum | 否 | 数值大小使用顺序色阶,围绕中点变化的值使用发散色阶,分组使用分类色阶。sequential | diverging | categorical |
| northArrow | boolean | 否 | 右上角的指南针箭头。 |
| projection | enum | 否 | 地图投影。每个范围都有合适的默认值;仅在有理由时覆盖。naturalEarth1 | albersUsa | conicConformal | mercator | equalEarth |
| attribution | boolean | 否 | OpenStreetMap 署名。默认启用,应保持启用。 |
| legendTitle | string | 否 | 图例上方的标题。 |
| legendLayout | enum | 否 | vertical | horizontal | continuous |
| legendNoData | string | 否 | 额外图例色块的标签,色块使用地图的陆地区域颜色,表示没有值的区域——让读者能区分最低值区间和缺失数据。直接传入标签文本,并说明空白在此地图中的含义:「No data」用于区域仅仅未出现在数据集中;「None recorded」用于空白代表实际的零值(例如香蕉产量地图)。不需要色块时请省略。 |
| classification | enum | 否 | 数值的分箱方式。发散色阶和分类色阶不使用此项。quantile | jenks | equal | custom |
详细介绍
@maproll/mcp
让 AI 助手制作真实地图。每张地图都会以 maproll URL 的形式返回——永久有效、可嵌入,也是进行下一次修改的入口。

这张图片并非本仓库中的文件,而是由 maproll URL 实时渲染的,这正是核心理念:URL 就是地图。
安装
claude mcp add maproll -- npx -y @maproll/mcp
其他客户端也使用相同命令作为配置——Claude Desktop、Cursor
(.cursor/mcp.json)、VS Code("servers" 下的 .vscode/mcp.json):
{
"mcpServers": {
"maproll": {
"command": "npx",
"args": ["-y", "@maproll/mcp"]
}
}
}
需要 Node 20 或更高版本。无需 API 密钥、注册或账户——服务会按需从 npm 运行,并与公共渲染 API 通信。
试用
用下面这些话,或你自己的说法,向助手提问:
绘制人均咖啡消费量最高的十个国家的地图。
在浅色地图上突出显示欧盟成员国。
绘制从上海到鹿特丹的海上航线,并标出港口。
在深色地图上对比 NATO 和 BRICS 成员国,并给我一个可嵌入的 URL。
如果只试一个,就试第三个。海上航线会经过苏伊士、巴拿马和马六甲,而不是横穿亚洲画一条直线:

工具
create_map
根据你的数据制作地图。数值会生成分级统计图,颜色会为区域填充纯色,文本值会生成定性分组,而 highlight 则适用于关注的是哪些区域,而非数量多少的情况。
世界范围使用 ISO 3166-1 alpha-2 区域 ID(US、DE、BR),国家范围内使用 ISO 3166-2(RO-B、RO-CJ)。数据以结构化形式传入——URL 语法由服务负责处理,因此模型无需手动拼接 US:200:#ff0000。
add_layers
在已有地图上添加标记、路线、比例圆、图案填充、注释和标签。它接收该地图的 URL 并追加图层——因此,也可以在多轮对话中逐步构建地图,而不必每次都从头重建。
find_places
将地点名称解析为真实坐标及 maproll 使用的 ID。支持国家、地区、城市和机场,并提供各自的 ISO 3166-1 / 3166-2 / IATA 代码。
建议在添加每个标记前使用。凭记忆填写的坐标常常会差好几度,而地图对错误标记的绘制,会和正确标记一样笃定。
describe_options
列出渲染器实际接受的范围、主题、标记图标、投影和图案填充。使用不存在的主题或图标名称不会显示任何内容,也不会报告错误,因此先检查比猜测更可靠。
返回内容
每个制作地图的工具都会返回渲染后的 PNG 供查看,此外还会返回:
| 字段 | 含义 |
|---|---|
svg_url | 地图。可嵌入、永久有效,也是其他工具接受的入口。 |
png_url | 同一张地图的 PNG 版本。 |
editor_url | 在 maproll 编辑器中打开地图,地图已加载且可编辑。 |
embed | 可直接使用的 <img> 标签。 |
warnings | 非致命问题,例如渲染器无法识别的区域 ID。 |
为什么 URL 就是地图
Agent 通常会返回一个产物:一个文件、一个数据块,或只存在于对话中的某种内容。maproll 返回的是一个地址。
prompt → assistant → maproll MCP → https://api.maproll.io/map.svg?…
↓
README · docs · dashboard · newsletter · the next tool call
无需会话,也无需保存状态,因为 svg_url 就是状态。将它传给 add_layers,便会返回一条已应用新增图层的新 URL。每个步骤生成的 URL 都会永久有效,并且无需 JavaScript 就能在 <img> 标签中渲染。
品牌标识和密钥
无需账号即可使用 Maps。匿名使用的代价是品牌标识:此服务生成的每张地图都会在角落带有小小的 maproll 标记。
密钥可以移除该标记。在编辑器 app.maproll.io → API keys 中创建密钥,并将其传入服务的环境变量:
{
"mcpServers": {
"maproll": {
"command": "npx",
"args": ["-y", "@maproll/mcp"],
"env": { "MAPROLL_API_KEY": "mr_live_…" }
}
}
}
使用密钥后,返回的 URL 会附带与对应地图绑定的签名,因此嵌入地图无论发布在哪里都能干净呈现——密钥本身绝不会出现在别人可以复制的链接中。有两点值得注意:密钥在 90 天后过期;密钥过期后,使用该密钥发布的嵌入地图会重新显示品牌标识。如果这点很重要,请重新生成地图。
无论是否使用密钥,都必须注明 OpenStreetMap 来源。这是许可义务,不是品牌要求。
| 变量 | 默认值 | 用途 |
|---|---|---|
MAPROLL_API_KEY | — | 授权渲染,并移除品牌标识。 |
MAPROLL_PLACES_URL | https://mcp.maproll.io/places | find_places 用于解析地点名称的地址。仅在本地开发时覆盖。 |
资源和提示词
七个只读资源提供模型原本需要猜测的目录,尤其是 maproll://grammar,以及范围、主题、图标、投影和图案列表,还有一组完整示例。
此服务附带三个提示词:mapped_episode(采用 Mapped 风格的数据集)、readme_map(一张地图,以及包含真实替代文本、可直接粘贴的代码片段)和 refine_map(用通俗英语修改现有地图)。
文档
- maproll.io/mcp — 一页介绍本工具。
- docs.maproll.io/docs/mcp/intro — 各客户端的安装说明、每个工具的架构和使用方法。
- 已在 MCP Registry 中列出,名称为
io.maproll/maproll。
开发
项目结构、本地开发流程和端到端冒烟测试请参阅 DEVELOPMENT.md。发布说明见 PUBLISHING.md。
采用 MIT 许可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。