webcake-storefront-mcp 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +126 -1091
- package/README.vi.md +200 -0
- package/dist/index.js +4 -8
- package/dist/install.js +4 -3
- package/dist/server.js +1 -1
- package/package.json +11 -1
package/README.vi.md
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
# 🏪 WebCake Storefront MCP
|
|
2
|
+
|
|
3
|
+
[English](./README.md) · **Tiếng Việt**
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/webcake-storefront-mcp)
|
|
6
|
+
[](https://www.npmjs.com/package/webcake-storefront-mcp)
|
|
7
|
+
[](https://github.com/vuluu2k/webcake-storefront-mcp/stargazers)
|
|
8
|
+
[](https://modelcontextprotocol.io)
|
|
9
|
+
|
|
10
|
+
> **Mô tả trang bằng lời — AI tự dựng, tự kiểm tra, rồi xuất bản thẳng lên storefront WebCake của bạn.**
|
|
11
|
+
|
|
12
|
+
> ⭐ **Nếu nó giúp bạn đỡ một buổi chiều kéo-thả, [tặng một sao nhé](https://github.com/vuluu2k/webcake-storefront-mcp) — mỗi sao giúp dự án một người làm này sống tiếp.**
|
|
13
|
+
|
|
14
|
+
> *"Dựng trang cho quán cà phê của tôi — hero kèm nút Mua ngay, lưới sản phẩm và form đặt hàng. Lưu rồi xuất bản."*
|
|
15
|
+
|
|
16
|
+
…và một trang **chỉnh sửa được** thật sự xuất hiện trên site WebCake/StoreCake của bạn. Không kéo-thả, không học schema, không tự viết JSON.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 🧩 Hoạt động thế nào
|
|
21
|
+
|
|
22
|
+
Server này là **cầu nối** giữa trợ lý AI và storefront của bạn. AI không *đoán* trang trông ra sao —
|
|
23
|
+
nó hỏi MCP này, nơi nắm toàn bộ mô hình component BuilderX, kiểm tra kết quả, rồi lưu lại.
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
Bạn Trợ lý AI webcake-storefront MCP WebCake / StoreCake
|
|
27
|
+
┌──────┐ prompt ┌────────────┐ tool ┌───────────────────────┐ API ┌──────────┐
|
|
28
|
+
│ ý │ ───────► │ Claude / │ ─────►│ • nắm mô hình │ ───► │ trang │
|
|
29
|
+
│ tưởng│ │ Cursor / │ │ component BuilderX │ │ thật, │
|
|
30
|
+
│ │ ◄─────── │ Windsurf │ ◄─────│ • dựng + kiểm tra │ ◄─── │ sửa được │
|
|
31
|
+
└──────┘ link live └────────────┘ kết quả│ • lưu + xuất bản │ │ trên site│
|
|
32
|
+
└───────────────────────┘ └──────────┘
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
1. **Bạn yêu cầu** bằng lời — mục tiêu, thương hiệu, các section, sản phẩm, trường form.
|
|
36
|
+
2. **AI học mô hình** từ MCP: catalog element, layout dạng lưới CSS, các breakpoint — để dựng trang *thật*, không phải đoán.
|
|
37
|
+
3. **AI ráp + kiểm tra** nguồn trang `{ sections: [...] }`. `validate_page` bắt id trùng, lưới hỏng, form thiếu tên trường **trước khi** lưu.
|
|
38
|
+
4. **AI lưu** vào site — xem trước (dry-run) trước, rồi mới thật — và `publish_site` đưa lên live.
|
|
39
|
+
5. **Bạn nhận link preview** — mở ra, chỉnh trong editor, xong.
|
|
40
|
+
|
|
41
|
+
### Vì sao đáng tin
|
|
42
|
+
|
|
43
|
+
| | |
|
|
44
|
+
|---|---|
|
|
45
|
+
| 📚 **Nắm mô hình thật** | Cung cấp 130+ loại component BuilderX (text, ảnh, nút, form, lưới sản phẩm, giỏ hàng, đếm ngược, gallery…) **port thẳng từ factory của builder** — đúng y hình dạng editor tạo ra. |
|
|
46
|
+
| ✅ **Kiểm tra trước khi lưu** | Kiểm tra cấu trúc (id duy nhất, lưới hợp lệ, form có tên trường, event trỏ đúng) để trang không bị hỏng khi lên. |
|
|
47
|
+
| 🛡️ **Mặc định an toàn** | Mọi ghi đều **dry-run trước** — xem thay đổi, chưa đụng site cho tới khi bạn xác nhận. |
|
|
48
|
+
| ✏️ **Sửa chính xác** | Yêu cầu đổi một chỗ ("đổi nút CTA sang xanh") thì nó chỉ sửa *đúng* element đó — mọi id, style, block khác giữ nguyên. |
|
|
49
|
+
|
|
50
|
+
> 💡 Bán **COD hay online**? Nó hiểu cả mô hình thương mại — sản phẩm, biến thể, giỏ hàng, đơn hàng, khuyến mãi, combo.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## ✨ Bạn có thể dựng gì
|
|
55
|
+
|
|
56
|
+
Một câu cho AI → một trang storefront **chỉnh sửa được** hoàn chỉnh:
|
|
57
|
+
|
|
58
|
+
| | Chỉ cần nói… |
|
|
59
|
+
|---|---|
|
|
60
|
+
| 🛒 **Trang sản phẩm** | *"Trang một sản phẩm cho serum dưỡng da — gallery, giá, form đặt hàng có giỏ."* |
|
|
61
|
+
| 🏬 **Trang chủ shop** | *"Trang chủ — banner hero, lưới sản phẩm nổi bật, form đăng ký nhận tin."* |
|
|
62
|
+
| ⚡ **Flash sale** | *"Trang flash-sale — đếm ngược lớn, lưới sản phẩm giảm giá, nút Mua dính."* |
|
|
63
|
+
| 🎟️ **Sự kiện / webinar** | *"Trang đăng ký — đếm ngược, agenda, form đăng ký."* |
|
|
64
|
+
| 💌 **Thiệp mời** | *"Thiệp cưới — tên, ngày, bản đồ, form RSVP."* |
|
|
65
|
+
| 📰 **Blog / nội dung** | *"Trang blog với bài nổi bật và ô đăng ký."* |
|
|
66
|
+
| 🔗 **Link-in-bio** | *"Link-in-bio — avatar, bio ngắn, 5 nút liên kết, mạng xã hội."* |
|
|
67
|
+
|
|
68
|
+
…rồi **"đổi CTA sang xanh"** hay **"thêm tính năng thứ 4"** và nó chỉ sửa đúng block đó.
|
|
69
|
+
|
|
70
|
+
> 🤖 Chạy trong **Claude Desktop, Claude Code, Cursor, Windsurf, VS Code**, hay client MCP bất kỳ — và **tool guide dựng trang + catalog element không cần gọi backend**, nên bạn khám phá mô hình được trước cả khi dán token.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Bên dưới capô
|
|
75
|
+
|
|
76
|
+
Một MCP (Model Context Protocol) server dạy AI mô hình component của **trình tạo trang storefront
|
|
77
|
+
WebCake/StoreCake (BuilderX)** và kết nối tới backend. AI tạo nguồn trang `{ sections: [...] }` đầy đủ;
|
|
78
|
+
`build_page` tạo + lưu trang, `publish_site` đưa cả site lên live.
|
|
79
|
+
|
|
80
|
+
Ngoài dựng trang, nó mở ra cả store thật: trang & custom code, sản phẩm, đơn hàng, collection,
|
|
81
|
+
bài blog, khuyến mãi, combo, theme, khách hàng, automation — **~101 tool** tổng cộng.
|
|
82
|
+
|
|
83
|
+
| Cách | Hợp cho | Auth |
|
|
84
|
+
|--------|----------|------|
|
|
85
|
+
| **npx (local)** — chạy trên máy bạn | Dùng cá nhân hằng ngày, toàn quyền | `login` qua trình duyệt, hoặc token + session |
|
|
86
|
+
| **Remote (`serve`)** — tự host Streamable-HTTP | Nhóm, hộp thoại claude.ai, chạy liên tục | link `?jwt=` / header `x-webcake-jwt` |
|
|
87
|
+
|
|
88
|
+
Các **tool dựng + catalog** (`get_build_guide`, `list_elements`, `get_element`, `new_section`,
|
|
89
|
+
`validate_page`) chạy **không cần cấu hình**; mọi thứ đọc/ghi site cần token + session.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 🚀 Kết nối
|
|
94
|
+
|
|
95
|
+
Chọn **một**. Cả hai đều trao cho AI toàn bộ bộ công cụ storefront. Không cần code.
|
|
96
|
+
|
|
97
|
+
### ① `npx` — chạy trên máy bạn (khuyên dùng)
|
|
98
|
+
|
|
99
|
+
Không cần cài, luôn mới nhất, cần Node.js 18+. **Một dòng** cấu hình IDE:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# Tương tác — chọn IDE và dán thông tin
|
|
103
|
+
npx -y webcake-storefront-mcp install
|
|
104
|
+
|
|
105
|
+
# Phi tương tác — cấu hình mọi IDE hỗ trợ cùng lúc
|
|
106
|
+
npx -y webcake-storefront-mcp install --ide all --token <token> --session <session-id>
|
|
107
|
+
|
|
108
|
+
# Gỡ khỏi mọi IDE
|
|
109
|
+
npx -y webcake-storefront-mcp uninstall
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Hỗ trợ: `claude-desktop`, `claude-code`, `cursor`, `windsurf`, `vscode`, hoặc `all`.
|
|
113
|
+
Chỉ muốn chạy server (cấu hình tay)? `npx -y webcake-storefront-mcp`.
|
|
114
|
+
|
|
115
|
+
### ② Đăng nhập trình duyệt — khỏi copy token
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
npx -y webcake-storefront-mcp login
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Mở **trang kết nối** của builder; bấm *Kết nối* là token + session được lưu cục bộ và tự nạp.
|
|
122
|
+
|
|
123
|
+
### Remote URL — tự host, mỗi client khỏi cài gì
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
npx -y webcake-storefront-mcp serve --port 8787
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Rồi trỏ client tới `http://<host>:8787/mcp?jwt=<TOKEN>` (client hỗ trợ header có thể gửi `x-webcake-jwt`;
|
|
130
|
+
chọn site trong chat bằng `switch_site`). Secret phía server như `PEXELS_API_KEY` đặt trên host — tiện cho VPS.
|
|
131
|
+
|
|
132
|
+
> ⚠️ Link `?jwt=` chứa token cá nhân — coi như mật khẩu, dùng **HTTPS** khi chạy thật.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## ⚙️ Cấu hình
|
|
137
|
+
|
|
138
|
+
Chỉ cần hai giá trị: **`WEBCAKE_TOKEN`** (JWT Bearer) và **`WEBCAKE_SESSION_ID`** (gửi qua `x-session-id`).
|
|
139
|
+
Bạn chọn **site lúc chạy** — chỉ cần hỏi trong chat, AI sẽ gọi `list_my_sites` / `switch_site` (lựa chọn được
|
|
140
|
+
lưu lại cho lần sau), nên không cần `WEBCAKE_SITE_ID`.
|
|
141
|
+
|
|
142
|
+
URL gốc lấy theo **môi trường có tên** — đặt `WEBCAKE_ENV` (hoặc `--env`) là khỏi gõ URL:
|
|
143
|
+
|
|
144
|
+
| `WEBCAKE_ENV` | api | app (login) | preview |
|
|
145
|
+
|---|---|---|---|
|
|
146
|
+
| `local` | `http://localhost:24679` | `http://localhost:5173` | `demo.localhost:24679/<siteId>` |
|
|
147
|
+
| `staging` | `https://api.staging.storecake.io` | `https://staging.webcake.io` | `staging2.webcake.me/<siteId>` |
|
|
148
|
+
| **`prod`** (mặc định) | `https://api.storefront.webcake.io` | `https://webcake.io` | `<site_slug>.webcake.me` |
|
|
149
|
+
|
|
150
|
+
Override bằng `WEBCAKE_API_URL` / `WEBCAKE_APP_URL`. Tuỳ chọn, đặt phía server:
|
|
151
|
+
`PEXELS_API_KEY` (search_images), `MONGO_URI` (cache alt ảnh). Token / session / site cũng có thể đặt
|
|
152
|
+
trong chat bằng `update_auth` và `switch_site` — lưu vào SQLite tại `~/.webcake-storefront-mcp/`.
|
|
153
|
+
|
|
154
|
+
<details>
|
|
155
|
+
<summary><b>Cách lấy token + session</b></summary>
|
|
156
|
+
|
|
157
|
+
1. Mở trình tạo trang WebCake và đăng nhập.
|
|
158
|
+
2. Mở DevTools (`F12`) → tab **Network** → bấm một request API.
|
|
159
|
+
3. Trong **Request Headers**: `Authorization: Bearer …` → `WEBCAKE_TOKEN`; `x-session-id: …` → `WEBCAKE_SESSION_ID`.
|
|
160
|
+
4. Không cần site id từ đầu — trong chat, chạy `list_my_sites` rồi `switch_site` để chọn site (được nhớ cho lần sau).
|
|
161
|
+
|
|
162
|
+
</details>
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## 🧰 Bộ công cụ tổng quan
|
|
167
|
+
|
|
168
|
+
~101 tool. Nhóm chủ lực **dựng trang**; phần còn lại đọc và sửa store thật của bạn.
|
|
169
|
+
|
|
170
|
+
| Nhóm | Tool | Cần |
|
|
171
|
+
|-------|-------|-------|
|
|
172
|
+
| **Dựng trang** | `get_build_guide` · `list_elements` · `get_element` · `new_element` · `new_section` · `new_page_skeleton` · `validate_page` · `build_page` · `add_section` | tool catalog: không cần |
|
|
173
|
+
| **Media & ingest** | `search_images` (Pexels) · `upload_image` (CDN) · `ingest_html` · `ingest_url` (dựng lại trang tham khảo) | — |
|
|
174
|
+
| **Trang & code** | `list_pages` · `get_page_source` · `search_page_elements` · `get_page_element` · `update_page_element(s)` · `create_page` · `update_page` · `update_page_source` · custom CSS/JS · nội dung trang · global section · `publish_site` | token + session |
|
|
175
|
+
| **Thương mại** | sản phẩm · đơn hàng · collection · khuyến mãi · combo | token + session |
|
|
176
|
+
| **Nội dung & store** | bài blog · theme / site style · app · khách hàng · `send_mail` | token + session |
|
|
177
|
+
| **Code backend** | CRUD HTTP-function (`get_http_function`, `edit_http_function`, `run_function`, `debug_function`…) | token + session |
|
|
178
|
+
| **Ngữ cảnh** | `get_current_context` · `list_my_sites` · `switch_site` · `update_auth` · `toggle_confirm_mode` | token |
|
|
179
|
+
|
|
180
|
+
Mọi thao tác ghi **mặc định `dry_run=true`** — xem trước thay đổi, chỉ đụng site khi bạn chạy lại với `dry_run=false`.
|
|
181
|
+
|
|
182
|
+
## 💬 Prompt gợi ý
|
|
183
|
+
|
|
184
|
+
> Dựng cho tôi một trang storefront WebCake cho <thương hiệu/ưu đãi>. Dùng MCP webcake-storefront:
|
|
185
|
+
> gọi `get_build_guide`, `list_elements`, dựng các section bằng `new_section`,
|
|
186
|
+
> `validate_page` đến khi không còn lỗi, rồi `build_page` (dry-run trước) và `publish_site`.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## ⭐ Thích ý tưởng? Tặng một sao
|
|
191
|
+
|
|
192
|
+
Đây là dự án mã nguồn mở một người làm — mỗi ⭐ thật sự giúp nó tiến tới và giúp người khác tìm thấy.
|
|
193
|
+
|
|
194
|
+
- ⭐ **[Star repo](https://github.com/vuluu2k/webcake-storefront-mcp)** — 2 giây, động lực lớn.
|
|
195
|
+
- 🐛 **[Mở issue](https://github.com/vuluu2k/webcake-storefront-mcp/issues)** — một lỗi, một component còn thiếu, hay chỉ một ý tưởng.
|
|
196
|
+
- 🔁 **Chia sẻ** với ai vẫn đang dựng trang store từng block một.
|
|
197
|
+
|
|
198
|
+
[](https://star-history.com/#vuluu2k/webcake-storefront-mcp&Date)
|
|
199
|
+
|
|
200
|
+
> Làm với ❤️ cho cộng đồng WebCake. Cảm ơn bạn đã ghé.
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
3
|
import { createServer } from "./server.js";
|
|
4
|
-
import { makeApi
|
|
4
|
+
import { makeApi } from "./config.js";
|
|
5
5
|
const HELP = `webcake-storefront-mcp — MCP server for the WebCake/StoreCake storefront builder
|
|
6
6
|
|
|
7
7
|
Usage: npx -y webcake-storefront-mcp [command] [options]
|
|
@@ -54,13 +54,9 @@ async function main() {
|
|
|
54
54
|
await startHttpServer(Number.isFinite(port) && port > 0 ? port : 8787);
|
|
55
55
|
return;
|
|
56
56
|
}
|
|
57
|
-
// Default: stdio MCP server.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
console.error("Required: WEBCAKE_API_URL (env var or saved via `login` / update_auth tool).");
|
|
61
|
-
console.error("Run `npx -y webcake-storefront-mcp install` to set things up.");
|
|
62
|
-
process.exit(1);
|
|
63
|
-
}
|
|
57
|
+
// Default: stdio MCP server. The API base URL defaults to the prod preset, so
|
|
58
|
+
// no env is required to start — auth (token + session) is set via env or `login`,
|
|
59
|
+
// and the site is chosen at runtime with switch_site.
|
|
64
60
|
const api = makeApi();
|
|
65
61
|
const server = createServer(api);
|
|
66
62
|
const transport = new StdioServerTransport();
|
package/dist/install.js
CHANGED
|
@@ -114,11 +114,12 @@ async function promptMissing(opts) {
|
|
|
114
114
|
if (t)
|
|
115
115
|
opts.token = t;
|
|
116
116
|
}
|
|
117
|
-
if (!opts.uninstall && !opts.
|
|
118
|
-
const s = (await rl.question("
|
|
117
|
+
if (!opts.uninstall && !opts.sessionId && !process.env.WEBCAKE_SESSION_ID) {
|
|
118
|
+
const s = (await rl.question("Session id (x-session-id, or leave blank to set later): ")).trim();
|
|
119
119
|
if (s)
|
|
120
|
-
opts.
|
|
120
|
+
opts.sessionId = s;
|
|
121
121
|
}
|
|
122
|
+
// Site is chosen at runtime — use the list_my_sites / switch_site tools in chat.
|
|
122
123
|
}
|
|
123
124
|
finally {
|
|
124
125
|
rl.close();
|
package/dist/server.js
CHANGED
|
@@ -23,7 +23,7 @@ IMPORTANT: When the user asks ANY question about their website, store, products,
|
|
|
23
23
|
You can also BUILD pages: use get_build_guide, list_elements, get_element to learn the BuilderX component model, new_section/new_element to compose, validate_page to check, then build_page (dry_run first) to create. Publishing is site-level via publish_site.
|
|
24
24
|
|
|
25
25
|
Workflow:
|
|
26
|
-
1. On first interaction, call get_current_context to
|
|
26
|
+
1. On first interaction, call get_current_context. The site is NOT set from env — if no site is selected yet, call list_my_sites and ask the user which site to work on, then switch_site (the choice is saved and reused next session).
|
|
27
27
|
2. Before answering a site-specific question, query the relevant tool.
|
|
28
28
|
3. When building a page, read get_build_guide first and validate before saving.
|
|
29
29
|
4. Always reply in the user's language; keep Vietnamese with full diacritics.`;
|
package/package.json
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "webcake-storefront-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "MCP server for the WebCake/StoreCake storefront builder — page CRUD, page authoring, products, orders, and more",
|
|
5
5
|
"mcpName": "io.github.vuluu2k/webcake-storefront-mcp",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"author": "vuluu2k (https://github.com/vuluu2k)",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/vuluu2k/webcake-storefront-mcp.git"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://github.com/vuluu2k/webcake-storefront-mcp#readme",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/vuluu2k/webcake-storefront-mcp/issues"
|
|
15
|
+
},
|
|
6
16
|
"type": "module",
|
|
7
17
|
"bin": {
|
|
8
18
|
"webcake-storefront-mcp": "dist/index.js"
|