Files
homaroma/apps/mcp-server/README.md
T
2026-07-23 04:41:35 -04:00

122 lines
3.5 KiB
Markdown

# HomAroma MCP Server
MCP server สำหรับเชื่อม AI tools เข้ากับ backend ของ HomAroma ผ่าน stdio transport
## Run
```bash
bun install
bun run --cwd apps/mcp-server dev
```
หรือรันตรงจาก package:
```bash
cd apps/mcp-server
bun run dev
```
## Environment
รองรับตัวแปรต่อไปนี้:
- `MCP_BACKEND_URL` สำหรับกำหนด backend target ตรง ๆ
- `MCP_BACKEND_URL_LOCAL` ค่าเริ่มต้นสำหรับ local
- `MCP_BACKEND_URL_PRODUCTION` ค่าเริ่มต้นสำหรับ production
- `MCP_ADMIN_USERNAME`
- `MCP_ADMIN_PASSWORD`
ถ้าไม่ตั้งค่า `MCP_BACKEND_URL` server จะเริ่มที่ local backend และสลับเป็น production ได้ด้วย tool `set_target_environment`
## Available tools
- `update_brand_name` เปลี่ยนชื่อแบรนด์กลางที่ใช้ใน header/footer ของ `apps/spa` และ `apps/website`
- `update_store_settings_translation` อัปเดตข้อความแปลของ store settings
- `update_footer_content` อัปเดตเนื้อหา footer และลิงก์ที่เกี่ยวข้อง
## Mega Menu LLM Workflow
Header Mega Menu uses the `main` menu payload tree. The website renders this structure:
```text
Root -> Column -> Link -> Child Link
```
Supported localized text keys are:
```text
th, en, ja, zh, vi, ko, lo, it
```
LLM agents should use this workflow for every menu edit:
1. `capture_menu_snapshot` for `main`
2. `get_mega_menu_tree`
3. `validate_mega_menu_tree`
4. Plan operations from diagnostics and current `nodeId` values
5. `bulk_menu_operations` with `dryRun: true`
6. Review `preview.diff`, `preview.before`, `preview.after`, `issues`, and `warnings`
7. Apply only after approval
8. Run `validate_mega_menu_tree` again
9. Use `restore_menu_snapshot` if the applied result is wrong
Do not add a Link directly under root. Add a Column under Root first, then add Links under that Column.
Dry-run responses are expected to include path-based diffs such as:
```json
{
"path": "payload[0].columns[0].links[0].label.it",
"before": null,
"after": "Candele"
}
```
`validate_mega_menu_tree` reports:
- missing locale keys, especially `lo` and `it`
- unsupported translation keys
- duplicate or missing `nodeId`
- invalid URL shape
- placeholder text
- empty columns
- featured card issues
- desktop render limits such as hidden columns or links
## Category Management LLM Workflow
Product categories are managed by backend `/categories` APIs through MCP. Supported localized text keys are:
```text
th, en, ja, zh, vi, ko, lo, it
```
LLM agents should use this workflow for category edits:
1. `list_categories` with `lang: "all"` to discover category IDs and current translations
2. `create_category`, `update_category`, `update_category_translations`, or `delete_category` with `dryRun: true`
3. Review the preview and product counts
4. Apply only after the intended change is clear
5. Run `list_categories` again to verify
Backend category support currently covers:
- base `name`
- `imageUrl`
- localized names
- product-count guarded soft delete (`deletedAt`)
Backend category support does not currently cover:
- slug
- nested parent/child hierarchy
- sort order
- active/inactive state
- restore/undelete workflow
## Scripts
- `bun run dev`
- `bun run start`
- `bun run check`