Crystallize MCP について
Crystallize MCP は、Crystallize のヘッドレスコマースデータを AI エージェントから読み書きする MCP サーバーです。変更のドライラン、顧客データのマスキング、Crystallize UI へのリンクを備えています。
主な機能
- 01カタログの閲覧と検索
- 02商品バリエーションと在庫の確認
- 03シェイプ、注文、顧客の参照
- 04アイテム作成とコンポーネント更新
- 05変更実行前のプレビュー
- 06顧客・注文データのマスキング
活用シーン
- 01商品や価格、在庫の検索
- 02顧客、注文、テナント情報の確認
- 03下書きコンテンツの作成・編集
- 04変更内容を確認して UI で公開
MCP 対応
MCP サーバーとして、互換クライアントに Crystallize のカタログ、シェイプ、注文、顧客、コンテンツ操作を公開します。書き込みツールはドライランに対応し、応答には UI へのリンクが含まれます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @hayodev/crystallize-mcpCRYSTALLIZE_TENANT_IDENTIFIERYour Crystallize tenant identifier (e.g. 'my-store'). Find it in your Crystallize dashboard URL: app.crystallize.com/{tenant}CRYSTALLIZE_ACCESS_TOKEN_IDシークレットAccess Token ID for authenticated API access. Create one at Settings > Access Tokens in your Crystallize dashboard. Optional — public catalogue and Discovery API work without auth.CRYSTALLIZE_ACCESS_TOKEN_SECRETシークレットAccess Token Secret (paired with Access Token ID).CRYSTALLIZE_STATIC_AUTH_TOKENシークレットStatic auth token (alternative to token ID/secret pair). Read-only.CRYSTALLIZE_ACCESS_MODEControls which tools are available: 'read' (default, safe), 'write' (can create/update items), 'admin' (full access including webhooks).ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Crystallize MCP
Crystallize のヘッドレスコマース向け MCP サーバーです。AI エージェントがカタログ、商品、シェイプ、注文、顧客、テナント設定に対して読み取りと書き込みを行えます。Crystallize UI へのディープリンク、変更操作のドライランによる安全性、顧客データの PII マスキングを備えています。
Claude Code、Claude Desktop、Cursor、Windsurf、Copilot、および MCP 互換のすべてのクライアントで動作します。
はじめに
セットアップウィザード
対話型ウィザードで、設定、認証トークン、キーチェーンへの保存、PII モードをまとめて設定できます。
# Project-level — writes .mcp.json in the current directory (shared with your team)
npx @hayodev/crystallize-mcp --setup
# Global — registers via `claude mcp add` (Claude Code) or writes Claude Desktop config
npx @hayodev/crystallize-mcp --setup --global
手動設定
標準の MCP 設定です(どのクライアントでも動作します)。
{
"mcpServers": {
"crystallize": {
"command": "npx",
"args": ["-y", "@hayodev/crystallize-mcp@latest"],
"env": {
"CRYSTALLIZE_TENANT_IDENTIFIER": "your-tenant"
}
}
}
}
PIM ツール(シェイプ、注文、顧客)を使用するには、CRYSTALLIZE_ACCESS_TOKEN_ID と CRYSTALLIZE_ACCESS_TOKEN_SECRET を env ブロックに追加してください。認証を参照してください。
Claude Code(CLI)
claude mcp add crystallize \
-e CRYSTALLIZE_TENANT_IDENTIFIER=your-tenant \
-e CRYSTALLIZE_ACCESS_TOKEN_ID=your-token-id \
-e CRYSTALLIZE_ACCESS_TOKEN_SECRET=your-token-secret \
-- npx -y @hayodev/crystallize-mcp@latest
--scope project を使うと .mcp.json に書き込まれ、チームで共有できます。--scope user を使うと、すべてのプロジェクトで個人用に使用できます。
Claude Desktop
標準設定を ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)に追加してください。
Cursor
Cursor の MCP 設定(~/.cursor/mcp.json またはプロジェクトレベルの .cursor/mcp.json)に標準設定を追加してください。
VS Code / GitHub Copilot
プロジェクトのルートにある .vscode/mcp.json に標準設定を追加してください。
{
"servers": {
"crystallize": {
"command": "npx",
"args": ["-y", "@hayodev/crystallize-mcp@latest"],
"env": {
"CRYSTALLIZE_TENANT_IDENTIFIER": "your-tenant",
"CRYSTALLIZE_ACCESS_TOKEN_ID": "your-token-id",
"CRYSTALLIZE_ACCESS_TOKEN_SECRET": "your-token-secret"
}
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json に標準設定を追加してください。
Gemini CLI
~/.gemini/settings.json に標準設定を追加してください。
JetBrains AI Assistant
プロジェクトのルートにある .junie/mcp.json に標準設定を追加してください。
Warp
~/.warp/mcp.json に標準設定を追加してください。
Raycast
Raycast で「Install MCP Server」を開き、次の項目を入力してください。
- コマンド:
npx - 引数:
-y @hayodev/crystallize-mcp@latest - 環境変数:
CRYSTALLIZE_TENANT_IDENTIFIERとトークン変数を追加
または、コマンドを開く前に上記の標準設定 JSON をコピーしてください。Raycast がフォームに自動入力します。
ソースから実行(メンテナー向け)
--local フラグは crystallize-mcp 自体の開発用です。ローカルのビルド出力を指す .mcp.json を書き込みます。リポジトリのルートからのみ実行してください。
git clone https://github.com/HayoDev/crystallize-mcp.git
cd crystallize-mcp
npm install && npm run build
npx . --setup --local # writes .mcp.json pointing to ./build/
または、MCP クライアントからビルド済みのエントリーポイントを直接指定してください。
{
"mcpServers": {
"crystallize": {
"command": "node",
"args": ["/path/to/crystallize-mcp/build/src/bin/crystallize-mcp.js"],
"env": {
"CRYSTALLIZE_TENANT_IDENTIFIER": "your-tenant"
}
}
}
}
ツール(16)
カタログ(4 ツール)
| ツール | 説明 |
|---|---|
browse_catalogue | パスを指定してアイテムツリーをたどる |
get_item | パスまたは ID を指定して、全コンポーネントデータを含むアイテムを取得する |
search_catalogue | すべてのアイテムを対象にキーワード検索する |
get_product_variants | 価格と在庫を含むバリエーションの一覧を取得する |
ディスカバリー(3 つのツール)
| ツール | 説明 |
|---|---|
list_discovery_shapes | クエリ可能なフィールドとともにすべてのシェイプを一覧表示します |
browse_shape | フィルター、ページネーション、フィールド選択を使ってシェイプのアイテムを閲覧します |
get_shape_fields | 特定のシェイプの詳細なフィールド情報を取得します |
シェイプとテナント(3 つのツール、認証が必要)
| ツール | 説明 |
|---|---|
list_shapes | コンポーネントの概要とともにすべてのシェイプを取得します |
get_shape | シェイプのコンポーネント定義全体を取得します |
get_tenant_info | テナントの設定と利用可能な言語を取得します |
注文(2 つのツール、認証が必要)
| ツール | 説明 |
|---|---|
list_orders | ページネーションを使って顧客の注文を一覧表示します |
get_order | カート、支払い、顧客、合計金額など、注文の詳細をすべて取得します |
顧客(2 つのツール、認証が必要)
| ツール | 説明 |
|---|---|
list_customers | ページネーションを使って顧客を検索し、一覧表示します |
get_customer | 住所、メタ情報、外部参照を含む顧客プロフィール全体を取得します |
コンテンツ(2 つのツール、認証と書き込みモードが必要)
| ツール | 説明 |
|---|---|
create_item | コンポーネントを含む新しいアイテム(商品、ドキュメント、またはフォルダー)を作成します |
update_component | 単一のコンポーネント値を更新します — ドット記法(例:hero.title)によるネストされたコンテンツチャンクに対応しています |
書き込みツール
書き込みツールを使用するには、CRYSTALLIZE_ACCESS_MODE=write(または admin)と、書き込み権限のあるトークンが必要です。
ドライランモード
CRYSTALLIZE_DRY_RUN=true を設定すると、変更を実行せずにプレビューできます。レスポンスには、変更される内容(変更ペイロード、変更前後の値、アイテムへのディープリンク)が正確に表示されます。
"env": {
"CRYSTALLIZE_ACCESS_MODE": "write",
"CRYSTALLIZE_DRY_RUN": "true"
}
プロンプトの例
アイテムを作成する:
「
articleシェイプを使って、タイトルを 'Getting Started' とする新しいブログ記事を /blog に作成してください」
トップレベルのコンポーネントを更新する:
「/products/summer-collection にあるアイテムを見つけて、説明を 'New summer arrivals' に更新してください」
コンテンツチャンク内のコンポーネントを更新する:
「/articles/my-post のアイテムを取得してから、hero.title を 'Updated Headline' に更新し、下書きを確認するためのディープリンクを教えてください」
変更の概要を含めて更新する:
「/articles/guides/my-guide のアイテムを取得し、タイトルコンポーネントを 'New Guide Title' に更新して、ディープリンクを教えてください。また、チャンク内のどのフィールドが変更され、どれが変更されなかったかを、変更前後の値とともに表で示してください」
エージェントは対象のコンポーネントを下書きのみで更新し、チャンク内のほかのすべてのコンポーネントを保持したうえで、次のような概要を返します。
| コンポーネント | ステータス | 変更前 | 変更後 |
|---|---|---|---|
| title | ✏️ 更新済み | Old Guide Title | New Guide Title |
| image | 変更なし | (既存の画像) | (既存の画像) |
| description | 変更なし | (既存のテキスト) | (既存のテキスト) |
公開は行われません。ディープリンクから Crystallize UI で変更内容を確認し、準備ができたら公開してください。
認証
カタログおよびディスカバリーツールは認証なしで動作します。CRYSTALLIZE_TENANT_IDENTIFIER を設定するだけです。
PIM ツール(シェイプ、テナント情報、注文、顧客)を使用するには、次の場所でアクセストークンを作成してください:
https://app.crystallize.com/{tenant}/en/settings/access-tokens
注: Crystallize トークンは、作成者のユーザーから権限を引き継ぎます。エージェントのアクセスを読み取り専用に制限するには、読み取り専用ロールを持つユーザーでトークンを生成してください。Crystallize のロールをご覧ください。
環境変数
| 変数 | 必須 | 説明 |
|---|---|---|
CRYSTALLIZE_TENANT_IDENTIFIER | はい | app.crystallize.com/{tenant} にあるテナント識別子 |
CRYSTALLIZE_ACCESS_TOKEN_ID | いいえ | PIM API 用のアクセストークン ID |
CRYSTALLIZE_ACCESS_TOKEN_SECRET | いいえ | アクセストークンシークレット(トークン ID と組み合わせて使用) |
CRYSTALLIZE_STATIC_AUTH_TOKEN | いいえ | 静的認証トークン(ID/シークレットの組み合わせの代替) |
CRYSTALLIZE_ACCESS_MODE | いいえ | read(デフォルト)、write、または admin — 登録するツールを制御します |
CRYSTALLIZE_DRY_RUN | いいえ | true にすると、書き込み操作を実行せずにプレビューします — 書き込みツールをご覧ください |
CRYSTALLIZE_PII_MODE | いいえ | full(デフォルト)、masked、または none — 顧客/注文レスポンスに含める PII を制御します |
CRYSTALLIZE_AUDIT_LOG | いいえ | 監査ログの書き込み先パス — ~ は展開されます(例:~/.crystallize-mcp/audit.log) |
PII モード(オプトイン)
デフォルトでは、顧客データと注文データはすべてそのまま返されます(full)。データ最小化をオプトインするには、CRYSTALLIZE_PII_MODE を設定します。
| モード | 動作 |
|---|---|
full | デフォルト — すべてのフィールドを変更せずに返します |
masked | メールアドレス → h***@example.com、電話番号 → ***-1234、住所 → 市区町村+国のみ |
none | 連絡先/PII フィールドを削除します — 名前、メールアドレス、電話番号、住所、メタデータ、外部参照を削除します。注文品目、支払い方法、合計金額などの非連絡先データは含まれる場合があります。 |
list_customers、get_customer、list_orders、get_order に適用されます。カタログツールやシェイプツールには影響しません。
実際の顧客データを扱うチーム、GDPR 第 25 条への準拠(設計段階でのデータ最小化)、または AI が業務の遂行に生の連絡先情報を必要としない環境に適しています。一般的な使い方として、本番環境では masked、開発環境では full を設定します。
監査ログ(オプトイン)
構造化ログで各ツール呼び出しを記録するには、CRYSTALLIZE_AUDIT_LOG に絶対ファイルパスを設定します。
{
"ts": "2026-04-03T14:38:41Z",
"tool": "list_customers",
"params": { "first": 10 },
"result": "ok",
"tenant": "my-store"
}
呼び出しごとに JSON を 1 行記録します。タイムスタンプ、ツール名、パラメーター、結果(ok/error)、テナントが含まれます。書き込みツールでは、監査証跡用に変更メタデータ(変更前/変更後の状態)も記録します。
Note: パラメーターはそのまま記録されるため、PII が含まれる場合があります。たとえば、
searchTermが[email protected]の場合や、customerIdentifierが含まれる場合です。監査ログファイルは機密データとして扱い、適切にアクセスを制限してください。パラメーターのスクラブ処理はロードマップにありますが、まだ実装されていません。
ログアグリゲーター(Datadog、CloudWatch、Splunk)に簡単にパイプできます。ただし、パイプラインで適切なアクセス制御を適用してください。
キーチェーンストレージ(任意)
セットアップウィザード(npx @hayodev/crystallize-mcp --setup)では、トークンを OS のキーチェーン(macOS Keychain、Windows Credential Manager、または Linux の libsecret)に保存できるため、設定ファイルにプレーンテキストで記載されることはありません。MCP サーバーは起動時にキーチェーンから認証情報を自動的に解決するため、追加の設定は不要です。
次のような場合に便利です。
.mcp.jsonを git にコミットする場合 — キーチェーンに保存することで、トークンをリポジトリに含めずに済みます- シークレットを設定ファイルにプレーンテキストで記載したくない場合 — 設定に必要なのは
CRYSTALLIZE_TENANT_IDENTIFIERのみです
Claude Code で --setup --global を使用する場合、この機能が適用されるのは、キーチェーンストレージが利用可能で、かつ使用を選択した場合のみです。その場合、ウィザードはシークレット以外の環境変数のみを指定して claude mcp add を実行し、トークンは実行時にキーチェーンから読み取られるため、Claude Code の設定には記載されません。キーチェーンストレージが利用できない場合、または使用しないことを選択した場合、ウィザードはトークンの環境変数を claude mcp add に渡し、Claude Code がそれらをプレーンテキストで保存する可能性があります。
アクセスモード
CRYSTALLIZE_ACCESS_MODE は、起動時に MCP サーバーが登録するツールを制御します。
read(デフォルト)— 読み取り専用ツールのみwrite— コンテンツの作成およびコンポーネントの更新を含みます(ドライランに対応)admin— シェイプの変更やテナント設定など、すべてのアクセスを含みます
ディープリンク
すべてのレスポンスには、Crystallize UI へのクリック可能なリンクが含まれます。
- アイテム →
app.crystallize.com/@{tenant}/{language}/catalogue/{type}/{itemId} - シェイプ →
app.crystallize.com/@{tenant}/{language}/settings/shapes/{identifier} - 注文 →
app.crystallize.com/@{tenant}/{language}/orders/{orderId}
言語部分には、サーバー起動時に読み込まれるテナントのデフォルト言語が自動的に設定されます。設定は不要です。language パラメーターを受け取るツール(カタログ、検索)では、API 呼び出しと生成されるリンクの両方に、指定された言語が使用されます。
開発
npm install
npm run build
npm run dev # build + start
npm run lint # oxlint
npm run format # oxlint --fix + oxfmt
npm run typecheck # tsc --noEmit
npm run test # build + node --test
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。