Spree Commerce: open-source B2B and marketplace ecommerce
Open-source B2B and marketplace ecommerce; new stores include an MCP server for AI agents.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Crystallize headless commerce tools for AI agents via Model Context Protocol
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
CRYSTALLIZE_TENANT_IDENTIFIER, CRYSTALLIZE_ACCESS_TOKEN_ID, CRYSTALLIZE_ACCESS_TOKEN_SECRET, CRYSTALLIZE_STATIC_AUTH_TOKEN, CRYSTALLIZE_ACCESS_MODEต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"crystallize": {
"command": "npx",
"args": [
"-y",
"@hayodev/crystallize-mcp"
],
"env": {
"CRYSTALLIZE_TENANT_IDENTIFIER": "ใส่ค่าของคุณ",
"CRYSTALLIZE_ACCESS_TOKEN_ID": "ใส่ค่าของคุณ",
"CRYSTALLIZE_ACCESS_TOKEN_SECRET": "ใส่ค่าของคุณ",
"CRYSTALLIZE_STATIC_AUTH_TOKEN": "ใส่ค่าของคุณ",
"CRYSTALLIZE_ACCESS_MODE": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add crystallize --env CRYSTALLIZE_TENANT_IDENTIFIER='ใส่ค่าของคุณ' --env CRYSTALLIZE_ACCESS_TOKEN_ID='ใส่ค่าของคุณ' --env CRYSTALLIZE_ACCESS_TOKEN_SECRET='ใส่ค่าของคุณ' --env CRYSTALLIZE_STATIC_AUTH_TOKEN='ใส่ค่าของคุณ' --env CRYSTALLIZE_ACCESS_MODE='ใส่ค่าของคุณ' -- npx -y @hayodev/crystallize-mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"crystallize": {
"command": "npx",
"args": [
"-y",
"@hayodev/crystallize-mcp"
],
"env": {
"CRYSTALLIZE_TENANT_IDENTIFIER": "ใส่ค่าของคุณ",
"CRYSTALLIZE_ACCESS_TOKEN_ID": "ใส่ค่าของคุณ",
"CRYSTALLIZE_ACCESS_TOKEN_SECRET": "ใส่ค่าของคุณ",
"CRYSTALLIZE_STATIC_AUTH_TOKEN": "ใส่ค่าของคุณ",
"CRYSTALLIZE_ACCESS_MODE": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"crystallize": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@hayodev/crystallize-mcp"
],
"env": {
"CRYSTALLIZE_TENANT_IDENTIFIER": "ใส่ค่าของคุณ",
"CRYSTALLIZE_ACCESS_TOKEN_ID": "ใส่ค่าของคุณ",
"CRYSTALLIZE_ACCESS_TOKEN_SECRET": "ใส่ค่าของคุณ",
"CRYSTALLIZE_STATIC_AUTH_TOKEN": "ใส่ค่าของคุณ",
"CRYSTALLIZE_ACCESS_MODE": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
CRYSTALLIZE_TENANT_IDENTIFIER envCRYSTALLIZE_ACCESS_TOKEN_ID envCRYSTALLIZE_ACCESS_TOKEN_SECRET envCRYSTALLIZE_STATIC_AUTH_TOKEN envCRYSTALLIZE_ACCESS_MODE envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 9 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub HayoDev ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.2.0) เข้า registry 7 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spree Commerce: open-source B2B and marketplace ecommerce, Stripe MCP, MCP Cn Commerce
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
Open-source B2B and marketplace ecommerce; new stores include an MCP server for AI agents.
server ทางการของ Stripe ให้ AI ดูและจัดการลูกค้า สินค้า การชำระเงิน และใบแจ้งหนี้ ต่อผ่านคลาวด์ของ Stripe และล็อกอินแบบ OAuth
8 read-only MCP platform entries; support is operation-specific; merchant live acceptance pending
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
MCP server for Crystallize headless commerce. Gives AI agents read and write access to your catalogue, products, shapes, orders, customers, and tenant config — with deep links back to the Crystallize UI, dry-run safety for mutations, and PII masking for customer data.
Works with Claude Code, Claude Desktop, Cursor, Windsurf, Copilot, and any MCP-compatible client.
The interactive wizard handles config, auth tokens, keychain storage, and PII mode in one step:
# Project-level — writes .mcp.json in the current directory (shared with your team)
npx @hayodev/crystallize-mcp --setup
claude mcp add (Claude Code) or writes Claude Desktop confignpx @hayodev/crystallize-mcp --setup --global
Standard MCP config (works in any client):
{
"mcpServers": { "crystallize": { "command": "npx", "args": ["-y", "@hayodev/crystallize-mcp@latest"], "env": { "CRYSTALLIZE_TENANT_IDENTIFIER": "your-tenant" } } } }
Add CRYSTALLIZE_ACCESS_TOKEN_ID and CRYSTALLIZE_ACCESS_TOKEN_SECRET to the env block for PIM tools (shapes, orders, customers). See Authentication.
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
Use --scope project to write to .mcp.json (shared with your team) or --scope user for personal use across all projects.
Claude Desktop
Add the standard config to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows).
Cursor
Add the standard config to your Cursor MCP settings (~/.cursor/mcp.json or the project-level .cursor/mcp.json).
VS Code / GitHub Copilot
Add the standard config to .vscode/mcp.json in your project root.
{
"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
Add the standard config to ~/.codeium/windsurf/mcp_config.json.
Gemini CLI
Add the standard config to ~/.gemini/settings.json.
JetBrains AI Assistant
Add the standard config to .junie/mcp.json in your project root.
Warp
Add the standard config to ~/.warp/mcp.json.
Raycast
Open "Install MCP Server" in Raycast and fill in:
npx-y @hayodev/crystallize-mcp@latestCRYSTALLIZE_TENANT_IDENTIFIER and your token varsOr copy the standard config JSON above before opening the command — Raycast will auto-fill the form.
From source (maintainers)
The --local flag is for developing crystallize-mcp itself. It writes .mcp.json pointing to the local build output — run this from the repo root only:
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/
Or point your MCP client directly at the built entry point:
{
"mcpServers": { "crystallize": { "command": "node", "args": ["/path/to/crystallize-mcp/build/src/bin/crystallize-mcp.js"], "env": { "CRYSTALLIZE_TENANT_IDENTIFIER": "your-tenant" } } } }
| Tool | Description |
|---|---|
browse_catalogue | Traverse the item tree by path |
get_item | Fetch an item by path or ID with full component data |
search_catalogue | Keyword search across all items |
get_product_variants | List variants with pricing and stock |
| Tool | Description |
|---|---|
list_discovery_shapes | List all shapes with their queryable fields |
browse_shape | Browse items of a shape with filters, pagination, and field selection |
get_shape_fields | Detailed field info for a specific shape |
| Tool | Description |
|---|---|
list_shapes | All shapes with component summaries |
get_shape | Full component definition for a shape |
get_tenant_info | Tenant configuration and available languages |
| Tool | Description |
|---|---|
list_orders | List orders for a customer with pagination |
get_order | Full order details — cart, payments, customer, totals |
| Tool | Description |
|---|---|
list_customers | Search and list customers with pagination |
get_customer | Full customer profile — addresses, meta, external references |
| Tool | Description |
|---|---|
create_item | Create a new item (product, document, or folder) with components |
update_component | Update a single component value — supports nested content chunks via dot notation (e.g. hero.title) |
Write tools require CRYSTALLIZE_ACCESS_MODE=write (or admin) and a token with write permissions.
Set CRYSTALLIZE_DRY_RUN=true to preview mutations without executing them. The response shows exactly what would change — the mutation payload, before/after values, and a deep link to the item:
"env": {
"CRYSTALLIZE_ACCESS_MODE": "write", "CRYSTALLIZE_DRY_RUN": "true" }
Create an item:
"Create a new blog post under /blog using the article shape with title 'Getting Started'"
Update a top-level component:
"Find the item at /products/summer-collection and update its description to 'New summer arrivals'"
Update a component inside a content chunk:
"Get the item at /articles/my-post, then update hero.title to 'Updated Headline' and give me the deep link to review the draft"
Update with change summary:
"Get the item at /articles/guides/my-guide, update its title component to 'New Guide Title', give me the deep link, and show a table of which fields in the chunk changed vs remained unchanged with before/after values"
The agent will update the target component in draft only, preserve all sibling components in the chunk, and return a summary like:
| Component | Status | Before | After |
|---|---|---|---|
| title | ✏️ Updated | Old Guide Title | New Guide Title |
| image | Unchanged | _(existing image)_ | _(existing image)_ |
| description | Unchanged | _(existing text)_ | _(existing text)_ |
No publishing happens — you review the change in the Crystallize UI via the deep link and publish when ready.
Catalogue and Discovery tools work without auth — just set CRYSTALLIZE_TENANT_IDENTIFIER.
For PIM tools (shapes, tenant info, orders, customers), create an access token at: https://app.crystallize.com/{tenant}/en/settings/access-tokens
Note: Crystallize tokens inherit permissions from the user who created them. To restrict an agent to read-only access, generate the token under a user with a read-only role. See Crystallize Roles.
| Variable | Required | Description |
|---|---|---|
CRYSTALLIZE_TENANT_IDENTIFIER | Yes | Your tenant identifier from app.crystallize.com/{tenant} |
CRYSTALLIZE_ACCESS_TOKEN_ID | No | Access token ID for PIM API |
CRYSTALLIZE_ACCESS_TOKEN_SECRET | No | Access token secret (paired with token ID) |
CRYSTALLIZE_STATIC_AUTH_TOKEN | No | Static auth token (alternative to ID/secret pair) |
CRYSTALLIZE_ACCESS_MODE | No | read (default), write, or admin — controls which tools are registered |
CRYSTALLIZE_DRY_RUN | No | true to preview write operations without executing — see Write tools |
CRYSTALLIZE_PII_MODE | No | full (default), masked, or none — controls PII in customer/order responses |
CRYSTALLIZE_AUDIT_LOG | No | Path to write an audit log — ~ is expanded (e.g. ~/.crystallize-mcp/audit.log) |
By default all customer and order data is returned as-is (full). Set CRYSTALLIZE_PII_MODE to opt in to data minimisation:
| Mode | Behaviour |
|---|---|
full | Default — all fields returned unchanged |
masked | Emails → h***@example.com, phones → ***-1234, addresses → city + country only |
| none | Contact/PII fields stripped — names, emails, phones, addresses, meta
ตัดมาแค่ช่วงต้น อ่านต่อใน repo