mcpField
M
mmj-palette

mmj-palette

Local
github.com/meta-taroMedia & Design0Updated 1d ago

About mmj-palette

mmj-palette is a command-line tool for creating MapLibre palettes or complete style JSON from four anchor colors. It is intended for map adopters who want to define their own colors, with explicit role overrides and generated-style metadata.

Key features

  1. 01Derive colors for 24 map roles
  2. 02Build a complete style JSON
  3. 03Override individual role colors
  4. 04Mix colors in Oklab
  5. 05Preserve generated-style metadata

Use cases

  1. 01Create a custom palette from four anchor colors
  2. 02Export a named style based on a preset
  3. 03Adjust selected road colors manually

MCP support

It provides stdio MCP tools to list color roles and base styles, derive a palette, and build a style JSON.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"meta-taro-mmj-palette": {
"command": "npx",
"args": [
"-y",
"@mmj-map/palette"
]
}
}
}
Run commandnpx -y @mmj-map/palette

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@mmj-map/palette0.1.0

Tools

4

Saved tool list · updated 2w ago

This tool takes no parameters.

Details

From the project README

@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-casingaccent を文字色側へ寄せた色
green--green、無ければ陸から導く

混ぜるのは Oklab(sRGB のまま混ぜると階調が詰まり、色がくすむ)。依存は足していません(式だけ)。

好みで変わるところは式にしていない

明るい土台で道路を白抜きにしたい(地色より明るくする)ことがありますが、 ここでは地色から文字色へ向かって濃くしています。白抜きにしたいときは上書きしてください。

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

MCP の口

エージェントから直接作れます。

pnpm palette:mcp

Claude Code への登録(.mcp.json / claude mcp add):

{
  "mcpServers": {
    "mmj-palette": {
      "command": "pnpm",
      "args": ["palette:mcp"],
      "cwd": "<このリポジトリのパス>"
    }
  }
}
道具何をするか
mmj_list_roles24 役割と、それぞれが地図の何を変えるかを返す
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 1 本には釣り合いません(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 が入ります。外さないでください(手書きの作品と混ざります)

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.