GraphQL Plugin cung cấp MCP server cho khu vực admin tại endpoint
/graphql/mcp. Khi AI client kết nối MCP server này, nó có thể đọc các
resource guide của plugin để trả lời theo đúng quy ước của ezyplatform.
Với cron expression, resource cần đọc là:
guide://cron-expression-authoring
Mục tiêu của guide này là giúp AI biến lịch lặp bằng ngôn ngữ tự nhiên, ví dụ
mỗi ngày lúc 8 giờ sáng hoặc mỗi 15 phút, thành cron expression hợp lệ để
người dùng copy vào trường cron expression của tính năng tương ứng.

Vì sao nên yêu cầu AI đọc MCP guide

Cron expression của ezyplatform không phải Quartz và cũng không phải POSIX
crontab tiêu chuẩn. Nếu AI tự suy đoán theo trí nhớ thông thường, nó rất dễ
đưa ra biểu thức có token không được hỗ trợ, như ?, L, W, #, tên tháng
JAN, tên thứ MON, hoặc trường năm thứ 7.
Khi viết prompt, hãy yêu cầu AI đọc guide://cron-expression-authoring trước.
Guide này mô tả đúng cú pháp mà parser của ezyplatform chấp nhận, gồm số
trường, miền giá trị, các token hợp lệ và ý nghĩa khi kết hợp ngày-trong-tháng
với ngày-trong-tuần.
flowchart TD
    A[Người dùng mô tả lịch lặp] --> B[AI client kết nối GraphQL MCP]
    B --> C[resources/read guide://cron-expression-authoring]
    C --> D[AI chuyển yêu cầu thành các trường cron cụ thể]
    D --> E[AI kiểm tra cú pháp và các cảnh báo của guide]
    E --> F[AI trả về cron expression và diễn giải ngắn]
    F --> G[Người dùng copy vào trường cron expression]

Chuẩn cron expression của ezyplatform

Cron expression của ezyplatform có đúng 5 hoặc 6 trường số, cách nhau bằng
khoảng trắng:
MINUTE HOUR DAY-OF-MONTH MONTH DAY-OF-WEEK
SECOND MINUTE HOUR DAY-OF-MONTH MONTH DAY-OF-WEEK
Dạng 5 trường được ưu tiên cho hầu hết lịch lặp thông thường; giây mặc định là
0. Chỉ dùng dạng 6 trường khi người dùng thật sự cần độ chính xác theo giây,
ví dụ mỗi 30 giây.
Miền giá trị:
TrườngGiá trị
SECOND0-59
MINUTE0-59
HOUR0-23
DAY-OF-MONTH1-31
MONTH1-12
DAY-OF-WEEK0-6, trong đó 0 là Chủ nhật
Token được hỗ trợ:
Cú phápÝ nghĩa
*Mọi giá trị trong miền hợp lệ
nMột giá trị cụ thể
n-mKhoảng từ n đến m, bao gồm hai đầu
*/stepLặp theo bước, bắt đầu từ giá trị nhỏ nhất của trường
n/stepLặp theo bước, bắt đầu từ n đến giá trị lớn nhất
n-m/stepLặp theo bước trong một khoảng
a,b,cDanh sách các giá trị hoặc token hợp lệ
Điểm dễ nhầm nhất là DAY-OF-MONTHDAY-OF-WEEK. Khi cả hai trường đều
bị giới hạn, ezyplatform yêu cầu cả hai cùng khớp. Nói cách khác, đây là logic
AND. Nếu người dùng muốn ngày 1 hằng tháng hoặc mỗi thứ Hai, không nên viết
cả hai điều kiện vào cùng một expression mà nên hỏi lại cách cấu hình phù hợp.

Cách viết prompt cho AI

Một prompt tốt nên nói rõ ba việc:
  • AI phải đọc MCP resource guide trước khi trả lời.
  • AI phải dùng cú pháp cron của ezyplatform, không dùng Quartz/crontab.
  • AI phải giải thích lại lịch chạy bằng ngôn ngữ tự nhiên để người dùng kiểm
    tra trước khi copy.
Mẫu prompt ngắn:
Hãy dùng GraphQL MCP server và đọc resource
guide://cron-expression-authoring trước khi tạo cron expression.

Tôi cần lịch chạy: mỗi ngày lúc 8 giờ 30 sáng.

Trả về:
1. Cron expression hợp lệ của ezyplatform.
2. Diễn giải ngắn lịch này sẽ chạy khi nào.
3. Nếu có điểm mơ hồ hoặc có nguy cơ nhầm với Quartz/crontab, hãy nói rõ.
Mẫu prompt cho lịch có ngày trong tuần:
Đọc guide://cron-expression-authoring từ GraphQL MCP trước.

Tạo cron expression ezyplatform cho lịch: mỗi thứ Hai, thứ Tư và thứ Sáu lúc
18:00. Không dùng tên ngày trong tuần, không dùng Quartz syntax.

Hãy trả về expression dạng plain text và giải thích lại ý nghĩa.
Kết quả mong đợi:
0 18 * * 1,3,5
Mẫu prompt khi cần độ chính xác theo giây:
Hãy đọc MCP guide guide://cron-expression-authoring và tạo cron expression của
ezyplatform cho lịch: mỗi 30 giây.

Vì lịch này cần cấp độ giây, nếu cần hãy dùng dạng 6 trường. Hãy giải thích vì
sao không dùng dạng 5 trường.
Kết quả mong đợi:
0/30 * * * * *

Checklist trước khi copy cron expression

Trước khi copy kết quả của AI vào trường cấu hình, hãy kiểm tra nhanh:
  • Expression có đúng 5 hoặc 6 trường không.
  • Tất cả giá trị đều là số, không có JAN, MON, SUN.
  • Không có token ?, L, W, #.
  • Không có trường năm thứ 7.
  • Nếu có dùng DAY-OF-WEEK, Chủ nhật phải là 0, không phải 7.
  • Nếu cả DAY-OF-MONTHDAY-OF-WEEK đều khác *, bạn đã thật sự muốn
    logic AND.

Một số ví dụ nhanh

Nhu cầuCron expression
Mỗi phút* * * * *
Đầu mỗi giờ0 * * * *
Mỗi ngày lúc 08:000 8 * * *
Mỗi ngày lúc 08:3030 8 * * *
Mỗi thứ Hai lúc 08:000 8 * * 1
Mỗi ngày trong tuần lúc 08:000 8 * * 1-5
Mỗi 15 phút*/15 * * * *
Mỗi 2 giờ đúng đầu giờ0 */2 * * *
Ngày 1 hằng tháng lúc 00:000 0 1 * *
Mỗi 30 giây0/30 * * * * *

Giới hạn cần nhớ

MCP guide chỉ giúp AI tạo và kiểm tra cron expression theo đúng cú pháp. Nó
không tự lưu, kích hoạt hay gán expression vào một tính năng cụ thể. Sau khi AI
trả về kết quả, người dùng vẫn cần copy expression vào trường cấu hình phù hợp
trong ezyplatform.