mcpField
M
maproll

maproll

本地服务
maproll.io地图与出行42 周前更新

关于 maproll

maproll 是供 AI 助手创建和编辑静态地图的 MCP 服务。它返回永久、可嵌入的 URL,并提供地点查询和选项目录,帮助模型使用受支持的地图设置。

主要功能

  1. 01创建数据驱动地图
  2. 02添加标记、路线和图层
  3. 03将地点解析为坐标
  4. 04查看支持的地图选项
  5. 05返回可嵌入地图 URL
  6. 06提供地图资源与提示词

适用场景

  1. 01将区域数据绘制为分级设色图
  2. 02标记地点并绘制海上航线
  3. 03为现有地图添加图层
  4. 04在文档中嵌入地图

MCP 相关

该服务将地图创建、图层编辑、地点查询和选项发现作为工具提供。它还向 MCP 客户端发布只读目录资源和提示词。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"io-maproll-maproll": {
"command": "npx",
"args": [
"-y",
"@maproll/mcp"
]
}
}
}
启动命令npx -y @maproll/mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@maproll/mcp0.2.2

工具

4

收录的工具列表 · 更新于 2 周前

参数类型必填说明
bboxstring否裁剪到 "minLon,minLat,maxLon,maxLat";投影会重新适配该矩形。
extraobject否用于填写此处未列出的已记录参数的备用入口(patterns、annotations、proportional、labelMinArea 等)。原样传递。
scopestring是要绘制的地理范围。"world"、某个分组("EU"、"NATO"、"G20"、"ASEAN"、"AFRICA"),或用于其下属行政区的国家代码("RO")。完整列表请参阅 maproll://catalog/scopes。
themeenum否配色主题。默认为深色。dark | dark-blue | dark-mono | light | light-blue | light-mono
titlestring否地图上方的标题。
widthinteger否像素宽度。默认为 1200。
breaksarray否分箱上限。classification 为 custom 时必填。
heightinteger否像素高度。默认为投影的纵横比对应的高度。
labelsany否"ISO" 会为所有超过尺寸阈值的区域添加标签;数组则仅为指定的 ID 添加标签。
legendboolean否显示图例。默认为 true;对于没有可显示比例尺的纯色填充图,设为 false。
valuesarray否各区域的数据。分级统计地图使用 `value`,纯色填充区域使用 `color`,定性分组使用 `category`。
scaleBarboolean否左下角的公里比例尺。
subtitlestring否标题下方的较小一行文字。
graticuleboolean否绘制间隔为 10 度的经纬网。
highlightarray否要高亮显示的区域 ID,且不需要为其提供数据。当关注的是哪些区域而非数值大小时,请使用此项代替 `values`。
colorScaleenum否数值大小使用顺序色阶,围绕中点变化的值使用发散色阶,分组使用分类色阶。sequential | diverging | categorical
northArrowboolean否右上角的指南针箭头。
projectionenum否地图投影。每个范围都有合适的默认值;仅在有理由时覆盖。naturalEarth1 | albersUsa | conicConformal | mercator | equalEarth
attributionboolean否OpenStreetMap 署名。默认启用,应保持启用。
legendTitlestring否图例上方的标题。
legendLayoutenum否vertical | horizontal | continuous
legendNoDatastring否额外图例色块的标签,色块使用地图的陆地区域颜色,表示没有值的区域——让读者能区分最低值区间和缺失数据。直接传入标签文本,并说明空白在此地图中的含义:「No data」用于区域仅仅未出现在数据集中;「None recorded」用于空白代表实际的零值(例如香蕉产量地图)。不需要色块时请省略。
classificationenum否数值的分箱方式。发散色阶和分类色阶不使用此项。quantile | jenks | equal | custom

详细介绍

@maproll/mcp

让 AI 助手制作真实地图。每张地图都会以 maproll URL 的形式返回——永久有效、可嵌入,也是进行下一次修改的入口。

通过 maproll MCP 服务制作的全球人均咖啡消费量分级统计地图

这张图片并非本仓库中的文件,而是由 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_URLhttps://mcp.maproll.io/placesfind_places 用于解析地点名称的地址。仅在本地开发时覆盖。

资源和提示词

七个只读资源提供模型原本需要猜测的目录,尤其是 maproll://grammar,以及范围、主题、图标、投影和图案列表,还有一组完整示例。

此服务附带三个提示词:mapped_episode(采用 Mapped 风格的数据集)、readme_map(一张地图,以及包含真实替代文本、可直接粘贴的代码片段)和 refine_map(用通俗英语修改现有地图)。

文档

开发

项目结构、本地开发流程和端到端冒烟测试请参阅 DEVELOPMENT.md。发布说明见 PUBLISHING.md。

采用 MIT 许可。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。