Marigold について
Marigoldは、コーディングエージェントとレビュアー向けのローカル優先のHTML・SVG草稿レビュー環境です。CLIとローカルMCPサーバーで、アンカー付きコメント、直接編集、フィードバック返却、ライブリロードをネットワーク接続なしで利用できます。
主な機能
- 01HTML・SVG草稿を開く
- 02アンカー付きコメントと編集
- 03エージェントへのフィードバック送信
- 04変更された草稿のライブリロード
- 05ホスト版Marigoldへの草稿共有
活用シーン
- 01エージェント生成のウェブページをレビュー
- 02草稿にコメントしてフィードバックを返す
- 03コメント位置を保ったまま草稿を修正
MCP 対応
ローカルMCPサーバーは、MCPクライアントに草稿の作成・表示・更新・読み取り、フィードバック取得、コメント管理を提供します。stdioで動作し、レビュアーのフィードバックを待機できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://marigold.page/api/mcpclaude mcp add --transport http immuneeb-marigold https://marigold.page/api/mcp{"mcpServers":{"immuneeb-marigold":{"type":"http","url":"https://marigold.page/api/mcp"}}}Cursor で開く{"servers":{"immuneeb-marigold":{"type":"http","url":"https://marigold.page/api/mcp"}}}VS Code で開く{"mcpServers":{"immuneeb-marigold":{"type":"http","url":"https://marigold.page/api/mcp"}}}{"mcpServers":{"immuneeb-marigold":{"serverUrl":"https://marigold.page/api/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
Marigold — ローカルの下書き(marigold-draft)
お使いのマシン上で、ミリ秒単位の Marigold レビューループを実現します。エージェントがリッチな HTML/SVG の下書きをファイルに書き込み、marigold-draft open がクラウド版 Marigold と同じコメント用シェルで表示します。ハイライトしてコメントし、その場で編集したら、エージェントにフィードバックを送信をクリックします。すると、ブロックされていた open --json 呼び出しがフィードバックを返し、エージェントがファイルを修正します。修正はタブにリアルタイムで反映されます。
Postgres、レンダートークン、OAuth、ネットワーク接続は不要です。バックグラウンドで起動しているデーモン(状態は ~/.marigold-local/server.json に保存)をすべての起動で再利用するため、リビジョンごとのコストはファイルへの書き込みだけです。コメントは下書きの隣にあるサイドカーファイル <file>.marigold.json に保存されます。ハンドオフイベントが発生する前に書き込まれるため、待機プロセスのクラッシュやデーモンの再起動後もフィードバックが保持されます。
本番環境と同じアンカリングエンジン(@marigold/core の決定論的な data-marigold-id 計装と resolveAnchor)を使うため、コメントはリビジョンをまたいで再アンカーされ、その場での編集はソースファイルに反映されます。また、クラウド版 Marigold に昇格した下書き(同じ HTML を使った create_doc)にも、同じ方法で計装が行われます。
インストール
npm i -g marigold-draft
marigold-draft agent-setup # wires up Claude Code (skill) + Claude Desktop (MCP)
または、このプロンプトをコーディングエージェントに渡してください。
npm i -g marigold-draftを使って Marigold をインストールし、 https://marigold.page/draft/setup.md を読んで、使えるように設定してください。
代わりにモノレポから実行する場合は、pnpm --filter marigold-draft build を実行し、packages/local/dist/cli.cjs を PATH にリンクしてください。
ループ(エージェントが実行する内容)
# 1. write draft.html (full document or fragment — fragments get a neutral wrapper)
marigold-draft open draft.html --json # opens the browser tab, BLOCKS
# 2. reviewer comments / edits in place / hits "Send feedback to agent"
# → the open call prints the review JSON (openComments with anchoredText,
# overallComment, per-comment replies) and exits
# 3. edit draft.html — the tab live-reloads, comments re-anchor
marigold-draft reply draft.html c1 "Bumped the chart to 34px"
marigold-draft resolve draft.html c1
# 4. next round (tab already connected, so no new browser tab):
marigold-draft open draft.html --json --no-browser
ブロッキングする open はバックグラウンドプロセスとして実行してください。プロセスの終了がフィードバック到着の合図です。--json を指定すると、標準出力をクリーンに保てます(ステータスは標準エラー出力に送られます)。.svg ファイルも使えます。ラッパーにインライン化されるため、すべての要素にコメントできます。
共有とホスト版 Marigold への移行
ローカルの下書きがお使いのマシンから外に出ることはありません。誰かに送る、スマートフォンで開く、あるいは単に保存しておきたい場合は、ホスト版 Marigold に移行してください。移行には2つの段階があります。
marigold-draft share draft.html # prints a share link + a claim link
marigold-draft share draft.html --title "Q3 Review" --origin http://localhost:3000
- アカウント不要の即時共有リンク。
shareは下書きをホスト版 Marigold のクイックドアに POST し、?k=自体がアクセス権限となる URL を出力します。このリンクを持っている人なら誰でも閲覧してコメントできます。リンクを知っている人だけがアクセスでき(一覧には掲載されません)、最後の書き込みから約30日後に期限切れになります。shareは所有権取得用リンクも出力します。 - 下書きの保存とアクセス制御。 所有権取得用リンクを開いてサインインすると、ドキュメントが自分のアカウントに移動します(クイックリンクは無効になります)。その後、閲覧者/コメント投稿者/編集者のロールを指定してメールで共有でき、バージョン履歴も保存されます。所有権を取得したドキュメントでエージェントを継続して作業させる場合は、エージェントの接続先をホスト版の MCP エンドポイント
https://marigold.page/api/mcpにしてください。
share は、タイトルをファイルの <title>(またはファイル名)に設定し、https://marigold.page に POST します。--origin または MARIGOLD_ORIGIN で変更できます。ローカルのコメントはローカルのサイドカーファイルに保持されます。ホスト版のコピーでは同じアンカリングエンジンを使って新しいスレッドが始まるため、コメントはローカルと同様にリビジョンをまたいで再アンカーされます。
CLI
open <file> serve + open in browser, wait for feedback
--json --no-browser --no-wait --timeout <s> --title <t>
listen [path…] stream submitted rounds as JSON lines; path args (files
and/or dirs) scope it to those drafts — scope it when
parallel agent sessions run at once (no paths = all drafts);
reconnects forever — run under a persistent monitor
share <file> publish to hosted Marigold + print a share link and claim link
--title <t> --origin <url> (default marigold.page)
comments <file> list threads [--json]
reply <file> <id> <text…> reply to a comment (badged AI in the UI)
resolve|reopen <file> <id> set comment status
start | status | stop manage the background daemon (default port 4747,
override with MARIGOLD_LOCAL_PORT or --port)
mcp stdio MCP server for chat clients (see below)
MCP サーバー(Claude Desktop とその他のチャットクライアント)
marigold-draft mcp は、シェルコマンドを実行できないクライアント向けに、stdio 経由で MCP を提供します。ツール:create_draft(HTML を受け取り、~/.marigold-local/drafts/ の下にファイルを書き込み、ブラウザーを開く)、open_draft、update_draft(タブがリアルタイムで再読み込みされる)、get_feedback(waitSeconds を指定すると、レビュアーが「エージェントにフィードバックを送信」をクリックするまで待機)、reply_to_comment、resolve_comment、read_draft。
Claude Desktop の登録先(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"marigold-draft": {
"command": "/opt/homebrew/bin/node",
"args": ["<repo>/packages/local/dist/cli.cjs", "mcp"]
}
}
}
Claude Code では、marigold-draft スキル(~/.claude/skills/marigold-draft/)が CLI のループをエージェントに教えます。チャットで「marigold draft を起動して」と言えば、一連の処理を実行します。(バイナリは marigold-local と marigold-draft のどちらの名前でも応答します。)
その他のコーディングアシスタント
MCP に対応したアシスタントなら、どれでもこのループを実行できます。サーバーは
{ command: "marigold-draft", args: ["mcp"] } として起動します。また、シェルコマンドを実行できるアシスタントなら、MCP を介さず CLI を直接使用できます(ループを認識できるよう、agent-setup が出力する
AGENTS.md のスニペットを追加してください)。アシスタントごとの登録方法:
- Codex CLI —
~/.codex/config.toml:[mcp_servers.marigold-draft]にcommand = "marigold-draft"とargs = ["mcp"]を設定します(またはcodex mcp add marigold-draft -- marigold-draft mcp)。AGENTS.mdを読み込みます。 - opencode —
opencode.json→"mcp":{ "marigold-draft": { "type": "local", "command": ["marigold-draft", "mcp"], "enabled": true } }。AGENTS.mdを読み込みます。 - Google Antigravity — Settings → Customizations → Open MCP Config
(
~/.gemini/config/mcp_config.json) →"mcpServers":{ "marigold-draft": { "command": "marigold-draft", "args": ["mcp"] } }。AGENTS.md/.agents/rules/*.mdを読み込みます。
GUI アプリはシェルの PATH を引き継がない場合があります。サーバーが起動しない場合は、
which marigold-draft で取得した絶対パスを使用してください。コピーしてすぐ使える完全なスニペットと
AGENTS.md のブロックはこちらです:
/draft/setup.md。
レジリエンス
デーモンは docId→path レジストリ(~/.marigold-local/docs.json)を永続化し、
必要に応じてドキュメントを遅延して再オープンするため、デーモンを再起動してもブラウザーのタブは維持されます。デーモンに接続できない間はシェルにインラインバナーが表示され、自動的に再接続します。コメントはサイドカーに保存されるため、デーモンが停止しても失われません。
仕組み
- デーモン(
src/server.ts):127.0.0.1 上の node:http です。開いたファイルを監視し、変更時に再インストルメントを行い、すべてのコメントのアンカーを再設定します(marigoldId → css → textQuote、解決できないものは孤立状態にします)。バージョンを更新し、タブに SSE のreloadを送信します。 - シェル(
src/shell.ts):本番ビューアー(apps/web/.../viewer-client.tsx)をバニラ JavaScript に移植したものです。同じ postMessage プロトコル、sandbox="allow-scripts"iframe 内の同じアンカーエージェント、同じ marigold スタイルを使用します。フレームには本番レンダリングオリジンと同じ CSP が適用されるため、ローカルで動作するドラフトはクラウド上の Marigold でも同じように表示されます。 - 引き継ぎ:
GET /api/docs/:id/wait?since=<seq>でロングポーリングします。Send feedback はラウンドをサイドカーに保存してから、待機中の処理を再開します。sinceカーソルにより、送信が待機開始より先に行われる競合を防ぎます。 - インプレース編集(
applyInlineEdits)はソースファイルに直接書き込みます。フラグメントのドラフトはフラグメントに戻してラップを解除するため、ファイルはクリーンな状態に保たれます。
テスト
pnpm --filter @marigold/local test
テレメトリー
marigold-draft は、5 つの操作(draft.opened、
feedback.submitted、listen.started、share.cloud、agent-setup.run)について、匿名の利用回数を送信します。イベントごとのペイロード全体は次のとおりです。
{ "event": "draft.opened", "version": "0.9.0", "platform": "darwin", "nodeMajor": 22 }
引数、パス、ファイル名、ドキュメントの内容、ホスト名、ユーザー名、ロケール、ハードウェア情報は送信しません。また、クライアント側の識別子は一切ありません。お使いのマシンを識別するために永続化される情報はありません。おおよそのユニーク数は、リクエスト IP をサーバー側でソルト付きハッシュにして切り詰めた値から算出します(逆算はできず、生のアドレスも保存されません)。これは marigold.page のすべての匿名シグナルと同じ方針です。
次のいずれかの方法で無効にできます(どれか一つで無効になります)。
marigold-draft telemetry off(設定を永続化します。on/statusも使用できます)MARIGOLD_TELEMETRY=0DO_NOT_TRACK=1(console.dev の標準)- CI 環境では自動的にスキップされます
MARIGOLD_TELEMETRY_DEBUG=1 を設定すると、ペイロードを送信時にすべて stderr に出力します。送信は応答を待たずに行われ、上限は 1.5 秒です。コマンドが遅くなったり、ブロックされたり、失敗したりすることはありません。実装は src/telemetry.ts にあります。監査してください。MARIGOLD_ORIGIN をセルフホストしたインスタンスに設定すると、送信先は当社ではなくそのインスタンスになります。
ライセンス
MIT — 永久に無料です。LICENSE を参照してください。ソースは GitHub にあります:
github.com/immuneeb/marigold-collab
(ディレクトリ packages/local)。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。