mmj-palette について
mmj-paletteは、4色の基準色からMapLibreの配色やスタイルJSONを作るコマンドラインツールです。地図の配色を自分で定めたい導入者向けで、役割ごとの色の上書きや生成スタイルの識別に対応します。
主な機能
- 0124種類の地図役割の配色生成
- 02スタイルJSON全体の作成
- 03個別役割の色の上書き
- 04Oklabによる色の混合
- 05生成スタイルのメタデータ保持
活用シーン
- 014色の基準色から独自配色を作成
- 02ベーススタイルをもとに名前付きスタイルを出力
- 03道路の色を個別に手動調整
MCP 対応
stdioのMCPツールを提供し、色の役割やベーススタイルの一覧、配色の導出、スタイルJSONの作成に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
プロジェクトの 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-casing | accent を文字色側へ寄せた色 |
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_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 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が入ります。外さないでください(手書きの作品と混ざります)
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。