关于 Crystallize MCP
Crystallize MCP 是面向 AI Agent 的 Crystallize 无头商务 MCP 服务,可读写商品目录、产品、订单、客户及租户配置。它提供变更预览、客户数据脱敏和返回 Crystallize UI 的深层链接。
主要功能
- 01读取和搜索商品目录
- 02查询产品变体及库存
- 03查看形状、订单和客户
- 04创建条目并更新组件
- 05写入前预览变更
- 06客户与订单数据脱敏
适用场景
- 01检索商品及其价格库存
- 02查询客户订单和租户信息
- 03在草稿中创建或修改内容
- 04审查变更并在 UI 中发布
MCP 相关
该项目是 MCP 服务,向兼容客户端提供 Crystallize 目录、形状、订单、客户和内容操作工具。写入工具支持 dry-run,并在响应中提供 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 Agent 提供对目录、产品、形状、订单、客户和租户配置的读写权限,并支持跳转回 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”并填写:
- Command:
npx - Arguments:
-y @hayodev/crystallize-mcp@latest - Environment:添加
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 个工具)
| Tool | Description |
|---|---|
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 形状,在 /blog 下创建一篇标题为 ‘Getting Started’ 的新博客文章”
更新顶层组件:
“找到 /products/summer-collection 中的项目,并将其描述更新为 ‘New summer arrivals’”
更新内容块中的组件:
“获取 /articles/my-post 中的项目,然后将 hero.title 更新为 ‘Updated Headline’,并提供用于查看草稿的深层链接”
附带变更摘要进行更新:
“获取 /articles/guides/my-guide 中的项目,将其 title 组件更新为 ‘New Guide Title’,提供深层链接,并用表格展示内容块中哪些字段发生了变更、哪些保持不变,以及变更前后的值”
Agent 只会更新目标组件的草稿,保留内容块中的所有同级组件,并返回类似以下摘要:
| 组件 | 状态 | 变更前 | 变更后 |
|---|---|---|---|
| title | ✏️ 已更新 | Old Guide Title | New Guide Title |
| image | 未变更 | (现有图片) | (现有图片) |
| description | 未变更 | (现有文本) | (现有文本) |
不会发布任何内容——你可以通过深层链接在 Crystallize 界面中查看变更,并在准备就绪后发布。
身份验证
目录和发现工具无需身份验证,只需设置 CRYSTALLIZE_TENANT_IDENTIFIER。
对于 PIM 工具(类型、租户信息、订单、客户),请在以下位置创建访问令牌:
https://app.crystallize.com/{tenant}/en/settings/access-tokens
注意: Crystallize 令牌继承创建者的权限。如需将 Agent 限制为只读访问,请使用具有只读角色的用户生成令牌。请参阅 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 字段 — 移除姓名、电子邮件、电话、地址、meta 和外部引用。非联系信息数据(订单项、付款类型、总额)仍可能存在。 |
适用于处理真实客户数据的团队、需遵守 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,包含时间戳、工具名称、参数、结果(ok/error)和租户。写入工具还会记录变更元数据(变更前后的状态),用于审计追踪。
**注意:**参数会原样记录,可能包含个人身份信息(PII),例如值为
[email protected]的searchTerm或customerIdentifier。请将审计日志文件视为敏感数据,并采取相应措施限制访问。参数脱敏功能已列入路线图,但尚未实现。
可轻松将日志传输至日志聚合器(Datadog、CloudWatch、Splunk),但请确保你的管道对文件实施了适当的访问控制。
钥匙串存储(可选)
设置向导(npx @hayodev/crystallize-mcp --setup)可以将令牌存储在操作系统钥匙串(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 参数的工具(catalogue、search)会在 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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。