mcpField
M
mmj-palette

mmj-palette

本地服务
github.com/meta-taro媒体与设计01 天前更新

关于 mmj-palette

mmj-palette 是命令行工具,可根据四种基准色生成 MapLibre 配色或完整样式 JSON,面向希望自定义地图颜色的使用者。它支持按角色覆盖颜色,并为生成的样式添加标记。

主要功能

  1. 01生成 24 种地图角色配色
  2. 02构建完整样式 JSON
  3. 03覆盖单个角色的颜色
  4. 04使用 Oklab 混合颜色
  5. 05保留生成样式标记

适用场景

  1. 01根据四种基准色创建自定义配色
  2. 02基于预设导出命名样式
  3. 03手动调整指定道路颜色

MCP 相关

它提供 stdio MCP 工具,用于列出颜色角色和基础样式、生成配色以及构建样式 JSON。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"meta-taro-mmj-palette": {
"command": "npx",
"args": [
"-y",
"@mmj-map/palette"
]
}
}
}
启动命令npx -y @mmj-map/palette

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

安装包
npm@mmj-map/palette0.1.0

工具

4

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

此工具无需参数。

详细介绍

@mmj-map/palette

让使用者完全打造自己的配色的工具。从指定色(4~5 种)生成包含 24 个角色的配色,或可直接分发的样式 JSON。

请勿将此处生成的内容放入 styles/。 MMJ 发布的 6 款样式仍是手工创作(D-002)。 此工具是专为使用者准备的独立工具(D-021)。 输出中会包含 mmj:generated: true,以便与手工作品区分。

使用

# 24 役割の配色(<mmj-map palette-url> にそのまま渡せる)
pnpm palette -- --land=#f7f9fb --water=#bfd7e8 --ink=#16202b --accent=#0a5fff

# そのまま配れるスタイル
pnpm palette -- --land=#f7f9fb --water=#bfd7e8 --ink=#16202b --accent=#0a5fff \
  --style --base=modern-light --name="Acme Maps" --out=acme.json

# 出したあとに確かめる
pnpm style:check -- acme.json
参数含义
--land陆地、背景的颜色(必填)
--water水域颜色(必填)。与陆地色系相互独立
--ink文字颜色(必填)。标签最深的一端
--accent主题色(必填)。用于高速公路和车站的边框
--green公园、森林的颜色。不指定时从陆地色导出
--set=角色=颜色手动覆盖角色。以最后一个为准。可以重复指定
--style生成完整样式,而非仅生成配色
--base基础样式名称。默认值为 modern-light(使用 --style 时)
--name要创建的样式名称。默认值为 Custom
--out输出路径。不指定则输出到标准输出

如何推导

指定色会原样输出(不会改动)。

角色结果
background earth station-fill halo与 --land 完全相同
water与 --water 完全相同
label-city与 --ink 完全相同
highway station与 --accent 完全相同
landcover built paved buildings path road-* rail boundary label-station label-neighbourhood颜色从地色逐渐加深至文字色。越细的元素越接近地色
waterway label-water颜色从水域色逐渐加深至文字色
highway-casing将 accent 向文字色一侧偏移得到的颜色
green使用 --green;未指定时从陆地色推导

混色使用 Oklab(直接在 sRGB 中混色会压缩色阶并使颜色变暗)。没有添加依赖(仅使用公式)。

不将因偏好而异的部分写成公式

在浅色底图上,有时希望道路呈白色镂空效果(比地色更亮), 但此处的颜色会从地色逐渐加深至文字色。若想要白色镂空效果,请手动覆盖。

pnpm palette -- ... --set=road-minor=#ffffff --set=road-medium=#ffffff --set=road-major=#ffffff

MCP 接口

可以直接通过 Agent 创建。

pnpm palette:mcp

注册到 Claude Code(.mcp.json / claude mcp add):

{
  "mcpServers": {
    "mmj-palette": {
      "command": "pnpm",
      "args": ["palette:mcp"],
      "cwd": "<このリポジトリのパス>"
    }
  }
}
工具用途
mmj_list_roles返回 24 个角色,以及各自会改变地图的哪些部分
mmj_list_bases返回可用作基础的样式名称
mmj_derive_palette从指定色生成包含 24 个角色的配色
mmj_build_style从指定色生成样式 JSON

未安装 SDK。MCP 的 stdio 只是以换行符分隔传输 JSON-RPC 2.0, 此处只需要 initialize / tools/list / tools/call 这 3 项。 官方 SDK(@modelcontextprotocol/sdk 1.30.0・MIT)还会引入 express / hono / cors / jose / express-rate-limit 等,实测会增加 99 个包(实测日期:2026-09-21)。 这些依赖是用于 HTTP 和 SSE 传输的,与仅使用 stdio 不相称(baseline §1 / §12)。

作为替代,提供了启动真实进程并传输真实 JSON-RPC 的测试(test/mcp.test.ts)。 如果规范发生变化,测试就会失败。

使用方式


<mmj-map tiles="..." style-url="/styles/modern-light.json" palette-url="./acme-palette.json"></mmj-map>


<mmj-map tiles="..." style-url="./acme.json"></mmj-map>

若生成完整样式,组件会读取 metadata["mmj:anchors"].accent, 因此即使不写 accent 属性,标记、聚合区域和自定义 POI 的颜色也会保持一致。

如何处理生成的内容

  • 内容归你所有。可以手动修改(本工具就是为此设计的)
  • 会保留 __TILES_URL__。若将其写死,就无法更改分发地址
  • 会保留 © OpenStreetMap contributors 署名。请勿删除后再分发(ODbL)
  • 会包含 mmj:generated: true。请勿移除(否则会与手工作品混在一起)

评论

支持 Markdown

第一次接触 MCP?

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

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