← Blog
Field note

Cách Xây Plugin ChatGPT Cho SaaS 2026: MCP, Giao Diện, Events

Thien Nguyen · Oct 6, 2026

Để xây plugin ChatGPT cho sản phẩm SaaS năm 2026, bạn đặt một MCP server từ xa trước sản phẩm, thêm OAuth nếu người dùng cần dữ liệu của chính họ, thêm panel giao diện nếu cần, rồi nộp gói plugin qua cổng plugin của OpenAI để được duyệt. Từ DevDay ngày 29/9/2026, plugin còn có thể nằm trong thanh bên của ChatGPT, mở cạnh cuộc hội thoại, làm trình xem file và kích hoạt tự động hóa qua MCP Events. Cùng một trang plugin xuất hiện ở cả ChatGPT và Codex, và các agent luôn chạy Dots của OpenAI tiếp cận ứng dụng thông qua plugin. Một plugin chỉ đọc trên dữ liệu công khai mất hai đến ba tuần công. Một plugin có xác thực, có giao diện và tự động hóa theo sự kiện mất hai đến ba tháng. Bài này trình bày kiến trúc, từng bước, những gì vòng duyệt kiểm tra, chi phí, và những gì chúng tôi phát hiện khi đối chiếu chính các MCP server của mình với yêu cầu của OpenAI. Cập nhật tháng 10/2026.

Plugin ChatGPT thay đổi gì sau DevDay 2026?

Plugin chuyển từ công cụ model gọi ngầm thành tính năng giống ứng dụng ngay trong ChatGPT. Tại DevDay ngày 29/9/2026, OpenAI công bố:

  • Plugin extensions. Plugin có thể có chỗ riêng trong thanh bên ChatGPT, mở panel tương tác cạnh cuộc hội thoại, và làm trình xem hoặc chỉnh sửa cho các định dạng file của bạn.
  • MCP Events. ChatGPT hỗ trợ đặc tả MCP Events đang được đề xuất, nên plugin có thể khởi chạy tự động hóa khi có sự kiện trong sản phẩm của bạn, như ticket mới hay bình luận mới.
  • Quy trình nộp mới. Plugin Creator để xây plugin, quy trình duyệt được thiết kế lại với phản hồi rõ hơn, và cách xếp hạng, gợi ý trong thư mục plugin tốt hơn.
  • Dots. Các agent luôn chạy mà theo OpenAI "có thể kết nối với hơn 4.000 ứng dụng" thông qua hệ sinh thái plugin.

Bài tổng kết DevDay của OpenAI cho biết ChatGPT có 1,2 tỷ người dùng mỗi tuần, đây là con số do chính OpenAI công bố. Có mặt trong thư mục chưa có nghĩa là được tìm thấy, như phần về vòng duyệt sẽ giải thích, nhưng plugin giờ là cách sản phẩm của bạn xuất hiện khi khách hàng, hoặc agent của họ, làm việc trong ChatGPT.

Một plugin ChatGPT gồm những gì?

Plugin là một gói chứa skill, MCP server hoặc cả hai, cộng giao diện tùy chọn trên server. Tài liệu của OpenAI mô tả bốn dạng:

DạngBên trong có gìChọn khi nào
Chỉ skillCác thư mục có file SKILL.md và tài liệu kèm theo, hướng dẫn model chạy một quy trìnhCâu lệnh cộng các công cụ ChatGPT đã có là đủ. Không cần truy cập sản phẩm của bạn.
Chỉ MCP serverMột MCP server từ xa đưa các công cụ của sản phẩm ra ngoài, có xác thựcModel cần dữ liệu trực tiếp hoặc hành động từ sản phẩm của bạn.
Skill và MCP serverHướng dẫn quy trình dùng các công cụ MCP của bạnNgười dùng chạy quy trình nhiều bước, như "chuẩn bị báo cáo tháng", trên công cụ của bạn.
MCP server có giao diệnNhư trên, cộng tài nguyên giao diện hiển thị trong ChatGPTNgười dùng cần xem, so sánh, sửa hoặc xác nhận dữ liệu có cấu trúc bằng mắt.

Với sản phẩm SaaS, MCP server là phần cốt lõi. Nó xác định có những công cụ nào, schema đầu vào và đầu ra, ai được gọi, và dữ liệu nào được trả về. Giao diện là tùy chọn, và OpenAI khuyên giữ mọi công cụ hữu ích ngay cả khi không có giao diện, để các agent như Dots chạy được cùng quy trình ở chế độ nền. Nếu chưa từng xây MCP server, hãy bắt đầu với hướng dẫn phát triển MCP server của chúng tôi. Bài đó đi sâu vào giao thức, kiến trúc OAuth 2.1 và bảo mật, nên bài này tập trung vào những gì riêng cho ChatGPT.

Kiến trúc plugin ChatGPT: ChatGPT, Codex và Dots gọi gói plugin có lõi là MCP server từ xa cùng skill, giao diện MCP Apps, extension và MCP Events, kết nối với OAuth authorization server, API và sự kiện trong sản phẩm của bạn qua webhook có ký
Hình 1: Kiến trúc plugin ChatGPT: ChatGPT, Codex và Dots gọi gói plugin có lõi là MCP server từ xa cùng skill, giao diện MCP Apps, extension và MCP Events, kết nối với OAuth authorization server, API và sự kiện trong sản phẩm của bạn qua webhook có ký

Xây plugin ChatGPT từng bước như thế nào?

Chín bước đưa bạn từ ý tưởng đến một plugin được công bố:

  1. Chọn ba đến năm use case. Viết chúng như câu người dùng sẽ gõ trong ChatGPT, ví dụ "cho tôi xem các hóa đơn quá hạn của Acme". Chúng sẽ thành các công cụ và, sau đó, thành test case khi nộp duyệt.
  2. Xây MCP server từ xa. Dùng domain HTTPS công khai, một tập công cụ nhỏ với schema chặt và tên động từ rõ ràng như get_order_status, và nhắm tới phiên bản MCP hiện hành (2026-07-28). MCP Events bắt buộc phiên bản này.
  3. Thêm xác thực. Công bố metadata protected-resource của OAuth trên MCP server và trỏ tới authorization server của bạn. ChatGPT chạy luồng authorization code với PKCE (S256) và gửi tham số resource mà bạn phải phản hồi lại đúng giá trị. ChatGPT ưu tiên Client ID Metadata Document và cũng hỗ trợ đăng ký client động hoặc client định nghĩa sẵn. Khai báo xác thực cho từng công cụ bằng securitySchemes, để công cụ công khai chạy được trước khi người dùng liên kết tài khoản.
  4. Cho phép đúng redirect URI. Nếu authorization server hỗ trợ nhận diện issuer theo RFC 9207 (trả iss trong mọi phản hồi ủy quyền), ChatGPT dùng một redirect URI cố định. Nếu không, ChatGPT dùng redirect riêng theo callback. Hãy chép đúng giá trị hiển thị ở trang quản lý plugin vào allowlist.
  5. Gắn annotation cho mọi công cụ. Đặt readOnlyHint, destructiveHint và openWorldHint với giá trị true hoặc false rõ ràng. Vòng duyệt kiểm tra chúng có khớp hành vi thật không. Annotation cũng là căn cứ cho các lớp bảo vệ phía client: chế độ "proactive research" chạy nền của Dots chỉ dùng ứng dụng đã kết nối qua công cụ chỉ đọc.
  6. Chỉ thêm giao diện ở chỗ thực sự cần. ChatGPT triển khai chuẩn mở MCP Apps. Server liên kết một công cụ với một tài nguyên giao diện, và giao diện chạy trong iframe, giao tiếp với ChatGPT qua cầu nối JSON-RPC. Hãy định nghĩa content security policy liệt kê đúng các domain mà component gọi tới.
  7. Thêm extension. Ứng dụng ở thanh bên, panel trong hội thoại, trình xem file, phần cài đặt plugin, deep link và form phong phú được khai báo bằng vài dòng metadata của công cụ qua SDK MCP extensions của OpenAI.
  8. Thêm MCP Events nếu người dùng cần nói "khi X xảy ra trong sản phẩm của bạn, hãy làm Y". Phần tiếp theo trình bày việc này đòi hỏi gì.
  9. Đóng gói, kiểm thử và nộp. Kiểm thử trong ChatGPT bằng kết nối tùy chỉnh, đóng gói plugin thành file ZIP kèm manifest, tải lên cổng, sửa các lỗi kiểm tra tự động, rồi nộp duyệt.

Với khách hàng doanh nghiệp, hãy trả về thêm email đã xác minh qua OpenID Connect. ChatGPT Enterprise dùng nó để ngăn một danh tính công ty liên kết plugin của bạn trong workspace cá nhân.

Sản phẩm SaaS kết nối với nhiều dịch vụ
Sản phẩm SaaS kết nối với nhiều dịch vụ

MCP Events hoạt động thế nào, và cần gì để xây?

MCP Events cho phép ChatGPT đăng ký theo dõi các sự kiện trong sản phẩm của bạn và xử lý chúng, kể cả khi người dùng không ở đó. Ví dụ: "theo dõi tài liệu này, có bình luận review thì áp dụng chỉnh sửa". Tính năng chạy trong Work chat và với Dots, và đây là phần nặng về backend nhất của một plugin.

Server công bố events trong capability của server/discover và triển khai ba phương thức trên cùng endpoint có xác thực với các công cụ:

  • events/list mô tả từng sự kiện, bộ lọc và schema dữ liệu.
  • events/subscribe tạo hoặc gia hạn một đăng ký. ChatGPT cung cấp URL callback và secret để ký.
  • events/unsubscribe dừng đăng ký.

Sau đó, mỗi khi có sự kiện khớp, server POST một sự kiện đã ký cho mỗi request tới callback. Phần tốn thời gian là các chi tiết production:

  • Lưu trữ đăng ký bền vững, không mất khi khởi động lại, gồm chủ sở hữu, bộ lọc, URL callback, secret và thời hạn.
  • Kiểm tra quyền khi đăng ký và trong suốt thời gian đăng ký. Bảo đảm người dùng được phép thấy sự kiện, và dừng gửi nếu quyền bị thu hồi.
  • Xác minh callback bằng một challenge dùng một lần trước khi gửi bất kỳ dữ liệu nào.
  • Chống SSRF. Chỉ HTTPS, phân giải và kiểm tra địa chỉ đích, chặn địa chỉ private và local, không đi theo redirect.
  • Ký bằng header Standard Webhooks, dữ liệu tối đa 256 KiB, retry có backoff và giữ nguyên ID sự kiện, không retry khi nhận 410 hoặc 413.
  • Công cụ ghi có tính idempotent, vì sự kiện có thể đến sai thứ tự và một tự động hóa có thể chạy hai lần.

Tích hợp của OpenAI chỉ hỗ trợ gửi qua webhook, không hỗ trợ polling hay streaming. Tài liệu cũng nhắc phải coi bình luận và các nội dung người dùng viết trong sự kiện là dữ liệu, không phải câu lệnh. Điều này quan trọng, vì tự động hóa theo sự kiện thực chất là một agent hành động dựa trên chữ do người khác viết. Checklist bảo mật AI agent của chúng tôi trình bày các biện pháp bảo vệ cho trường hợp này.

Vòng duyệt của OpenAI kiểm tra gì trước khi plugin được công bố?

Vòng duyệt kiểm tra bạn là ai, plugin có chạy đúng không, và có tuân theo quy định về dữ liệu và thương mại của OpenAI không. Hãy dùng danh sách sau để tự kiểm tra:

  • Nhà phát hành đã xác minh. Xác minh cá nhân hoặc doanh nghiệp trên OpenAI Platform, khớp với tên hiển thị trên plugin.
  • Xác minh domain. Một challenge token dạng văn bản thuần tại /.well-known/openai-apps-challenge trên domain của MCP server.
  • Quyền truy cập cho người duyệt. Một tài khoản demo có dữ liệu mẫu, đăng nhập được mà không cần MFA, mã SMS hay mã email.
  • Test case. Năm test case tích cực (prompt, công cụ dự kiến, kết quả dự kiến) và ba test case tiêu cực mà plugin phải từ chối hoặc hỏi lại, cộng video hướng dẫn và release notes.
  • Chính sách quyền riêng tư công bố mọi loại dữ liệu cá nhân mà công cụ trả về. Vòng duyệt sẽ đánh dấu các trường như ID nội bộ hay dữ liệu debug chưa được công bố.
  • Annotation chính xác cho mọi công cụ, như ở trên.
  • Không có dữ liệu bị hạn chế. Plugin không được thu thập hay xử lý dữ liệu thẻ thanh toán thuộc phạm vi PCI DSS, thông tin sức khỏe được bảo vệ (PHI), số định danh do nhà nước cấp, hoặc mật khẩu và API key.
  • Quy định thương mại. Chỉ được bán hàng hóa vật chất. Plugin không được bán gói thuê bao hay credit, hiển thị bảng giá hoặc dẫn tới trang thanh toán nâng cấp, dù người dùng đang trả phí vẫn đăng nhập và dùng được những gì họ đã có.
  • Đối tượng. Phù hợp với người dùng 13–17 tuổi, không có quảng cáo.

Ba chi tiết vận hành hay làm các đội bất ngờ. Project dùng lưu trữ dữ liệu tại EU hiện chưa nộp được plugin có MCP server. Origin của MCP server không đổi được giữa các phiên bản, nên đổi domain sau này đồng nghĩa với một plugin mới. Và sau khi công bố, OpenAI quét server mỗi ngày: công cụ mới hoặc thay đổi chỉ có hiệu lực sau khi qua kiểm tra tự động, còn công cụ bị xóa thì biến mất ngay.

Cuối cùng, được duyệt không có nghĩa là được tìm thấy. Sau khi công bố, người dùng tìm thấy bạn qua đường link trực tiếp hoặc tìm đúng tên plugin. Trang chính của thư mục và các gợi ý chủ động dành cho plugin được OpenAI chọn vì hữu ích và được hài lòng cao, và bạn không thể yêu cầu vị trí đó.

Checklist duyệt plugin của OpenAI: nhà phát hành đã xác minh, xác minh domain, tài khoản demo cho người duyệt, 5 test case tích cực và 3 tiêu cực, annotation chính xác, chính sách quyền riêng tư, không dữ liệu bị hạn chế, quy định thương mại và đối tượng, cùng ba chi tiết vận hành
Hình 2: Checklist duyệt plugin của OpenAI: nhà phát hành đã xác minh, xác minh domain, tài khoản demo cho người duyệt, 5 test case tích cực và 3 tiêu cực, annotation chính xác, chính sách quyền riêng tư, không dữ liệu bị hạn chế, quy định thương mại và đối tượng, cùng ba chi tiết vận hành

SaaS y tế hay fintech có ra được plugin ChatGPT công khai không?

Có, nhưng không phải trên chính dữ liệu thuộc diện quản lý. Hướng dẫn của OpenAI cấm plugin công khai xử lý PHI và dữ liệu thẻ thuộc phạm vi PCI. Một sản phẩm healthtech hay fintech vẫn có thể công bố plugin cho việc đặt lịch, thông tin sản phẩm chung, phân tích dữ liệu đã ẩn danh hoặc các tính năng không thuộc diện quản lý. Với quy trình chạm tới dữ liệu được quản lý, cách đúng là một kết nối MCP tùy chỉnh, riêng tư trong workspace của khách hàng, với endpoint model, hợp đồng và audit trail được xác định phạm vi như phần còn lại của hệ thống tuân thủ. Bài AI agent tuân thủ HIPAA và checklist PCI DSS và SOC 2 cho fintech trình bày phần này.

Xây plugin ChatGPT tốn bao nhiêu?

Phần lớn chi phí nằm ở xác thực, sự kiện và chuẩn bị cho vòng duyệt, không nằm ở giao thức. Bảng dưới quy đổi công sức ra tiền theo hai mức giá đã công bố trên site: mức senior châu Á $31–$41/giờ trong bài giá thuê ngoài phát triển phần mềm Việt Nam 2026, và mức $100–$300/giờ thường gặp ở các công ty tầm trung tại Mỹ.

Phạm vi pluginBao gồmCông sức (tuần công senior)Ở mức $31–$41/giờỞ mức $100–$300/giờ
Chỉ đọc, dữ liệu công khaiMCP server 5–10 công cụ, annotation, đóng gói, test case, video, rà soát quyền riêng tư2–3$2,5K–$4,9K$8K–$36K
Có xác thực, chỉ đọcNhư trên, cộng OAuth 2.1 với PKCE, metadata protected-resource, đăng ký client, xác thực theo công cụ, tenant demo4–7$5K–$11,5K$16K–$84K
Có xác thực và giao diệnNhư trên, cộng giao diện MCP Apps, extension thanh bên hoặc panel, content security policy, kiểm thử giao diện6–10$7,4K–$16,4K$24K–$120K
Công cụ ghi và MCP EventsNhư trên, cộng scope ghi, bước xác nhận, idempotency, kho đăng ký, webhook có ký, chống SSRF, kiểm thử lạm dụng8–14$9,9K–$23K$32K–$168K

Đây là ước tính lập kế hoạch của chúng tôi, không phải báo giá. Ước tính giả định API của bạn đã có những gì công cụ cần và đội ngũ đã quen OAuth. Nếu chưa có API, phần đó phải làm trước, và bài chi phí phát triển ứng dụng AI trình bày chi tiết. Bảng không tính thời gian duyệt, vì OpenAI cho biết thời gian thay đổi và không nhận yêu cầu duyệt nhanh. Hãy dự trù ít nhất một vòng phản hồi.

Đối chiếu MCP server của chính chúng tôi với yêu cầu plugin cho thấy gì?

Ba khoảng trống, có lẽ cũng là điển hình với các server xây trong năm 2025 hoặc đầu 2026. BeevR chạy ba MCP server: beevr.ai/mcp và ecocheck.ai/mcp (công khai, chỉ đọc) và ecocheck.ai/mcp/account (dữ liệu của chính khách hàng, OAuth 2.1 với PKCE). Ngày 7/10/2026, chúng tôi đối chiếu chúng với tài liệu plugin hiện hành của OpenAI:

  • Chưa có annotation cho công cụ (đã sửa ngay trong ngày). Cả hai server công khai từng trả về công cụ mà không có readOnlyHint, destructiveHint hay openWorldHint. Mọi công cụ đều chỉ đọc nên chỉ cần sửa một dòng mỗi server: giờ cả ba server khai báo readOnlyHint: true, destructiveHint: false, idempotentHint: true và openWorldHint: false cho mọi công cụ.
  • Chưa hỗ trợ MCP Events. Các server vẫn dùng các phiên bản giao thức cũ có bước bắt tay và chưa triển khai server/discover, thứ MCP Events cần.
  • Allowlist redirect cần cập nhật. Phần đăng ký client của server tài khoản cho phép redirect URI cố định của ChatGPT. Metadata của authorization server chưa công bố hỗ trợ nhận diện issuer theo RFC 9207, nên theo tài liệu hiện tại ChatGPT sẽ dùng redirect riêng theo callback. Phản hồi ủy quyền đi thẳng từ Amazon Cognito, nên muốn thêm iss phải proxy cả bước authorize lẫn bước token. Chúng tôi chọn cách đơn giản mà OpenAI hướng dẫn: khi đăng ký plugin, chép đúng redirect trong trang quản lý plugin vào allowlist.

Những gì đã khớp: metadata protected-resource, phản hồi 401 chỉ rõ metadata và scope, chỉ PKCE S256, client công khai, token sống ngắn có thu hồi, và giới hạn chỉ đọc được thực thi ở API backend thay vì ở lớp MCP. Nếu bắt đầu từ đầu, xây theo phiên bản 2026-07-28 và tài liệu của OpenAI ngay từ ngày đầu sẽ tránh được cả ba khoảng trống.

Câu hỏi thường gặp

Plugin ChatGPT có giống MCP server không?

Không hẳn. MCP server là phần kết nối ChatGPT với sản phẩm của bạn. Plugin là gói bạn nộp và người dùng cài đặt, có thể gồm cả skill, giao diện và metadata. Plugin thậm chí có thể chỉ có skill, không có server.

Plugin ChatGPT có bắt buộc phải có giao diện riêng không?

Không. Giao diện là tùy chọn, và nhiều plugin tốt chỉ trả về kết quả có cấu trúc. Hãy thêm giao diện ở chỗ người dùng cần so sánh, sửa hoặc xác nhận bằng mắt, và giữ mọi công cụ chạy được khi không có giao diện để agent dùng ở chế độ nền.

Duyệt plugin ChatGPT mất bao lâu?

OpenAI không công bố thời gian và không nhận yêu cầu duyệt nhanh. Phần lớn trường hợp bị từ chối là do người duyệt không đăng nhập được, test case thất bại, dữ liệu cá nhân chưa được công bố hoặc annotation sai, nên hãy làm đúng các điểm này trước khi nộp.

Plugin của tôi có chạy với OpenAI Dots không?

Dots dùng các plugin người dùng đã kết nối, nên plugin được công bố là cách để sản phẩm của bạn đến được với chúng. MCP Events cũng chạy với Dots. Annotation chỉ đọc chính xác rất quan trọng, vì chế độ nghiên cứu chạy nền của Dots chỉ dùng ứng dụng đã kết nối qua công cụ chỉ đọc.

Một MCP server có dùng được cho cả Claude và ChatGPT không?

Có. Cả hai đều là MCP client, và giao diện của ChatGPT xây trên chuẩn mở MCP Apps. Server tài khoản EcoCheck của chúng tôi đã cho phép redirect URI cho cả hai client. Các phần riêng của từng nền tảng, như extension thanh bên của ChatGPT, cần thêm metadata nhưng không làm hỏng các client khác.

BeevR xây MCP server production và plugin trên nền đó, với OAuth, audit và sự sẵn sàng cho vòng duyệt được thiết kế từ đầu, giá cố định theo từng giai đoạn và bạn sở hữu toàn bộ code từ ngày đầu tiên. Xem dịch vụ phát triển AI agent hoặc kể cho chúng tôi bạn muốn người dùng ChatGPT làm gì với sản phẩm của bạn.