{"id":43215,"date":"2026-08-14T13:44:52","date_gmt":"2026-08-14T06:44:52","guid":{"rendered":"https:\/\/interdata.vn\/blog\/?p=43215"},"modified":"2026-08-14T13:56:20","modified_gmt":"2026-08-14T06:56:20","slug":"cach-ket-noi-code-editor-toi-mcp-server-ezyplatform","status":"publish","type":"post","link":"https:\/\/interdata.vn\/blog\/cach-ket-noi-code-editor-toi-mcp-server-ezyplatform\/","title":{"rendered":"C\u00e1ch K\u1ebft N\u1ed1i Code Editor T\u1edbi MCP Server EzyPlatform [H\u01b0\u1edbng D\u1eabn T\u1eebng B\u01b0\u1edbc]"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-size: 100%;\">MCP Server EzyPlatform gi\u00fap AI assistant truy v\u1ea5n tr\u1ef1c ti\u1ebfp d\u1eef li\u1ec7u th\u1ef1c t\u1ebf tr\u00ean h\u1ec7 th\u1ed1ng, t\u1eeb \u0111\u00f3 hi\u1ec3u r\u00f5 c\u1ea5u tr\u00fac v\u00e0 ng\u1eef c\u1ea3nh d\u1ef1 \u00e1n thay v\u00ec ch\u1ec9 vi\u1ebft code d\u1ef1a tr\u00ean ph\u1ecfng \u0111o\u00e1n. Trong b\u00e0i vi\u1ebft n\u00e0y, <a href=\"\/\"><strong>InterData<\/strong><\/a> s\u1ebd h\u01b0\u1edbng d\u1eabn t\u1eebng b\u01b0\u1edbc <strong>k\u1ebft n\u1ed1i VS Code, Cursor v\u00e0 Windsurf v\u1edbi MCP Server EzyPlatform<\/strong>, b\u00e1m s\u00e1t t\u00e0i li\u1ec7u ch\u00ednh th\u1ee9c \u0111\u1ec3 b\u1ea1n c\u00f3 th\u1ec3 c\u1ea5u h\u00ecnh nhanh v\u00e0 s\u1eed d\u1ee5ng \u0111\u00fang c\u00e1ch.<\/span><\/p>\n<div style=\"background-color: #eff6ff; padding: 20px; border: 1.5px solid #BFDBFE; border-radius: 12px; margin-bottom: 40px; box-shadow: 0 8px 20px rgba(37,99,235,0.05);\">\n<p style=\"font-family: 'Be Vietnam Pro', sans-serif; font-weight: bold; font-size: 18px; margin: 0 0 15px; color: #1e3a8a;\">N\u1ed8I DUNG B\u00c0I VI\u1ebeT<\/p>\n<ul style=\"list-style-type: none; padding-left: 0; margin: 0;\">\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section1\">1. MCP Server EzyPlatform l\u00e0 g\u00ec? V\u00ec sao Code Editor c\u1ea7n k\u1ebft n\u1ed1i?<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section2\">2. \u0110i\u1ec1u ki\u1ec7n ti\u00ean quy\u1ebft tr\u01b0\u1edbc khi k\u1ebft n\u1ed1i MCP Server EzyPlatform<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section3\">3. Code Editor n\u00e0o h\u1ed7 tr\u1ee3 MCP Server EzyPlatform?<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section4\">4. H\u01b0\u1edbng d\u1eabn t\u1eebng b\u01b0\u1edbc k\u1ebft n\u1ed1i Code Editor t\u1edbi MCP Server EzyPlatform<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section5\">5. C\u1ea5u h\u00ecnh MCP Server EzyPlatform cho t\u1eebng Code Editor<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section6\">6. 5 nh\u00f3m c\u00f4ng c\u1ee5 MCP Server EzyPlatform sau khi k\u1ebft n\u1ed1i<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section7\">7. X\u1eed l\u00fd l\u1ed7i th\u01b0\u1eddng g\u1eb7p khi k\u1ebft n\u1ed1i MCP Server EzyPlatform<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section8\">8. Ch\u1ecdn h\u1ea1 t\u1ea7ng ch\u1ea1y EzyPlatform v\u00e0 MCP Server cho Vibe Coding<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section9\">9. C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p (FAQ)<\/a><\/li>\n<\/ul>\n<\/div>\n\n\n<style>\n.interdata-plan-carousel,.interdata-plan-carousel *{box-sizing:border-box}\n.interdata-plan-carousel{--blue:#005bea;--blue-dark:#004dcc;--text:#071832;--muted:#516173;--border:#d8e6fb;--bg:#f3f8ff;--shadow:0 5px 14px rgba(0,62,145,.08);background:var(--bg);padding:14px 56px 18px;position:relative;overflow:hidden;border-radius:20px;}\n.interdata-carousel-heading{color:#f00;font-family:Roboto,sans-serif;font-size:18px;line-height:1.35;font-weight:800;text-align:center;margin:0 0 14px}\n.interdata-plan-viewport{overflow:hidden;width:100%}\n.interdata-plan-track{display:flex;align-items:stretch;gap:12px;overflow:visible;padding:0 0 4px;transform:translate3d(0,0,0);transition:transform .45s ease;will-change:transform;touch-action:pan-y}\n.interdata-plan-card{flex:0 0 calc((100% - 24px)\/3);min-width:0;min-height:0!important;height:auto;background:#fff;border:1px solid var(--border);border-radius:8px;padding:15px 12px 13px;display:flex;flex-direction:column;box-shadow:var(--shadow)}\n.interdata-plan-title{color:var(--blue-dark);font-size:16px;line-height:1.22;font-weight:800;text-align:center;margin:0 0 7px;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.interdata-plan-price{color:var(--blue-dark);font-size:24px;line-height:1;font-weight:900;text-align:center;margin-bottom:12px;white-space:nowrap;letter-spacing:0}\n.interdata-plan-price span{font-size:10px;font-weight:800;margin-left:2px}\n.interdata-plan-badge{align-self:center;display:inline-flex;align-items:center;justify-content:center;background:#ff3934;color:#fff;border-radius:5px;padding:7px 8px;font-size:9px;line-height:1;font-weight:800;margin-bottom:15px;white-space:nowrap;max-width:100%}\n.interdata-plan-features{list-style:none!important;padding:0!important;margin:0!important}\n.interdata-plan-features li{display:flex;gap:7px;align-items:flex-start;color:var(--text);font-size:12px;line-height:1.35;font-weight:700;text-align:left;margin:0 0 10px!important;padding:0!important}\n.interdata-plan-icon{width:14px;min-width:14px;height:14px;color:#0069ff;margin-top:2px}\n.interdata-plan-icon svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}\n.interdata-plan-spacer{flex:1;min-height:16px}\n.interdata-plan-button{display:flex;align-items:center;justify-content:center;min-height:42px;width:100%;margin-top:auto!important;margin-bottom:0!important;background:var(--blue);color:#fff!important;border-radius:5px;font-size:13px;font-weight:800;text-decoration:none!important;box-shadow:0 7px 14px rgba(0,91,234,.24);transition:transform .2s ease,background .2s ease}\n.interdata-plan-button:hover{background:var(--blue-dark);color:#fff!important;transform:translateY(-1px)}\n.interdata-carousel-arrow{position:absolute;top:50%;z-index:5;width:44px;height:54px;border:2px solid #fff!important;border-radius:999px;background:var(--blue)!important;color:#fff!important;box-shadow:0 8px 22px rgba(0,62,145,.32);display:flex!important;align-items:center;justify-content:center;cursor:pointer;transform:translateY(-35%);transition:background .2s ease,color .2s ease,opacity .2s ease,transform .2s ease}\n.interdata-carousel-arrow:hover{background:var(--blue-dark)!important;color:#fff!important;transform:translateY(-35%) scale(1.04)}\n.interdata-carousel-arrow:disabled{opacity:.78;cursor:not-allowed;background:#8aa6cf!important;color:#fff!important}\n.interdata-carousel-arrow:disabled:hover{background:#8aa6cf!important;color:#fff!important;transform:translateY(-35%)}\n.interdata-carousel-arrow svg{display:none!important}\n.interdata-carousel-arrow:before{content:none!important;display:none!important}\n.interdata-carousel-mark{display:block!important;color:#fff!important;font-family:Arial,Helvetica,sans-serif!important;font-size:38px!important;font-weight:900!important;line-height:1!important;text-align:center!important;pointer-events:none!important;transform:translateY(-2px)}\n.interdata-carousel-prev{left:14px}\n.interdata-carousel-prev .interdata-carousel-mark{margin-left:-2px}\n.interdata-carousel-next{right:14px}\n.interdata-carousel-next .interdata-carousel-mark{margin-right:-2px}\n@media (max-width:800px){.interdata-plan-carousel{padding:12px 44px 16px}.interdata-plan-card{flex-basis:calc((100% - 12px)\/2)}.interdata-carousel-heading{font-size:16px}.interdata-carousel-prev{left:6px}.interdata-carousel-next{right:6px}}\n@media (max-width:480px){.interdata-plan-carousel{padding:12px 38px 16px}.interdata-plan-card{flex-basis:100%}.interdata-plan-price{font-size:23px}.interdata-carousel-arrow{width:34px;height:44px}.interdata-carousel-mark{font-size:32px!important}.interdata-carousel-prev{left:3px}.interdata-carousel-next{right:3px}}\n<\/style>\n\n<div class=\"interdata-plan-carousel\" data-interdata-carousel>\n  <div class=\"interdata-carousel-heading\">Si\u00eau \u01afu \u0110\u00e3i VPS \/ CLOUD SERVER - Ti\u1ebft Ki\u1ec7m \u0110\u1ebfn 70%<\/div>\n\n  <svg width=\"0\" height=\"0\" style=\"position:absolute;visibility:hidden\" aria-hidden=\"true\">\n    <symbol id=\"id-icon-cpu\" viewBox=\"0 0 24 24\"><rect x=\"7\" y=\"7\" width=\"10\" height=\"10\" rx=\"2\"><\/rect><path d=\"M4 9h3M4 15h3M17 9h3M17 15h3M9 4v3M15 4v3M9 17v3M15 17v3\"><\/path><path d=\"M10 10h4v4h-4z\"><\/path><\/symbol>\n    <symbol id=\"id-icon-ram\" viewBox=\"0 0 24 24\"><rect x=\"4\" y=\"8\" width=\"16\" height=\"8\" rx=\"2\"><\/rect><path d=\"M7 16v2M11 16v2M15 16v2M19 16v2M7 11h1M11 11h1M15 11h1\"><\/path><\/symbol>\n    <symbol id=\"id-icon-storage\" viewBox=\"0 0 24 24\"><rect x=\"6\" y=\"3\" width=\"12\" height=\"18\" rx=\"2\"><\/rect><path d=\"M9 7h6\"><\/path><circle cx=\"12\" cy=\"16\" r=\"1.5\"><\/circle><\/symbol>\n    <symbol id=\"id-icon-network\" viewBox=\"0 0 24 24\"><path d=\"M5 12.5a10 10 0 0 1 14 0\"><\/path><path d=\"M8.5 16a5 5 0 0 1 7 0\"><\/path><path d=\"M12 19h.01\"><\/path><\/symbol>\n    <symbol id=\"id-icon-gift\" viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"8\" width=\"18\" height=\"13\" rx=\"2\"><\/rect><path d=\"M12 8v13M3 12h18\"><\/path><path d=\"M7.5 8C6.1 8 5 6.9 5 5.5S6.1 3 7.5 3C10 3 12 8 12 8\"><\/path><path d=\"M16.5 8C17.9 8 19 6.9 19 5.5S17.9 3 16.5 3C14 3 12 8 12 8\"><\/path><\/symbol>\n  <\/svg>\n\n  <button class=\"interdata-carousel-arrow interdata-carousel-prev\" type=\"button\" aria-label=\"Xem 3 g\u00f3i tr\u01b0\u1edbc\" onclick=\"var r=this.closest('[data-interdata-carousel]');if(!r)return false;var t=r.querySelector('.interdata-plan-track'),c=t?t.querySelectorAll('.interdata-plan-card'):[];if(!t||!c.length)return false;var v=window.matchMedia('(max-width:480px)').matches?1:(window.matchMedia('(max-width:800px)').matches?2:3),m=Math.max(0,c.length-Math.min(v,c.length||1)),s=[],i=0;while(i&lt;m){s.push(i);i+=v}if(!s.length||s[s.length-1]!==m)s.push(m);var p=parseInt(r.getAttribute('data-inline-page')||'0',10);p=(p-1+s.length)%s.length;r.setAttribute('data-inline-page',p);var g=parseFloat(window.getComputedStyle(t).gap)||12,w=c[0].getBoundingClientRect().width;t.style.transition='transform .45s ease';t.style.transform='translate3d('+(-(w+g)*s[p])+'px,0,0)';return false;\">\n    <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M15 18l-6-6 6-6\"><\/path><\/svg>\n    <span class=\"interdata-carousel-mark\" aria-hidden=\"true\">&#8249;<\/span>\n  <\/button>\n\n  <div class=\"interdata-plan-viewport\">\n    <div class=\"interdata-plan-track\">\n      <!-- 7 card d\u1ef1 ph\u00f2ng: JavaScript s\u1ebd \u0111\u1ed3ng b\u1ed9 l\u1ea1i t\u1eeb API portal khi trang t\u1ea3i. -->\n      <article class=\"interdata-plan-card\" data-plan-pid=\"490\">\n        <h3 class=\"interdata-plan-title\">Premium Base<\/h3>\n        <div class=\"interdata-plan-price\">299.000 \u0111<span>\/3 th\u00e1ng<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>2 vCore Intel Xeon Scalable<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>2 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>30 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-value-plans-2026\/best-value-plans-premium-base\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"529\">\n        <h3 class=\"interdata-plan-title\">INTER PLATINUM 1<\/h3>\n        <div class=\"interdata-plan-price\">998.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>2 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>3 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>30 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/inter-platinum-series-2026\/inter-platinum-1\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"530\">\n        <h3 class=\"interdata-plan-title\">INTER PLATINUM 2<\/h3>\n        <div class=\"interdata-plan-price\">2.666.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>5 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>8 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>70 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/inter-platinum-series-2026\/inter-platinum-2\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"531\">\n        <h3 class=\"interdata-plan-title\">INTER PLATINUM 3<\/h3>\n        <div class=\"interdata-plan-price\">5.888.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>9 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>16 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>140 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/inter-platinum-series-2026\/inter-platinum-3\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"521\">\n        <h3 class=\"interdata-plan-title\">BD-Cloud 1<\/h3>\n        <div class=\"interdata-plan-price\">988.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>3 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>3 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>30 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-plan-real-cloud\/bd-cloud-1\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"522\">\n        <h3 class=\"interdata-plan-title\">BD-Cloud 2<\/h3>\n        <div class=\"interdata-plan-price\">2.988.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>4 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>8 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>80 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300 Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-plan-real-cloud\/bd-cloud-2\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"523\">\n        <h3 class=\"interdata-plan-title\">BD-Cloud 3<\/h3>\n        <div class=\"interdata-plan-price\">5.999.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>8 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>16 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>140 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>400 Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-plan-real-cloud\/bd-cloud-3\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n    <\/div>\n  <\/div>\n\n  <button class=\"interdata-carousel-arrow interdata-carousel-next\" type=\"button\" aria-label=\"Xem 3 g\u00f3i ti\u1ebfp theo\" onclick=\"var r=this.closest('[data-interdata-carousel]');if(!r)return false;var t=r.querySelector('.interdata-plan-track'),c=t?t.querySelectorAll('.interdata-plan-card'):[];if(!t||!c.length)return false;var v=window.matchMedia('(max-width:480px)').matches?1:(window.matchMedia('(max-width:800px)').matches?2:3),m=Math.max(0,c.length-Math.min(v,c.length||1)),s=[],i=0;while(i&lt;m){s.push(i);i+=v}if(!s.length||s[s.length-1]!==m)s.push(m);var p=parseInt(r.getAttribute('data-inline-page')||'0',10);p=(p+1)%s.length;r.setAttribute('data-inline-page',p);var g=parseFloat(window.getComputedStyle(t).gap)||12,w=c[0].getBoundingClientRect().width;t.style.transition='transform .45s ease';t.style.transform='translate3d('+(-(w+g)*s[p])+'px,0,0)';return false;\">\n    <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 18l6-6-6-6\"><\/path><\/svg>\n    <span class=\"interdata-carousel-mark\" aria-hidden=\"true\">&#8250;<\/span>\n  <\/button>\n<\/div>\n\n<script>\n(function(){\n  var API_GROUPS=[\n    {url:'https:\/\/support.interdata.vn\/packages.php?gid=89&module',pids:[490]},\n    {url:'https:\/\/support.interdata.vn\/packages.php?gid=100&module',pids:[529,530,531]},\n    {url:'https:\/\/support.interdata.vn\/packages.php?gid=97&module',pids:[521,522,523]}\n  ];\n  var PLAN_CYCLES={\n    490:{key:'quarterly',label:'3 th\u00e1ng'},\n    529:{key:'annually',label:'n\u0103m'},\n    530:{key:'annually',label:'n\u0103m'},\n    531:{key:'annually',label:'n\u0103m'},\n    521:{key:'annually',label:'n\u0103m'},\n    522:{key:'annually',label:'n\u0103m'},\n    523:{key:'annually',label:'n\u0103m'}\n  };\n\n  function fetchPlanData(){\n    if(window.interdataPlanApiPromise)return window.interdataPlanApiPromise;\n\n    window.interdataPlanApiPromise=Promise.all(API_GROUPS.map(function(group){\n      return fetch(group.url,{method:'GET',mode:'cors',cache:'no-store'})\n        .then(function(response){\n          if(!response.ok)throw new Error('API '+response.status);\n          return response.json();\n        })\n        .then(function(data){\n          if(!data||data.success!==true||!Array.isArray(data.products))return [];\n          return data.products.filter(function(product){\n            return group.pids.indexOf(Number(product.pid))!==-1;\n          });\n        })\n        .catch(function(error){\n          console.warn('Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt nh\u00f3m g\u00f3i InterData:',group.url,error);\n          return [];\n        });\n    })).then(function(groups){\n      return groups.reduce(function(all,products){return all.concat(products);},[]);\n    });\n\n    return window.interdataPlanApiPromise;\n  }\n\n  function parseDescription(html){\n    var source=String(html||'')\n      .replace(\/<brs*\/?>\/gi,'n')\n      .replace(\/<\/(p|div|li)>\/gi,'n');\n    var holder=document.createElement('div');\n    holder.innerHTML=source;\n    var strong=holder.querySelector('strong');\n    var badge=strong?strong.textContent.trim():'';\n    var lines=(holder.textContent||'').split(\/r?n\/).map(function(line){\n      return line.trim();\n    }).filter(Boolean);\n    if(badge&&lines[0]===badge)lines.shift();\n    return {badge:badge,features:lines};\n  }\n\n  function iconForFeature(feature){\n    if(\/ram\/i.test(feature))return 'id-icon-ram';\n    if(\/ssd|nvme|storage|disk\/i.test(feature))return 'id-icon-storage';\n    if(\/vcore|vcpu|cpu|xeon|amd\/i.test(feature))return 'id-icon-cpu';\n    if(\/ipv4|network|mbps|gbps|bandwidth\/i.test(feature))return 'id-icon-network';\n    return 'id-icon-gift';\n  }\n\n  function createFeatureItem(feature){\n    var item=document.createElement('li');\n    var icon=document.createElement('span');\n    var svg=document.createElementNS('http:\/\/www.w3.org\/2000\/svg','svg');\n    var use=document.createElementNS('http:\/\/www.w3.org\/2000\/svg','use');\n    icon.className='interdata-plan-icon';\n    use.setAttribute('href','#'+iconForFeature(feature));\n    svg.appendChild(use);\n    icon.appendChild(svg);\n    item.appendChild(icon);\n    item.appendChild(document.createTextNode(feature));\n    return item;\n  }\n\n  function updateCardFromApi(root,product){\n    var pid=Number(product.pid);\n    var cycle=PLAN_CYCLES[pid];\n    var card=root.querySelector('[data-plan-pid=\"'+pid+'\"]');\n    if(!card||!cycle)return;\n\n    var title=card.querySelector('.interdata-plan-title');\n    var priceBox=card.querySelector('.interdata-plan-price');\n    var badgeBox=card.querySelector('.interdata-plan-badge');\n    var featureList=card.querySelector('.interdata-plan-features');\n    var button=card.querySelector('.interdata-plan-button');\n    var description=parseDescription(product.description);\n    var pricing=product.pricing&&product.pricing.VND;\n    var price=pricing?Number(pricing[cycle.key]):-1;\n\n    if(title&&product.name)title.textContent=product.name;\n    if(priceBox&&Number.isFinite(price)&&price>=0){\n      priceBox.textContent=Math.round(price).toLocaleString('vi-VN')+' \u0111';\n      var suffix=document.createElement('span');\n      suffix.textContent='\/'+cycle.label;\n      priceBox.appendChild(suffix);\n    }\n    if(badgeBox&&description.badge)badgeBox.textContent=description.badge;\n    if(featureList&&description.features.length){\n      featureList.textContent='';\n      description.features.forEach(function(feature){\n        featureList.appendChild(createFeatureItem(feature));\n      });\n    }\n    if(button&&product.product_url)button.href=product.product_url;\n  }\n\n  function setupInterDataCarousel(root){\n    var track=root.querySelector('.interdata-plan-track');\n    var prev=root.querySelector('.interdata-carousel-prev');\n    var next=root.querySelector('.interdata-carousel-next');\n    if(!track||!prev||!next||track.dataset.ready==='1')return;\n    track.dataset.ready='1';\n    prev.disabled=false;\n    next.disabled=false;\n    var activePage=0;\n    var touchStartX=null;\n\n    function visibleCards(){\n      if(window.matchMedia&&window.matchMedia('(max-width:480px)').matches)return 1;\n      if(window.matchMedia&&window.matchMedia('(max-width:800px)').matches)return 2;\n      return 3;\n    }\n\n    function pageStarts(){\n      var total=track.querySelectorAll('.interdata-plan-card').length;\n      var visible=Math.min(visibleCards(),total||1);\n      var maxStart=Math.max(0,total-visible);\n      var starts=[];\n      var start=0;\n      while(start<maxStart){\n        starts.push(start);\n        start+=visible;\n      }\n      if(!starts.length||starts[starts.length-1]!==maxStart)starts.push(maxStart);\n      return starts;\n    }\n\n    function renderSlide(animate){\n      var cards=track.querySelectorAll('.interdata-plan-card');\n      var starts=pageStarts();\n      if(!cards.length||!starts.length)return;\n      if(activePage>=starts.length)activePage=starts.length-1;\n      if(activePage<0)activePage=0;\n\n      var cardWidth=cards[0].getBoundingClientRect().width;\n      var trackStyle=window.getComputedStyle?window.getComputedStyle(track):null;\n      var gap=trackStyle?parseFloat(trackStyle.columnGap||trackStyle.gap):12;\n      if(!Number.isFinite(gap))gap=12;\n      if(cardWidth<=0)return;\n\n      track.style.transition=animate?'transform .45s ease':'none';\n      track.style.transform='translate3d('+(-(cardWidth+gap)*starts[activePage])+'px,0,0)';\n      prev.setAttribute('aria-disabled',starts.length>1?'false':'true');\n      next.setAttribute('aria-disabled',starts.length>1?'false':'true');\n    }\n\n    function move(direction){\n      var starts=pageStarts();\n      if(starts.length<=1)return;\n      activePage=parseInt(root.getAttribute('data-inline-page')||activePage,10)||0;\n      activePage=(activePage+direction+starts.length)%starts.length;\n      root.setAttribute('data-inline-page',activePage);\n      renderSlide(true);\n    }\n\n    track.addEventListener('touchstart',function(event){\n      touchStartX=event.touches&&event.touches[0]?event.touches[0].clientX:null;\n    },{passive:true});\n    track.addEventListener('touchend',function(event){\n      if(touchStartX===null)return;\n      var endX=event.changedTouches&&event.changedTouches[0]?event.changedTouches[0].clientX:touchStartX;\n      var distance=endX-touchStartX;\n      touchStartX=null;\n      if(Math.abs(distance)>=40)move(distance<0?1:-1);\n    },{passive:true});\n\n    function resetAfterResize(){\n      activePage=0;\n      root.setAttribute('data-inline-page','0');\n      renderSlide(false);\n    }\n\n    window.addEventListener('resize',resetAfterResize);\n    window.addEventListener('load',resetAfterResize);\n    if('ResizeObserver' in window){\n      var resizeObserver=new ResizeObserver(function(){renderSlide(false);});\n      resizeObserver.observe(root);\n    }\n    window.requestAnimationFrame(function(){renderSlide(false);});\n    window.setTimeout(function(){renderSlide(false);},250);\n    window.setTimeout(function(){renderSlide(false);},1000);\n\n    fetchPlanData().then(function(products){\n      products.forEach(function(product){updateCardFromApi(root,product);});\n      renderSlide(false);\n    });\n  }\n\n  function initInterDataCarousels(){\n    document.querySelectorAll('[data-interdata-carousel]').forEach(setupInterDataCarousel);\n  }\n\n  if(document.readyState==='loading'){\n    document.addEventListener('DOMContentLoaded',initInterDataCarousels);\n  }else{\n    initInterDataCarousels();\n  }\n\n  if('MutationObserver' in window){\n    var initQueued=false;\n    new MutationObserver(function(){\n      if(initQueued)return;\n      initQueued=true;\n      window.requestAnimationFrame(function(){\n        initQueued=false;\n        initInterDataCarousels();\n      });\n    }).observe(document.documentElement,{childList:true,subtree:true});\n  }\n})();\n<\/script>\n\n\t<div id=\"gap-1713381324\" class=\"gap-element clearfix\" style=\"display:block; height:auto;\">\n\t\t\n<style>\n#gap-1713381324 {\n  padding-top: 15px;\n}\n<\/style>\n\t<\/div>\n\t\n<p><!-- ======================== SECTION 1 ======================== --><\/p>\n<h2 id=\"section1\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">MCP Server EzyPlatform l\u00e0 g\u00ec? V\u00ec sao Code Editor c\u1ea7n k\u1ebft n\u1ed1i?<\/h2>\n<p style=\"text-align: justify;\">MCP Server EzyPlatform l\u00e0 l\u1edbp giao ti\u1ebfp d\u1ef1a tr\u00ean Model Context Protocol, cho ph\u00e9p AI assistant trong Code Editor truy v\u1ea5n tr\u1ef1c ti\u1ebfp d\u1eef li\u1ec7u th\u1eadt tr\u00ean h\u1ec7 th\u1ed1ng <a href=\"https:\/\/interdata.vn\/blog\/ezyplatform-vibe-coding\/\">EzyPlatform<\/a> \u2014 b\u00e0i vi\u1ebft, danh m\u1ee5c, template, c\u1ea5u h\u00ecnh \u2014 thay v\u00ec vi\u1ebft code d\u1ef1a tr\u00ean ph\u1ecfng \u0111o\u00e1n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-42904\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/07\/MCP-Server-la-gi.jpg\" alt=\"MCP Server l\u00e0 g\u00ec?\" width=\"700\" height=\"467\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/07\/MCP-Server-la-gi.jpg 700w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/07\/MCP-Server-la-gi-300x200.jpg 300w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/p>\n<p style=\"text-align: justify;\">Khi b\u1ea1n th\u1ef1c h\u00e0nh <a href=\"https:\/\/interdata.vn\/blog\/vibe-coding-la-gi\/\">Vibe Coding<\/a> tr\u00ean EzyPlatform, AI c\u1ea7n hi\u1ec3u c\u1ea5u tr\u00fac d\u1eef li\u1ec7u th\u1eadt \u0111ang ch\u1ea1y tr\u00ean server: b\u1ea3ng n\u00e0o c\u00f3 tr\u01b0\u1eddng g\u00ec, fetcher n\u00e0o \u0111\u00e3 t\u1ed3n t\u1ea1i, event handler n\u00e0o \u0111ang ho\u1ea1t \u0111\u1ed9ng. Kh\u00f4ng c\u00f3 k\u1ebft n\u1ed1i MCP, AI ch\u1ec9 sinh code m\u1eabu chung chung. C\u00f3 MCP, AI truy v\u1ea5n schema, \u0111\u1ecdc d\u1eef li\u1ec7u, t\u1ea1o fetcher v\u00e0 event handler \u2014 t\u1ea5t c\u1ea3 qua giao di\u1ec7n Code Editor quen thu\u1ed9c.<\/p>\n<p style=\"text-align: justify;\">MCP Server EzyPlatform ho\u1ea1t \u0111\u1ed9ng qua endpoint GraphQL t\u1ea1i \u0111\u01b0\u1eddng d\u1eabn <code>\/graphql\/mcp<\/code> tr\u00ean admin URL. K\u1ebft n\u1ed1i \u0111\u01b0\u1ee3c x\u00e1c th\u1ef1c b\u1eb1ng access token, ngh\u0129a l\u00e0 AI ch\u1ec9 truy c\u1eadp d\u1eef li\u1ec7u trong ph\u1ea1m vi quy\u1ec1n b\u1ea1n c\u1ea5p. \u0110\u00e2y l\u00e0 \u0111i\u1ec3m kh\u00e1c bi\u1ec7t l\u1edbn so v\u1edbi vi\u1ec7c g\u1ecdi API th\u1ee7 c\u00f4ng: AI t\u1ef1 kh\u00e1m ph\u00e1 danh s\u00e1ch tool c\u00f3 s\u1eb5n, t\u1ef1 ch\u1ecdn tool ph\u00f9 h\u1ee3p v\u00e0 th\u1ef1c thi \u2014 b\u1ea1n ch\u1ec9 c\u1ea7n m\u00f4 t\u1ea3 b\u1eb1ng ng\u00f4n ng\u1eef t\u1ef1 nhi\u00ean.<\/p>\n<p><!-- BOX CTA #1 \u2014 VPS VIBE CODING --><\/p>\n<div style=\"display: flex; flex-wrap: wrap; background-color: #fff; border: 1.5px solid #BFDBFE; box-shadow: 0 8px 20px rgba(37,99,235,0.08); border-radius: 12px; overflow: hidden; margin: 35px 0;\">\n<div style=\"flex: 1; min-width: 250px; background: linear-gradient(135deg, #1E3A8A 0%, #2563EB 100%); display: flex; align-items: center; justify-content: center; padding: 30px; text-align: center;\">\n<div>\n<p style=\"color: #fff; font-size: 34px; font-family: 'Be Vietnam Pro', sans-serif; font-weight: bold; margin: 0; line-height: 1.1;\">VPS Vibe Coding<\/p>\n<p style=\"color: #dbeafe; font-size: 15px; font-weight: 600; margin-top: 12px;\">EzyPlatform t\u00edch h\u1ee3p s\u1eb5n, MCP Server \u0111\u00e3 c\u1ea5u h\u00ecnh<\/p>\n<\/div>\n<\/div>\n<div style=\"flex: 2; padding: 25px; min-width: 300px;\">\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; margin-top: 0; font-size: 20px;\">Mu\u1ed1n b\u1eaft \u0111\u1ea7u Vibe Coding ngay m\u00e0 kh\u00f4ng t\u1ef1 c\u00e0i \u0111\u1eb7t h\u1ea1 t\u1ea7ng?<\/h3>\n<p style=\"text-align: justify; font-size: 15px; margin-bottom: 15px;\">G\u00f3i <strong>VPS Vibe Coding<\/strong> c\u1ee7a InterData \u0111\u00e3 t\u00edch h\u1ee3p s\u1eb5n EzyPlatform, t\u1ef1 \u0111\u1ed9ng c\u00e0i \u0111\u1eb7t plugin GraphQL v\u00e0 MCP Server ngay khi kh\u1edfi t\u1ea1o. B\u1ea1n ch\u1ec9 c\u1ea7n t\u1ea1o file <code>.mcp.json<\/code> trong Code Editor theo h\u01b0\u1edbng d\u1eabn b\u00ean d\u01b0\u1edbi l\u00e0 k\u1ebft n\u1ed1i \u0111\u01b0\u1ee3c ngay \u2014 b\u1ecf qua to\u00e0n b\u1ed9 b\u01b0\u1edbc c\u00e0i \u0111\u1eb7t server, database v\u00e0 plugin t\u1eeb \u0111\u1ea7u.<\/p>\n<p><a style=\"background: linear-gradient(90deg, #2563EB 0%, #1E3A8A 100%); color: #fff; padding: 12px 25px; text-decoration: none; font-weight: 600; border-radius: 8px; font-size: 15px; display: inline-block; box-shadow: 0 5px 15px rgba(37,99,235,0.3);\" href=\"https:\/\/interdata.vn\/vps-vibe-coding\/\" target=\"_blank\" rel=\"noopener\">Xem g\u00f3i VPS Vibe Coding \u27f6<\/a><\/p>\n<\/div>\n<\/div>\n<p><!-- ======================== SECTION 2 ======================== --><\/p>\n<h2 id=\"section2\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">\u0110i\u1ec1u ki\u1ec7n ti\u00ean quy\u1ebft tr\u01b0\u1edbc khi k\u1ebft n\u1ed1i MCP Server EzyPlatform<\/h2>\n<p style=\"text-align: justify;\">Tr\u01b0\u1edbc khi t\u1ea1o file c\u1ea5u h\u00ecnh MCP, b\u1ea1n c\u1ea7n \u0111\u1ea3m b\u1ea3o h\u1ec7 th\u1ed1ng \u0111\u00e3 s\u1eb5n s\u00e0ng. Thi\u1ebfu m\u1ed9t m\u1ee5c trong danh s\u00e1ch d\u01b0\u1edbi \u0111\u00e2y s\u1ebd khi\u1ebfn k\u1ebft n\u1ed1i th\u1ea5t b\u1ea1i ho\u1eb7c AI kh\u00f4ng nh\u1eadn \u0111\u01b0\u1ee3c tool n\u00e0o.<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 15px;\">\n<thead>\n<tr style=\"background-color: #1e3a8a; color: #fff;\">\n<th style=\"padding: 12px 15px; text-align: left; border: 1px solid #BFDBFE;\">Y\u00eau c\u1ea7u<\/th>\n<th style=\"padding: 12px 15px; text-align: left; border: 1px solid #BFDBFE;\">Chi ti\u1ebft<\/th>\n<th style=\"padding: 12px 15px; text-align: center; border: 1px solid #BFDBFE;\">Ki\u1ec3m tra<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">EzyPlatform \u0111\u00e3 c\u00e0i \u0111\u1eb7t<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">Tr\u00ean <a href=\"https:\/\/interdata.vn\/blog\/vps-la-gi\/\">VPS<\/a>, Cloud Server ho\u1eb7c localhost. C\u1ea7n domain + SSL cho k\u1ebft n\u1ed1i t\u1eeb xa.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">Truy c\u1eadp admin panel th\u00e0nh c\u00f4ng<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">Plugin GraphQL \u0111\u00e3 c\u00e0i<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">MCP Server ch\u1ea1y qua endpoint GraphQL. Kh\u00f4ng c\u00f3 plugin n\u00e0y = kh\u00f4ng c\u00f3 MCP.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">M\u1ee5c GraphQL xu\u1ea5t hi\u1ec7n trong admin<\/td>\n<\/tr>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">Plugin EzyArticle, EzySupport, Freestyle<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">EzyArticle l\u01b0u fetcher\/event handler d\u01b0\u1edbi d\u1ea1ng b\u00e0i vi\u1ebft. EzySupport v\u00e0 Freestyle m\u1edf r\u1ed9ng kh\u1ea3 n\u0103ng t\u00f9y ch\u1ec9nh.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">Xu\u1ea5t hi\u1ec7n trong danh s\u00e1ch plugin admin<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">Access token admin<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">L\u1ea5y t\u1ea1i <code>{admin_url}\/admins\/me<\/code> \u2192 m\u1ee5c Access Token. Token x\u00e1c th\u1ef1c quy\u1ec1n AI truy c\u1eadp d\u1eef li\u1ec7u.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">Copy token th\u00e0nh c\u00f4ng<\/td>\n<\/tr>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">Code Editor h\u1ed7 tr\u1ee3 MCP<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\"><a href=\"https:\/\/interdata.vn\/blog\/vs-code-la-gi\/\">VS Code<\/a>, <a href=\"https:\/\/interdata.vn\/blog\/cong-cu-cursor-ai-la-gi\/\">Cursor AI<\/a>, Windsurf, <a href=\"https:\/\/interdata.vn\/blog\/cline-la-gi\/\">Cline<\/a> \u2014 xem b\u1ea3ng so s\u00e1nh \u1edf m\u1ee5c ti\u1ebfp theo.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">Editor \u0111\u00e3 c\u00e0i + AI assistant ho\u1ea1t \u0111\u1ed9ng<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">File environment.json (khuy\u00ean d\u00f9ng)<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">L\u01b0u th\u00f4ng tin k\u1ebft n\u1ed1i EzyPlatform cho VS Code extension. AI c\u00f3 th\u1ec3 t\u1ef1 \u0111\u1ecdc file n\u00e0y \u0111\u1ec3 t\u1ea1o <code>.mcp.json<\/code>.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">File t\u1ed3n t\u1ea1i trong th\u01b0 m\u1ee5c d\u1ef1 \u00e1n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify;\">File <code>environment.json<\/code> c\u00f3 c\u1ea5u tr\u00fac nh\u01b0 sau (theo t\u00e0i li\u1ec7u Ch\u01b0\u01a1ng 3 c\u1ee7a EzyPlatform):<\/p>\n<pre><code>[\r\n  {\r\n    \"name\": \"production\",\r\n    \"default\": true,\r\n    \"admin_url\": \"\",\r\n    \"admin_access_token\": \"\"\r\n  },\r\n  {\r\n    \"name\": \"beta\",\r\n    \"admin_url\": \"\",\r\n    \"admin_access_token\": \"\",\r\n    \"notes\": \"This environment is optional and can be removed if not available.\"\r\n  }\r\n]\r\n<\/code><\/pre>\n<ul style=\"margin: 15px 0; padding-left: 20px;\">\n<li style=\"margin-bottom: 8px;\"><code>name<\/code>: t\u00ean m\u00f4i tr\u01b0\u1eddng, th\u01b0\u1eddng \u0111\u1eb7t &#8220;production&#8221; ho\u1eb7c &#8220;staging&#8221;.<\/li>\n<li style=\"margin-bottom: 8px;\"><code>admin_url<\/code>: URL admin panel EzyPlatform (c\u00f3 HTTPS).<\/li>\n<li style=\"margin-bottom: 8px;\"><code>admin_access_token<\/code>: token l\u1ea5y t\u1eeb trang qu\u1ea3n tr\u1ecb t\u00e0i kho\u1ea3n admin.<\/li>\n<li style=\"margin-bottom: 8px;\"><code>default<\/code>: \u0111\u1eb7t <code>true<\/code> \u0111\u1ec3 AI t\u1ef1 ch\u1ecdn m\u00f4i tr\u01b0\u1eddng n\u00e0y khi k\u1ebft n\u1ed1i.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43140\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Thiet-lap-file-environment_json.png\" alt=\"Thi\u1ebft l\u1eadp file environment.json\" width=\"800\" height=\"374\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Thiet-lap-file-environment_json.png 877w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Thiet-lap-file-environment_json-300x140.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Thiet-lap-file-environment_json-768x359.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><!-- ======================== SECTION 3 ======================== --><\/p>\n<h2 id=\"section3\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">Code Editor n\u00e0o h\u1ed7 tr\u1ee3 MCP Server EzyPlatform?<\/h2>\n<p style=\"text-align: justify;\">MCP Server EzyPlatform s\u1eed d\u1ee5ng giao th\u1ee9c HTTP chu\u1ea9n (Model Context Protocol), n\u00ean b\u1ea5t k\u1ef3 Code Editor n\u00e0o h\u1ed7 tr\u1ee3 MCP \u0111\u1ec1u k\u1ebft n\u1ed1i \u0111\u01b0\u1ee3c. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 4 editor ph\u1ed5 bi\u1ebfn nh\u1ea5t trong c\u1ed9ng \u0111\u1ed3ng <a href=\"https:\/\/interdata.vn\/blog\/cong-cu-ai-viet-code\/\">AI vi\u1ebft code<\/a> hi\u1ec7n nay, c\u00f9ng m\u1ee9c \u0111\u1ed9 ph\u00f9 h\u1ee3p khi d\u00f9ng v\u1edbi EzyPlatform.<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 15px;\">\n<thead>\n<tr style=\"background-color: #1e3a8a; color: #fff;\">\n<th style=\"padding: 12px 15px; text-align: left; border: 1px solid #BFDBFE;\">Code Editor<\/th>\n<th style=\"padding: 12px 15px; text-align: left; border: 1px solid #BFDBFE;\">H\u1ed7 tr\u1ee3 MCP<\/th>\n<th style=\"padding: 12px 15px; text-align: left; border: 1px solid #BFDBFE;\">File c\u1ea5u h\u00ecnh MCP<\/th>\n<th style=\"padding: 12px 15px; text-align: left; border: 1px solid #BFDBFE;\">Ghi ch\u00fa v\u1edbi EzyPlatform<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">VS Code + Claude Code \/ Codex<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">C\u00f3 (qua AI assistant CLI)<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\"><code>.mcp.json<\/code> trong th\u01b0 m\u1ee5c d\u1ef1 \u00e1n<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">Editor ch\u00ednh \u0111\u01b0\u1ee3c t\u00e0i li\u1ec7u EzyPlatform h\u01b0\u1edbng d\u1eabn. C\u00f3 extension EzyArticle \u0111\u1ed3ng b\u1ed9 n\u1ed9i dung.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">Cursor AI<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">C\u00f3 (t\u00edch h\u1ee3p s\u1eb5n)<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\"><code>.cursor\/mcp.json<\/code> ho\u1eb7c c\u1ea5u h\u00ecnh trong Settings<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">C\u00fa ph\u00e1p JSON t\u01b0\u01a1ng t\u1ef1, \u0111\u1eb7t trong th\u01b0 m\u1ee5c <code>.cursor<\/code>. Kh\u00f4ng c\u00f3 extension EzyArticle ri\u00eang.<\/td>\n<\/tr>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">Windsurf<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">C\u00f3 (qua Cascade)<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\"><code>~\/.codeium\/windsurf\/mcp_config.json<\/code> ho\u1eb7c c\u1ea5u h\u00ecnh trong Settings<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">File c\u1ea5u h\u00ecnh MCP \u0111\u1eb7t \u1edf th\u01b0 m\u1ee5c global. C\u00fa ph\u00e1p JSON gi\u1ed1ng nhau, kh\u00e1c v\u1ecb tr\u00ed l\u01b0u.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">Cline (VS Code extension)<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">C\u00f3 (t\u00edch h\u1ee3p s\u1eb5n)<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">C\u1ea5u h\u00ecnh trong giao di\u1ec7n Cline Settings \u2192 MCP Servers<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">Th\u00eam MCP Server qua UI, \u0111i\u1ec1n URL v\u00e0 header. Ch\u1ea1y tr\u00ean VS Code n\u00ean v\u1eabn d\u00f9ng \u0111\u01b0\u1ee3c extension EzyArticle.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify;\"><strong>Khuy\u1ebfn ngh\u1ecb:<\/strong> n\u1ebfu m\u1edbi b\u1eaft \u0111\u1ea7u, d\u00f9ng <strong>VS Code + Claude Code<\/strong> v\u00ec \u0111\u00e2y l\u00e0 t\u1ed5 h\u1ee3p \u0111\u01b0\u1ee3c t\u00e0i li\u1ec7u EzyPlatform h\u01b0\u1edbng d\u1eabn tr\u1ef1c ti\u1ebfp. Cursor v\u00e0 Windsurf \u00e1p d\u1ee5ng c\u00f9ng nguy\u00ean l\u00fd, ch\u1ec9 kh\u00e1c v\u1ecb tr\u00ed \u0111\u1eb7t file c\u1ea5u h\u00ecnh \u2014 s\u1ebd tr\u00ecnh b\u00e0y chi ti\u1ebft \u1edf m\u1ee5c 5.<\/p>\n<p><!-- ======================== SECTION 4 ======================== --><\/p>\n<h2 id=\"section4\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">H\u01b0\u1edbng d\u1eabn t\u1eebng b\u01b0\u1edbc k\u1ebft n\u1ed1i Code Editor t\u1edbi MCP Server EzyPlatform<\/h2>\n<p style=\"text-align: justify;\">Quy tr\u00ecnh g\u1ed3m 3 b\u01b0\u1edbc ch\u00ednh, theo t\u00e0i li\u1ec7u <a href=\"https:\/\/ezyplatform.com\/blog\/chuong-9-mcp-server\" target=\"_blank\" rel=\"noopener\">Ch\u01b0\u01a1ng 9 \u2014 MCP Server<\/a> c\u1ee7a EzyPlatform. M\u1ed7i b\u01b0\u1edbc \u0111\u1ec1u c\u00f3 code block c\u1ea5u h\u00ecnh th\u1eadt \u0111\u1ec3 b\u1ea1n copy v\u00e0 \u0111i\u1ec1n th\u00f4ng tin c\u1ee7a m\u00ecnh.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: 600; margin: 30px 0 15px;\">B\u01b0\u1edbc 1: C\u1ea5u h\u00ecnh packages_to_scan tr\u00ean admin EzyPlatform<\/h3>\n<p style=\"text-align: justify;\">M\u1ee5c \u0111\u00edch: khai b\u00e1o cho plugin GraphQL bi\u1ebft c\u1ea7n qu\u00e9t nh\u1eefng package n\u00e0o \u0111\u1ec3 t\u1ea1o endpoint MCP.<\/p>\n<p>1\/ \u0110\u0103ng nh\u1eadp admin panel EzyPlatform.<\/p>\n<p>2\/ V\u00e0o <strong>GraphQL \u2192 C\u00e0i \u0111\u1eb7t<\/strong> (Settings).<\/p>\n<p>3\/ D\u00e1n \u0111o\u1ea1n c\u1ea5u h\u00ecnh sau v\u00e0o tr\u01b0\u1eddng Configuration:<\/p>\n<pre><code>graphql.packages_to_scan=org.youngmonkeys.ezyarticle.web.controller.view,\r\norg.youngmonkeys.ezyarticle.web.controller.api,\r\norg.youngmonkeys.ecommerce.web.controller.view,\r\norg.youngmonkeys.ecommerce.web.controller.api<\/code><\/pre>\n<ul>\n<li>C\u1ea5u h\u00ecnh n\u00e0y cho GraphQL bi\u1ebft qu\u00e9t controller c\u1ee7a EzyArticle v\u00e0 EzyCommerce \u0111\u1ec3 t\u1ea1o c\u00e1c tool MCP t\u01b0\u01a1ng \u1ee9ng.<\/li>\n<li>N\u1ebfu b\u1ea1n ch\u1ec9 d\u00f9ng EzyArticle (kh\u00f4ng d\u00f9ng EzyCommerce), v\u1eabn n\u00ean gi\u1eef nguy\u00ean c\u1ea5u h\u00ecnh tr\u00ean \u2014 c\u00e1c package kh\u00f4ng t\u1ed3n t\u1ea1i s\u1ebd \u0111\u01b0\u1ee3c b\u1ecf qua.<\/li>\n<\/ul>\n<p>4\/ Nh\u1ea5n <strong>L\u01b0u<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43224\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Cau-hinh-packages_to_scan-tren-admin-EzyPlatform-1.png\" alt=\"C\u1ea5u h\u00ecnh packages_to_scan tr\u00ean admin EzyPlatform 1\" width=\"800\" height=\"377\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Cau-hinh-packages_to_scan-tren-admin-EzyPlatform-1.png 1705w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Cau-hinh-packages_to_scan-tren-admin-EzyPlatform-1-300x141.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Cau-hinh-packages_to_scan-tren-admin-EzyPlatform-1-1024x482.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Cau-hinh-packages_to_scan-tren-admin-EzyPlatform-1-768x362.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Cau-hinh-packages_to_scan-tren-admin-EzyPlatform-1-1536x723.png 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>5\/ Quay v\u1ec1 <strong>Dashboard \u2192 Web<\/strong>, nh\u1ea5n <strong>Kh\u1edfi \u0111\u1ed9ng l\u1ea1i<\/strong> (Restart) \u0111\u1ec3 \u00e1p d\u1ee5ng c\u1ea5u h\u00ecnh m\u1edbi.<\/p>\n<p style=\"text-align: justify;\"><strong>L\u01b0u \u00fd quan tr\u1ecdng:<\/strong> Kh\u1edfi \u0111\u1ed9ng l\u1ea1i Web l\u00e0 b\u1eaft bu\u1ed9c. N\u1ebfu b\u1ecf qua b\u01b0\u1edbc n\u00e0y, endpoint <code>\/graphql\/mcp<\/code> ch\u01b0a \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t v\u00e0 Code Editor s\u1ebd kh\u00f4ng k\u1ebft n\u1ed1i \u0111\u01b0\u1ee3c.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43225\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Cau-hinh-packages_to_scan-tren-admin-EzyPlatform-2.png\" alt=\"C\u1ea5u h\u00ecnh packages_to_scan tr\u00ean admin EzyPlatform 2\" width=\"800\" height=\"308\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Cau-hinh-packages_to_scan-tren-admin-EzyPlatform-2.png 1906w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Cau-hinh-packages_to_scan-tren-admin-EzyPlatform-2-300x116.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Cau-hinh-packages_to_scan-tren-admin-EzyPlatform-2-1024x395.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Cau-hinh-packages_to_scan-tren-admin-EzyPlatform-2-768x296.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Cau-hinh-packages_to_scan-tren-admin-EzyPlatform-2-1536x592.png 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: 600; margin: 30px 0 15px;\">B\u01b0\u1edbc 2: T\u1ea1o file .mcp.json trong th\u01b0 m\u1ee5c d\u1ef1 \u00e1n<\/h3>\n<p style=\"text-align: justify;\">File <code>.mcp.json<\/code> n\u1eb1m \u1edf th\u01b0 m\u1ee5c g\u1ed1c d\u1ef1 \u00e1n, ch\u1ee9a th\u00f4ng tin k\u1ebft n\u1ed1i \u0111\u1ec3 AI assistant t\u00ecm v\u00e0 giao ti\u1ebfp v\u1edbi MCP Server. \u0110\u00e2y l\u00e0 c\u00fa ph\u00e1p chu\u1ea9n cho VS Code + Claude Code \/ Codex (theo t\u00e0i li\u1ec7u Ch\u01b0\u01a1ng 9):<\/p>\n<pre><code>{\r\n  \"mcpServers\": {\r\n    \"{domain_name}\": {\r\n      \"type\": \"http\",\r\n      \"url\": \"{admin_url}\/graphql\/mcp\",\r\n      \"headers\": {\r\n        \"Authorization\": \"Bearer {admin_access_token}\"\r\n      }\r\n    }\r\n  }\r\n}<\/code><\/pre>\n<p style=\"text-align: justify;\">Gi\u1ea3i ngh\u0129a t\u1eebng tr\u01b0\u1eddng:<\/p>\n<ul style=\"margin: 15px 0; padding-left: 20px;\">\n<li style=\"margin-bottom: 8px;\"><code>{domain_name}<\/code>: t\u00ean \u0111\u1ecbnh danh MCP Server, th\u01b0\u1eddng d\u00f9ng t\u00ean domain admin. V\u00ed d\u1ee5: <code>freestyle-admin.ezyplatform.com<\/code>. B\u1ea1n s\u1ebd d\u00f9ng t\u00ean n\u00e0y \u0111\u1ec3 ki\u1ec3m tra k\u1ebft n\u1ed1i \u1edf B\u01b0\u1edbc 3.<\/li>\n<li style=\"margin-bottom: 8px;\"><code>\"type\": \"http\"<\/code>: giao th\u1ee9c k\u1ebft n\u1ed1i. EzyPlatform MCP d\u00f9ng HTTP transport.<\/li>\n<li style=\"margin-bottom: 8px;\"><code>{admin_url}\/graphql\/mcp<\/code>: endpoint MCP tr\u00ean admin panel. V\u00ed d\u1ee5: <code>https:\/\/freestyle-admin.ezyplatform.com\/graphql\/mcp<\/code>.<\/li>\n<li style=\"margin-bottom: 8px;\"><code>Bearer {admin_access_token}<\/code>: token x\u00e1c th\u1ef1c, l\u1ea5y t\u1eeb trang <code>\/admins\/me<\/code> trong admin.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><strong>V\u00ed d\u1ee5 th\u1ef1c t\u1ebf<\/strong> v\u1edbi domain <code>1576647146-admin.interdata.io.vn<\/code>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-43226\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/file_mcp_json.png\" alt=\"T\u1ea1o file .mcp.json trong th\u01b0 m\u1ee5c d\u1ef1 \u00e1n\" width=\"776\" height=\"356\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/file_mcp_json.png 776w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/file_mcp_json-300x138.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/file_mcp_json-768x352.png 768w\" sizes=\"auto, (max-width: 776px) 100vw, 776px\" \/><\/p>\n<p style=\"text-align: justify;\">N\u1ebfu b\u1ea1n \u0111\u00e3 c\u00f3 file <code>environment.json<\/code> trong d\u1ef1 \u00e1n, AI assistant (Claude Code ho\u1eb7c Codex) c\u00f3 th\u1ec3 t\u1ef1 \u0111\u1ecdc file \u0111\u00f3 v\u00e0 t\u1ea1o <code>.mcp.json<\/code> t\u1ef1 \u0111\u1ed9ng. B\u1ea1n ch\u1ec9 c\u1ea7n y\u00eau c\u1ea7u nh\u01b0 sau:<\/p>\n<pre><code>L\u01b0u th\u00f4ng tin mcp server gi\u00fap t\u00f4i v\u00e0o d\u1ef1 \u00e1n n\u00e0y v\u1edbi c\u00fa ph\u00e1p:\r\n{\r\n  \"mcpServers\": {\r\n    \"{t\u00ean mi\u1ec1n c\u1ee7a admin_url m\u1eb7c \u0111\u1ecbnh l\u1ea5y t\u1eeb t\u1eadp tin environment.json}\": {\r\n      \"type\": \"http\",\r\n      \"url\": \"{admin_url m\u1eb7c \u0111\u1ecbnh l\u1ea5y t\u1eeb t\u1eadp tin environment.json}\/graphql\/mcp\",\r\n      \"headers\": {\r\n        \"Authorization\": \"Bearer {admin_access_token m\u1eb7c \u0111\u1ecbnh l\u1ea5y t\u1eeb t\u1eadp tin environment.json}\"\r\n      }\r\n    }\r\n  }\r\n}<\/code><\/pre>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: 600; margin: 30px 0 15px;\">B\u01b0\u1edbc 3: Ki\u1ec3m tra k\u1ebft n\u1ed1i MCP Server EzyPlatform<\/h3>\n<p style=\"text-align: justify;\">Sau khi t\u1ea1o file <code>.mcp.json<\/code>, m\u1edf m\u1ed9t phi\u00ean chat m\u1edbi v\u1edbi AI assistant trong Code Editor (quan tr\u1ecdng: ph\u1ea3i l\u00e0 phi\u00ean m\u1edbi \u0111\u1ec3 AI \u0111\u1ecdc l\u1ea1i file c\u1ea5u h\u00ecnh). G\u00f5 c\u00e2u h\u1ecfi ki\u1ec3m tra:<\/p>\n<pre><code>B\u1ea1n k\u1ebft n\u1ed1i \u0111\u01b0\u1ee3c \u0111\u1ebfn mcp server {domain_name} ch\u1ee9?<\/code><\/pre>\n<p style=\"text-align: justify;\">Thay <code>{domain_name}<\/code> b\u1eb1ng t\u00ean b\u1ea1n \u0111\u00e3 \u0111\u1eb7t trong file <code>.mcp.json<\/code>. N\u1ebfu AI tr\u1ea3 l\u1eddi x\u00e1c nh\u1eadn k\u1ebft n\u1ed1i th\u00e0nh c\u00f4ng v\u00e0 li\u1ec7t k\u00ea \u0111\u01b0\u1ee3c danh s\u00e1ch tool \u2014 b\u1ea1n \u0111\u00e3 ho\u00e0n t\u1ea5t.<\/p>\n<p style=\"text-align: justify;\">N\u1ebfu k\u1ebft n\u1ed1i th\u1ea5t b\u1ea1i, xem b\u1ea3ng x\u1eed l\u00fd l\u1ed7i \u1edf <a href=\"#section7\">m\u1ee5c 7<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-43227\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Kiem-tra-ket-noi-MCP-Server-EzyPlatform.png\" alt=\"Ki\u1ec3m tra k\u1ebft n\u1ed1i MCP Server EzyPlatform\" width=\"786\" height=\"597\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Kiem-tra-ket-noi-MCP-Server-EzyPlatform.png 786w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Kiem-tra-ket-noi-MCP-Server-EzyPlatform-300x228.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Kiem-tra-ket-noi-MCP-Server-EzyPlatform-768x583.png 768w\" sizes=\"auto, (max-width: 786px) 100vw, 786px\" \/><\/p>\n<p><!-- BOX CTA #2 \u2014 CANH ME --><\/p>\n<div style=\"background: linear-gradient(135deg, #EFF6FF 0%, #DBEAFE 100%); border: 1.5px solid #2563EB; border-radius: 12px; padding: 28px; margin: 35px 0; text-align: center;\">\n<p style=\"font-family: 'Be Vietnam Pro', sans-serif; font-size: 22px; font-weight: bold; color: #1e3a8a; margin: 0 0 8px;\">S\u0103n deal VPS &amp; Cloud Server tr\u01b0\u1edbc khi ch\u1ed1t g\u00f3i<\/p>\n<p style=\"font-size: 15px; color: #4b5563; margin-bottom: 20px;\">Tr\u01b0\u1edbc khi ch\u1ecdn g\u00f3i VPS, h\u00e3y gh\u00e9 <strong>Canh Me<\/strong> xem Hot Deals, khuy\u1ebfn m\u00e3i v\u00e0 m\u00e3 gi\u1ea3m gi\u00e1 m\u1edbi nh\u1ea5t \u2014 ch\u1ecdn c\u1ea5u h\u00ecnh ph\u00f9 h\u1ee3p v\u1edbi chi ph\u00ed t\u1ed1t nh\u1ea5t.<\/p>\n<p><a style=\"background: #2563EB; color: #fff; padding: 12px 30px; text-decoration: none; font-weight: 600; border-radius: 8px; display: inline-block;\" href=\"https:\/\/interdata.vn\/canhme\/\" target=\"_blank\" rel=\"noopener\">Xem hot deal t\u1ea1i Canh Me \u27f6<\/a><\/p>\n<\/div>\n<p><!-- ======================== SECTION 5 ======================== --><\/p>\n<h2 id=\"section5\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">C\u1ea5u h\u00ecnh MCP Server EzyPlatform cho t\u1eebng Code Editor<\/h2>\n<p style=\"text-align: justify;\">Ph\u1ea7n tr\u00ean h\u01b0\u1edbng d\u1eabn theo t\u00e0i li\u1ec7u ch\u00ednh th\u1ee9c EzyPlatform, s\u1eed d\u1ee5ng VS Code + Claude Code \/ Codex. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 c\u00e1ch \u00e1p d\u1ee5ng t\u01b0\u01a1ng t\u1ef1 cho Cursor v\u00e0 Windsurf. N\u1ed9i dung JSON k\u1ebft n\u1ed1i gi\u1ed1ng nhau \u2014 ch\u1ec9 kh\u00e1c v\u1ecb tr\u00ed \u0111\u1eb7t file v\u00e0 c\u00fa ph\u00e1p \u0111\u1eb7c th\u00f9 c\u1ee7a t\u1eebng editor.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: 600; margin: 30px 0 15px;\">VS Code (theo t\u00e0i li\u1ec7u ch\u00ednh th\u1ee9c)<\/h3>\n<p style=\"text-align: justify;\">T\u1ea1o file <code>.mcp.json<\/code> \u1edf th\u01b0 m\u1ee5c g\u1ed1c d\u1ef1 \u00e1n. Claude Code v\u00e0 Codex t\u1ef1 \u0111\u1ecdc file n\u00e0y khi b\u1eaft \u0111\u1ea7u phi\u00ean chat m\u1edbi. C\u00fa ph\u00e1p \u0111\u00e3 tr\u00ecnh b\u00e0y \u1edf B\u01b0\u1edbc 2.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: 600; margin: 30px 0 15px;\">Cursor AI (\u00e1p d\u1ee5ng t\u01b0\u01a1ng t\u1ef1)<\/h3>\n<p style=\"text-align: justify;\">Cursor h\u1ed7 tr\u1ee3 MCP qua file c\u1ea5u h\u00ecnh \u0111\u1eb7t trong th\u01b0 m\u1ee5c <code>.cursor<\/code> c\u1ee7a d\u1ef1 \u00e1n ho\u1eb7c c\u1ea5u h\u00ecnh global. T\u1ea1o file <code>.cursor\/mcp.json<\/code> v\u1edbi n\u1ed9i dung:<\/p>\n<pre><code>{\r\n  \"mcpServers\": {\r\n    \"{domain_name}\": {\r\n      \"type\": \"http\",\r\n      \"url\": \"{admin_url}\/graphql\/mcp\",\r\n      \"headers\": {\r\n        \"Authorization\": \"Bearer {admin_access_token}\"\r\n      }\r\n    }\r\n  }\r\n}<\/code><\/pre>\n<p style=\"text-align: justify;\">Ho\u1eb7c v\u00e0o <strong>Cursor Settings \u2192 MCP<\/strong>, th\u00eam server m\u1edbi v\u00e0 \u0111i\u1ec1n URL endpoint c\u00f9ng header Authorization. Sau khi l\u01b0u, m\u1edf chat m\u1edbi \u0111\u1ec3 Cursor nh\u1eadn MCP Server.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: 600; margin: 30px 0 15px;\">Windsurf (\u00e1p d\u1ee5ng t\u01b0\u01a1ng t\u1ef1)<\/h3>\n<p style=\"text-align: justify;\">Windsurf (Cascade) \u0111\u1ecdc c\u1ea5u h\u00ecnh MCP t\u1eeb file global t\u1ea1i <code>~\/.codeium\/windsurf\/mcp_config.json<\/code> ho\u1eb7c qua Settings UI. N\u1ed9i dung JSON t\u01b0\u01a1ng t\u1ef1:<\/p>\n<pre><code>{\r\n  \"mcpServers\": {\r\n    \"{domain_name}\": {\r\n      \"type\": \"http\",\r\n      \"url\": \"{admin_url}\/graphql\/mcp\",\r\n      \"headers\": {\r\n        \"Authorization\": \"Bearer {admin_access_token}\"\r\n      }\r\n    }\r\n  }\r\n}<\/code><\/pre>\n<p style=\"text-align: justify;\">L\u01b0u \u00fd: ph\u1ea7n c\u1ea5u h\u00ecnh cho Cursor v\u00e0 Windsurf \u1edf tr\u00ean l\u00e0 h\u01b0\u1edbng d\u1eabn \u00e1p d\u1ee5ng t\u01b0\u01a1ng t\u1ef1 d\u1ef1a tr\u00ean c\u00fa ph\u00e1p MCP chu\u1ea9n c\u1ee7a t\u1eebng editor, kh\u00f4ng ph\u1ea3i n\u1ed9i dung t\u1eeb t\u00e0i li\u1ec7u ch\u00ednh th\u1ee9c EzyPlatform. C\u00fa ph\u00e1p c\u00f3 th\u1ec3 thay \u0111\u1ed5i theo phi\u00ean b\u1ea3n editor \u2014 n\u00ean ki\u1ec3m tra t\u00e0i li\u1ec7u MCP c\u1ee7a t\u1eebng editor \u0111\u1ec3 c\u1eadp nh\u1eadt.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: 600; margin: 30px 0 15px;\">Cline tr\u00ean VS Code (\u00e1p d\u1ee5ng t\u01b0\u01a1ng t\u1ef1)<\/h3>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/interdata.vn\/blog\/cline-la-gi\/\">Cline<\/a> l\u00e0 extension ch\u1ea1y tr\u00ean VS Code, h\u1ed7 tr\u1ee3 MCP qua giao di\u1ec7n Settings. M\u1edf Cline Settings \u2192 MCP Servers \u2192 Add Server, \u0111i\u1ec1n:<\/p>\n<ul style=\"margin: 15px 0; padding-left: 20px;\">\n<li style=\"margin-bottom: 8px;\"><strong>Server URL:<\/strong> <code>{admin_url}\/graphql\/mcp<\/code><\/li>\n<li style=\"margin-bottom: 8px;\"><strong>Header Authorization:<\/strong> <code>Bearer {admin_access_token}<\/code><\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Cline ch\u1ea1y tr\u00ean n\u1ec1n VS Code n\u00ean v\u1eabn d\u00f9ng \u0111\u01b0\u1ee3c extension EzyArticle \u0111\u1ec3 \u0111\u1ed3ng b\u1ed9 n\u1ed9i dung song song.<\/p>\n<p><!-- ======================== SECTION 6 ======================== --><\/p>\n<h2 id=\"section6\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">5 nh\u00f3m c\u00f4ng c\u1ee5 MCP Server EzyPlatform sau khi k\u1ebft n\u1ed1i<\/h2>\n<p style=\"text-align: justify;\">Sau khi k\u1ebft n\u1ed1i th\u00e0nh c\u00f4ng, AI assistant trong Code Editor c\u00f3 quy\u1ec1n s\u1eed d\u1ee5ng 5 nh\u00f3m tool. M\u1ed7i nh\u00f3m ph\u1ee5c v\u1ee5 m\u1ed9t m\u1ee5c \u0111\u00edch kh\u00e1c nhau trong quy tr\u00ecnh Vibe Coding tr\u00ean EzyPlatform.<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 15px;\">\n<thead>\n<tr style=\"background-color: #1e3a8a; color: #fff;\">\n<th style=\"padding: 12px 15px; text-align: left; border: 1px solid #BFDBFE;\">Nh\u00f3m c\u00f4ng c\u1ee5<\/th>\n<th style=\"padding: 12px 15px; text-align: left; border: 1px solid #BFDBFE;\">Ch\u1ee9c n\u0103ng<\/th>\n<th style=\"padding: 12px 15px; text-align: left; border: 1px solid #BFDBFE;\">V\u00ed d\u1ee5 tool<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">Qu\u1ea3n l\u00fd Fetcher<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">T\u1ea1o c\u00e2u truy v\u1ea5n d\u1eef li\u1ec7u m\u1edbi, l\u01b0u d\u01b0\u1edbi d\u1ea1ng b\u00e0i vi\u1ebft, ch\u1ea1y khi \u0111\u01b0\u1ee3c g\u1ecdi. Script ch\u1ea1y trong JavaScript engine (Mozilla Rhino) v\u1edbi quy\u1ec1n truy c\u1eadp data service.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\"><code>create_graphql_fetcher_draft<\/code>, <code>validate_graphql_fetcher<\/code>, <code>save_graphql_fetcher<\/code><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">Qu\u1ea3n l\u00fd Event Handler<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">T\u1ea1o k\u1ecbch b\u1ea3n t\u1ef1 \u0111\u1ed9ng ch\u1ea1y khi s\u1ef1 ki\u1ec7n x\u1ea3y ra (th\u00eam b\u00e0i vi\u1ebft, c\u1eadp nh\u1eadt danh m\u1ee5c&#8230;). B\u1ea3n nh\u00e1p kh\u00f4ng t\u1ef1 k\u00edch ho\u1ea1t \u2014 ch\u1ec9 b\u1ea3n \u0111\u00e3 xu\u1ea5t b\u1ea3n m\u1edbi ch\u1ea1y.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\"><code>validate_event_handler<\/code>, <code>list_event_handlers<\/code>, <code>save_event_handler<\/code><\/td>\n<\/tr>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">Tra c\u1ee9u d\u1eef li\u1ec7u<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">Truy v\u1ea5n d\u1eef li\u1ec7u c\u00f3 s\u1eb5n (b\u00e0i vi\u1ebft, trang, danh m\u1ee5c) m\u00e0 kh\u00f4ng c\u1ea7n t\u1ea1o fetcher m\u1edbi.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\"><code>search_posts<\/code>, <code>search_pages<\/code>, <code>admin_graphql_data_fetching<\/code><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">Qu\u1ea3n l\u00fd c\u1ea5u h\u00ecnh<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">S\u1eeda template email, template n\u1ed9i dung, b\u1ea3n d\u1ecbch i18n tr\u1ef1c ti\u1ebfp qua AI.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\"><code>save_mail_template<\/code>, <code>save_content_template<\/code>, <code>save_i18n_messages<\/code><\/td>\n<\/tr>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">Tra c\u1ee9u schema<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">Xem c\u1ea5u tr\u00fac d\u1eef li\u1ec7u, ki\u1ec3u d\u1eef li\u1ec7u, h\u00e0m c\u00f3 s\u1eb5n \u2014 gi\u00fap AI vi\u1ebft fetcher v\u00e0 event handler ch\u00ednh x\u00e1c.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\"><code>get_web_graphql_schema<\/code>, <code>get_admin_swagger<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: 600; margin: 30px 0 15px;\">Quy tr\u00ecnh an to\u00e0n khi AI t\u1ea1o Fetcher v\u00e0 Event Handler<\/h3>\n<p style=\"text-align: justify;\">MCP Server EzyPlatform tu\u00e2n theo quy tr\u00ecnh an to\u00e0n nghi\u00eam ng\u1eb7t khi AI t\u1ea1o fetcher ho\u1eb7c event handler m\u1edbi:<\/p>\n<ol style=\"margin: 15px 0; padding-left: 20px;\">\n<li style=\"margin-bottom: 10px;\">Ki\u1ec3m tra tr\u00f9ng t\u00ean \u2014 AI t\u00ecm xem \u0111\u00e3 c\u00f3 fetcher\/handler c\u00f9ng t\u00ean ch\u01b0a.<\/li>\n<li style=\"margin-bottom: 10px;\">N\u1ebfu tr\u00f9ng, AI h\u1ecfi b\u1ea1n: s\u1eeda c\u00e1i c\u0169 hay \u0111\u1eb7t t\u00ean kh\u00e1c.<\/li>\n<li style=\"margin-bottom: 10px;\">N\u1ebfu m\u1edbi, AI t\u1ea1o b\u1ea3n nh\u00e1p (draft) \u2192 validate c\u00fa ph\u00e1p \u2192 xem tr\u01b0\u1edbc c\u1ea5u tr\u00fac d\u1eef li\u1ec7u tr\u1ea3 v\u1ec1.<\/li>\n<li style=\"margin-bottom: 10px;\">AI h\u1ecfi b\u1ea1n: l\u01b0u nh\u00e1p hay xu\u1ea5t b\u1ea3n (publish).<\/li>\n<li style=\"margin-bottom: 10px;\">Ch\u1ec9 khi b\u1ea1n x\u00e1c nh\u1eadn xu\u1ea5t b\u1ea3n, fetcher\/handler m\u1edbi c\u00f3 hi\u1ec7u l\u1ef1c ngay l\u1eadp t\u1ee9c, kh\u00f4ng c\u1ea7n restart.<\/li>\n<\/ol>\n<p style=\"text-align: justify;\">Quy tr\u00ecnh n\u00e0y \u0111\u1ea3m b\u1ea3o b\u1ea1n lu\u00f4n ki\u1ec3m so\u00e1t \u0111\u01b0\u1ee3c nh\u1eefng g\u00ec AI t\u1ea1o ra tr\u00ean h\u1ec7 th\u1ed1ng production. B\u1ea3n nh\u00e1p event handler kh\u00f4ng t\u1ef1 k\u00edch ho\u1ea1t, n\u00ean b\u1ea1n c\u00f3 th\u1ec3 tho\u1ea3i m\u00e1i \u0111\u1ec3 AI th\u1eed nghi\u1ec7m m\u00e0 kh\u00f4ng lo \u1ea3nh h\u01b0\u1edfng d\u1eef li\u1ec7u th\u1eadt.<\/p>\n<p><!-- ======================== SECTION 7 ======================== --><\/p>\n<h2 id=\"section7\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">X\u1eed l\u00fd l\u1ed7i th\u01b0\u1eddng g\u1eb7p khi k\u1ebft n\u1ed1i MCP Server EzyPlatform<\/h2>\n<p style=\"text-align: justify;\">D\u01b0\u1edbi \u0111\u00e2y l\u00e0 c\u00e1c l\u1ed7i ph\u1ed5 bi\u1ebfn nh\u1ea5t khi c\u1ea5u h\u00ecnh k\u1ebft n\u1ed1i Code Editor t\u1edbi MCP Server EzyPlatform, k\u00e8m nguy\u00ean nh\u00e2n v\u00e0 c\u00e1ch x\u1eed l\u00fd c\u1ee5 th\u1ec3.<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 15px;\">\n<thead>\n<tr style=\"background-color: #1e3a8a; color: #fff;\">\n<th style=\"padding: 12px 15px; text-align: left; border: 1px solid #BFDBFE;\">L\u1ed7i<\/th>\n<th style=\"padding: 12px 15px; text-align: left; border: 1px solid #BFDBFE;\">Nguy\u00ean nh\u00e2n<\/th>\n<th style=\"padding: 12px 15px; text-align: left; border: 1px solid #BFDBFE;\">C\u00e1ch x\u1eed l\u00fd<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">401 Unauthorized<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">Access token sai, h\u1ebft h\u1ea1n, ho\u1eb7c thi\u1ebfu prefix <code>Bearer<\/code> trong header.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">V\u00e0o <code>\/admins\/me<\/code> t\u1ea1o token m\u1edbi. Ki\u1ec3m tra c\u00fa ph\u00e1p: <code>\"Authorization\": \"Bearer {token}\"<\/code> \u2014 c\u00f3 d\u1ea5u c\u00e1ch sau Bearer.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">AI kh\u00f4ng th\u1ea5y tool n\u00e0o<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">Ch\u01b0a c\u1ea5u h\u00ecnh <code>packages_to_scan<\/code> ho\u1eb7c ch\u01b0a restart Web sau khi l\u01b0u c\u1ea5u h\u00ecnh GraphQL.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">Ki\u1ec3m tra l\u1ea1i B\u01b0\u1edbc 1: d\u00e1n \u0111\u00fang c\u1ea5u h\u00ecnh packages_to_scan \u2192 L\u01b0u \u2192 Dashboard \u2192 Restart Web.<\/td>\n<\/tr>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">Connection refused \/ timeout<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">URL admin sai, server ch\u01b0a ch\u1ea1y, ho\u1eb7c firewall ch\u1eb7n c\u1ed5ng.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">Ki\u1ec3m tra <code>admin_url<\/code> truy c\u1eadp \u0111\u01b0\u1ee3c t\u1eeb tr\u00ecnh duy\u1ec7t. N\u1ebfu d\u00f9ng VPS, ki\u1ec3m tra firewall m\u1edf c\u1ed5ng HTTPS (443).<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">AI k\u1ebft n\u1ed1i nh\u01b0ng kh\u00f4ng tr\u1ea3 d\u1eef li\u1ec7u<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">Plugin EzyArticle ch\u01b0a c\u00e0i ho\u1eb7c ch\u01b0a c\u00f3 d\u1eef li\u1ec7u m\u1eabu tr\u00ean h\u1ec7 th\u1ed1ng.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">C\u00e0i plugin EzyArticle, t\u1ea1o v\u00e0i b\u00e0i vi\u1ebft\/danh m\u1ee5c m\u1eabu, sau \u0111\u00f3 th\u1eed l\u1ea1i l\u1ec7nh <code>search_posts<\/code>.<\/td>\n<\/tr>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">File .mcp.json kh\u00f4ng \u0111\u01b0\u1ee3c nh\u1eadn<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">File \u0111\u1eb7t sai th\u01b0 m\u1ee5c, ho\u1eb7c ch\u01b0a m\u1edf phi\u00ean chat m\u1edbi sau khi t\u1ea1o file.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">\u0110\u1eb7t file \u1edf th\u01b0 m\u1ee5c g\u1ed1c d\u1ef1 \u00e1n (c\u00f9ng c\u1ea5p <code>environment.json<\/code>). \u0110\u00f3ng phi\u00ean chat c\u0169, m\u1edf phi\u00ean m\u1edbi \u0111\u1ec3 AI \u0111\u1ecdc l\u1ea1i c\u1ea5u h\u00ecnh.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">SSL certificate error<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">Domain ch\u01b0a c\u00e0i SSL ho\u1eb7c SSL h\u1ebft h\u1ea1n.<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB;\">C\u00e0i Let&#8217;s Encrypt SSL cho domain admin. MCP Server y\u00eau c\u1ea7u HTTPS khi k\u1ebft n\u1ed1i t\u1eeb xa.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify;\">N\u1ebfu \u0111\u00e3 ki\u1ec3m tra t\u1ea5t c\u1ea3 m\u1ee5c tr\u00ean m\u00e0 v\u1eabn l\u1ed7i, th\u1eed truy c\u1eadp tr\u1ef1c ti\u1ebfp URL <code>{admin_url}\/graphql\/mcp<\/code> t\u1eeb tr\u00ecnh duy\u1ec7t \u2014 n\u1ebfu tr\u1ea3 v\u1ec1 l\u1ed7i 404, plugin GraphQL ch\u01b0a c\u00e0i ho\u1eb7c ch\u01b0a k\u00edch ho\u1ea1t. N\u1ebfu tr\u1ea3 v\u1ec1 403\/401, v\u1ea5n \u0111\u1ec1 n\u1eb1m \u1edf token ho\u1eb7c quy\u1ec1n truy c\u1eadp.<\/p>\n<p><!-- ======================== SECTION 8 ======================== --><\/p>\n<h2 id=\"section8\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">Ch\u1ecdn h\u1ea1 t\u1ea7ng ch\u1ea1y EzyPlatform v\u00e0 MCP Server EzyPlatform cho Vibe Coding<\/h2>\n<p style=\"text-align: justify;\">EzyPlatform ch\u1ea1y tr\u00ean Java runtime, c\u1ea7n ch\u1ea1y n\u1ec1n li\u00ean t\u1ee5c, c\u1ea7n quy\u1ec1n root \u0111\u1ec3 c\u00e0i plugin v\u00e0 c\u1ea5u h\u00ecnh GraphQL. MCP Server y\u00eau c\u1ea7u endpoint HTTPS truy c\u1eadp \u0111\u01b0\u1ee3c t\u1eeb Code Editor. Nh\u1eefng y\u00eau c\u1ea7u n\u00e0y quy\u1ebft \u0111\u1ecbnh b\u1ea1n c\u1ea7n lo\u1ea1i h\u1ea1 t\u1ea7ng n\u00e0o.<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 15px;\">\n<thead>\n<tr style=\"background-color: #1e3a8a; color: #fff;\">\n<th style=\"padding: 12px 15px; text-align: left; border: 1px solid #BFDBFE;\">Ti\u00eau ch\u00ed<\/th>\n<th style=\"padding: 12px 15px; text-align: center; border: 1px solid #BFDBFE;\">VPS Vibe Coding<\/th>\n<th style=\"padding: 12px 15px; text-align: center; border: 1px solid #BFDBFE;\">VPS t\u1ef1 c\u00e0i<\/th>\n<th style=\"padding: 12px 15px; text-align: center; border: 1px solid #BFDBFE;\">Cloud Server<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">EzyPlatform s\u1eb5n s\u00e0ng<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">T\u00edch h\u1ee3p s\u1eb5n + plugin<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">T\u1ef1 c\u00e0i t\u1eeb \u0111\u1ea7u<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">T\u1ef1 c\u00e0i t\u1eeb \u0111\u1ea7u<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">MCP Server<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">\u0110\u00e3 c\u1ea5u h\u00ecnh s\u1eb5n<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">T\u1ef1 c\u1ea5u h\u00ecnh theo B\u01b0\u1edbc 1<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">T\u1ef1 c\u1ea5u h\u00ecnh theo B\u01b0\u1edbc 1<\/td>\n<\/tr>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">Quy\u1ec1n root<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">C\u00f3<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">C\u00f3<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">C\u00f3<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">Ph\u00f9 h\u1ee3p<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">B\u1eaft \u0111\u1ea7u Vibe Coding nhanh, 1 d\u1ef1 \u00e1n<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">T\u00f9y ch\u1ec9nh s\u00e2u, nhi\u1ec1u d\u1ef1 \u00e1n, chi ph\u00ed th\u1ea5p<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">T\u1ea3i bi\u1ebfn \u0111\u1ed9ng, nhi\u1ec1u user, c\u1ea7n scale nhanh<\/td>\n<\/tr>\n<tr style=\"background-color: #f9fafb;\">\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; font-weight: 600;\">Khi n\u00e0o ch\u1ecdn<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">Mu\u1ed1n k\u1ebft n\u1ed1i Code Editor t\u1edbi MCP ngay, kh\u00f4ng mu\u1ed1n c\u00e0i \u0111\u1eb7t<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">\u0110\u00e3 quen Linux, mu\u1ed1n ki\u1ec3m so\u00e1t to\u00e0n b\u1ed9 stack<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #E5E7EB; text-align: center;\">D\u1ef1 \u00e1n l\u1edbn, team nhi\u1ec1u ng\u01b0\u1eddi, c\u1ea7n n\u00e2ng\/h\u1ea1 t\u00e0i nguy\u00ean<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify;\">N\u1ebfu b\u1ea1n ch\u1ea1y EzyPlatform tr\u00ean localhost (m\u00e1y c\u00e1 nh\u00e2n), MCP Server v\u1eabn ho\u1ea1t \u0111\u1ed9ng nh\u01b0ng AI ch\u1ec9 k\u1ebft n\u1ed1i \u0111\u01b0\u1ee3c khi m\u00e1y b\u1eadt. Khi <a href=\"https:\/\/interdata.vn\/blog\/dua-code-len-host-sau-khi-vibe-coding\/\">\u0111\u01b0a code l\u00ean host sau khi Vibe Coding<\/a>, b\u1ea1n s\u1ebd c\u1ea7n VPS ho\u1eb7c Cloud Server \u0111\u1ec3 EzyPlatform ch\u1ea1y li\u00ean t\u1ee5c v\u00e0 MCP Server lu\u00f4n s\u1eb5n s\u00e0ng ph\u1ee5c v\u1ee5.<\/p>\n<p style=\"text-align: justify;\">EzyPlatform c\u00f3 th\u1ec3 tri\u1ec3n khai qua <a href=\"https:\/\/interdata.vn\/blog\/docker-la-gi\/\">Docker<\/a> container tr\u00ean VPS, gi\u00fap qu\u1ea3n l\u00fd phi\u00ean b\u1ea3n v\u00e0 rollback d\u1ec5 d\u00e0ng h\u01a1n \u2014 ph\u00f9 h\u1ee3p n\u1ebfu b\u1ea1n ch\u1ea1y nhi\u1ec1u d\u1ef1 \u00e1n tr\u00ean c\u00f9ng m\u1ed9t server.<\/p>\n<p><!-- BOX CTA #3 \u2014 CLOUD SERVER --><\/p>\n<div style=\"display: flex; flex-wrap: wrap; background-color: #fff; border: 1.5px solid #BFDBFE; box-shadow: 0 8px 20px rgba(37,99,235,0.08); border-radius: 12px; overflow: hidden; margin: 35px 0;\">\n<div style=\"flex: 1; min-width: 250px; background: linear-gradient(135deg, #1E3A8A 0%, #2563EB 100%); display: flex; align-items: center; justify-content: center; padding: 30px; text-align: center;\">\n<div>\n<p style=\"color: #fff; font-size: 34px; font-family: 'Be Vietnam Pro', sans-serif; font-weight: bold; margin: 0; line-height: 1.1;\">Cloud Server InterData<\/p>\n<p style=\"color: #dbeafe; font-size: 15px; font-weight: 600; margin-top: 12px;\">N\u00e2ng\/h\u1ea1 t\u00e0i nguy\u00ean nhanh, SSD NVMe U.2<\/p>\n<\/div>\n<\/div>\n<div style=\"flex: 2; padding: 25px; min-width: 300px;\">\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; margin-top: 0; font-size: 20px;\">Ch\u1ea1y nhi\u1ec1u d\u1ef1 \u00e1n EzyPlatform, nhi\u1ec1u MCP Server c\u00f9ng l\u00fac?<\/h3>\n<p style=\"text-align: justify; font-size: 15px; margin-bottom: 15px;\">Khi workload Vibe Coding t\u0103ng \u2014 nhi\u1ec1u instance EzyPlatform, nhi\u1ec1u ng\u01b0\u1eddi d\u00f9ng MCP Server \u0111\u1ed3ng th\u1eddi, ho\u1eb7c event handler ch\u1ea1y n\u1eb7ng \u2014 Cloud Server cho ph\u00e9p n\u00e2ng RAM, CPU m\u00e0 kh\u00f4ng c\u1ea7n di chuy\u1ec3n d\u1eef li\u1ec7u sang m\u00e1y ch\u1ee7 kh\u00e1c. H\u1ed7 tr\u1ee3 k\u1ef9 thu\u1eadt 24\/7 v\u00e0 ch\u1ed1ng DDoS.<\/p>\n<p><a style=\"background: linear-gradient(90deg, #2563EB 0%, #1E3A8A 100%); color: #fff; padding: 12px 25px; text-decoration: none; font-weight: 600; border-radius: 8px; font-size: 15px; display: inline-block; box-shadow: 0 5px 15px rgba(37,99,235,0.3);\" href=\"https:\/\/interdata.vn\/cloud-server\/\" target=\"_blank\" rel=\"noopener\">Xem g\u00f3i Cloud Server \u27f6<\/a><\/p>\n<\/div>\n<\/div>\n<p><!-- ======================== SECTION 9 \u2014 FAQ ======================== --><\/p>\n<h2 id=\"section9\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 MCP Server EzyPlatform<\/h2>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin: 25px 0 10px;\">MCP Server kh\u00e1c g\u00ec REST API th\u00f4ng th\u01b0\u1eddng?<\/h3>\n<p style=\"text-align: justify;\">REST API y\u00eau c\u1ea7u b\u1ea1n t\u1ef1 vi\u1ebft request, bi\u1ebft endpoint, c\u1ea5u tr\u00fac d\u1eef li\u1ec7u. MCP Server cho ph\u00e9p AI t\u1ef1 kh\u00e1m ph\u00e1 danh s\u00e1ch tool c\u00f3 s\u1eb5n, ch\u1ecdn tool ph\u00f9 h\u1ee3p v\u00e0 th\u1ef1c thi d\u1ef1a tr\u00ean y\u00eau c\u1ea7u b\u1eb1ng ng\u00f4n ng\u1eef t\u1ef1 nhi\u00ean. B\u1ea1n m\u00f4 t\u1ea3 vi\u1ec7c c\u1ea7n l\u00e0m, AI t\u1ef1 quy\u1ebft \u0111\u1ecbnh g\u1ecdi tool n\u00e0o \u2014 kh\u00f4ng c\u1ea7n vi\u1ebft code g\u1ecdi API th\u1ee7 c\u00f4ng.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin: 25px 0 10px;\">MCP Server EzyPlatform c\u00f3 mi\u1ec5n ph\u00ed kh\u00f4ng?<\/h3>\n<p style=\"text-align: justify;\">MCP Server l\u00e0 t\u00ednh n\u0103ng c\u1ee7a plugin GraphQL trong EzyPlatform \u2014 b\u1ea3n th\u00e2n EzyPlatform v\u00e0 plugin mi\u1ec5n ph\u00ed. Chi ph\u00ed ph\u00e1t sinh ch\u1ee7 y\u1ebfu t\u1eeb h\u1ea1 t\u1ea7ng (VPS ho\u1eb7c Cloud Server \u0111\u1ec3 ch\u1ea1y EzyPlatform) v\u00e0 subscription AI assistant (Claude Code ho\u1eb7c Codex) m\u00e0 b\u1ea1n d\u00f9ng trong Code Editor.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin: 25px 0 10px;\">C\u00f3 th\u1ec3 k\u1ebft n\u1ed1i nhi\u1ec1u MCP Server c\u00f9ng l\u00fac trong m\u1ed9t Code Editor kh\u00f4ng?<\/h3>\n<p style=\"text-align: justify;\">C\u00f3. File <code>.mcp.json<\/code> h\u1ed7 tr\u1ee3 nhi\u1ec1u entry trong object <code>mcpServers<\/code>. M\u1ed7i entry l\u00e0 m\u1ed9t MCP Server v\u1edbi t\u00ean, URL v\u00e0 token ri\u00eang. AI assistant s\u1ebd nh\u1eadn t\u1ea5t c\u1ea3 tool t\u1eeb m\u1ecdi server \u0111\u00e3 khai b\u00e1o. Ph\u00f9 h\u1ee3p khi b\u1ea1n qu\u1ea3n l\u00fd nhi\u1ec1u d\u1ef1 \u00e1n EzyPlatform tr\u00ean c\u00e1c server kh\u00e1c nhau.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin: 25px 0 10px;\">Event handler b\u1ea3n nh\u00e1p c\u00f3 t\u1ef1 ch\u1ea1y tr\u00ean production kh\u00f4ng?<\/h3>\n<p style=\"text-align: justify;\">Kh\u00f4ng. Theo quy tr\u00ecnh an to\u00e0n c\u1ee7a MCP Server EzyPlatform, event handler \u1edf tr\u1ea1ng th\u00e1i nh\u00e1p (draft) kh\u00f4ng t\u1ef1 k\u00edch ho\u1ea1t khi s\u1ef1 ki\u1ec7n x\u1ea3y ra. Ch\u1ec9 sau khi b\u1ea1n x\u00e1c nh\u1eadn xu\u1ea5t b\u1ea3n (publish), handler m\u1edbi c\u00f3 hi\u1ec7u l\u1ef1c. \u0110i\u1ec1u n\u00e0y cho ph\u00e9p AI th\u1eed nghi\u1ec7m tho\u1ea3i m\u00e1i m\u00e0 kh\u00f4ng \u1ea3nh h\u01b0\u1edfng d\u1eef li\u1ec7u production.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; font-weight: 600; margin: 25px 0 10px;\">D\u00f9ng Shared Hosting ch\u1ea1y EzyPlatform v\u1edbi MCP Server \u0111\u01b0\u1ee3c kh\u00f4ng?<\/h3>\n<p style=\"text-align: justify;\">EzyPlatform c\u1ea7n Java runtime, quy\u1ec1n ch\u1ea1y process n\u1ec1n v\u00e0 c\u1ed5ng m\u1ea1ng ri\u00eang \u2014 nh\u1eefng y\u1ebfu t\u1ed1 m\u00e0 Shared Hosting th\u01b0\u1eddng kh\u00f4ng cung c\u1ea5p. N\u1ebfu b\u1ea1n \u0111ang d\u00f9ng Shared Hosting cho website nh\u1ecf, n\u00f3 v\u1eabn ph\u00f9 h\u1ee3p v\u1edbi nhu c\u1ea7u \u0111\u00f3. Khi c\u1ea7n ch\u1ea1y EzyPlatform + MCP Server, n\u00ean chuy\u1ec3n sang <a href=\"https:\/\/interdata.vn\/thue-vps\/\">VPS<\/a> ho\u1eb7c Cloud Server \u0111\u1ec3 c\u00f3 quy\u1ec1n ki\u1ec3m so\u00e1t v\u00e0 t\u00e0i nguy\u00ean c\u1ea7n thi\u1ebft.<\/p>\n<p><!-- ======================== K\u1ebeT B\u00c0I ======================== --><\/p>\n<div style=\"border-top: 2px dashed #BFDBFE; margin-top: 50px; padding-top: 30px;\">\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; font-size: 22px; font-weight: bold; margin-bottom: 15px;\">L\u1eddi k\u1ebft<\/h3>\n<p style=\"text-align: justify;\">To\u00e0n b\u1ed9 quy tr\u00ecnh k\u1ebft n\u1ed1i g\u00f3i g\u1ecdn trong 3 b\u01b0\u1edbc: c\u1ea5u h\u00ecnh packages_to_scan tr\u00ean admin, t\u1ea1o file <code>.mcp.json<\/code> trong d\u1ef1 \u00e1n, ki\u1ec3m tra k\u1ebft n\u1ed1i b\u1eb1ng m\u1ed9t c\u00e2u h\u1ecfi. Sau khi ho\u00e0n t\u1ea5t, AI assistant trong Code Editor truy v\u1ea5n d\u1eef li\u1ec7u th\u1eadt, t\u1ea1o fetcher, vi\u1ebft event handler \u2014 t\u1ea5t c\u1ea3 qua ng\u00f4n ng\u1eef t\u1ef1 nhi\u00ean thay v\u00ec vi\u1ebft code th\u1ee7 c\u00f4ng.<\/p>\n<p style=\"text-align: justify;\">N\u1ebfu ch\u01b0a c\u00f3 h\u1ea1 t\u1ea7ng, g\u00f3i <a href=\"https:\/\/interdata.vn\/vps-vibe-coding\/\" target=\"_blank\" rel=\"noopener\">VPS Vibe Coding c\u1ee7a InterData<\/a> gi\u00fap b\u1ea1n b\u1ecf qua ph\u1ea7n c\u00e0i \u0111\u1eb7t server \u2014 EzyPlatform, plugin GraphQL v\u00e0 MCP Server \u0111\u00e3 s\u1eb5n s\u00e0ng. B\u1ea1n ch\u1ec9 c\u1ea7n m\u1edf Code Editor, t\u1ea1o file k\u1ebft n\u1ed1i v\u00e0 b\u1eaft \u0111\u1ea7u Vibe Coding v\u1edbi d\u1eef li\u1ec7u th\u1eadt.<\/p>\n<\/div>\n<p style=\"text-align: justify; font-size: 13px; font-style: italic; color: #6b7280; margin-top: 30px; border-top: 1px solid #E5E7EB; padding-top: 15px;\"><span style=\"font-size: 100%;\"><em>N\u1ed9i dung mang t\u00ednh tham kh\u1ea3o v\u00e0 \u0111\u01b0\u1ee3c vi\u1ebft d\u1ef1a tr\u00ean t\u00e0i li\u1ec7u ch\u00ednh th\u1ee9c c\u1ee7a EzyPlatform: <a href=\"https:\/\/ezyplatform.com\/blog\/chuong-3-chuan-bi-moi-truong-lam-viec\" target=\"_blank\" rel=\"noopener\">Ch\u01b0\u01a1ng 3 \u2014 Chu\u1ea9n b\u1ecb m\u00f4i tr\u01b0\u1eddng l\u00e0m vi\u1ec7c<\/a> v\u00e0 <a href=\"https:\/\/ezyplatform.com\/blog\/chuong-9-mcp-server\" target=\"_blank\" rel=\"noopener\">Ch\u01b0\u01a1ng 9 \u2014 MCP Server<\/a>. Giao di\u1ec7n admin, c\u00fa ph\u00e1p c\u1ea5u h\u00ecnh v\u00e0 t\u00ednh n\u0103ng MCP c\u00f3 th\u1ec3 thay \u0111\u1ed5i theo phi\u00ean b\u1ea3n EzyPlatform, plugin GraphQL v\u00e0 Code Editor b\u1ea1n \u0111ang d\u00f9ng. N\u00ean ki\u1ec3m th\u1eed tr\u00ean m\u00f4i tr\u01b0\u1eddng staging, sao l\u01b0u d\u1eef li\u1ec7u v\u00e0 \u0111\u1ed1i chi\u1ebfu t\u00e0i li\u1ec7u m\u1edbi nh\u1ea5t t\u1ea1i <a href=\"https:\/\/ezyplatform.com\" target=\"_blank\" rel=\"noopener\">ezyplatform.com<\/a> tr\u01b0\u1edbc khi \u00e1p d\u1ee5ng cho production.<\/em><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>MCP Server EzyPlatform gi\u00fap AI assistant truy v\u1ea5n tr\u1ef1c ti\u1ebfp d\u1eef li\u1ec7u th\u1ef1c t\u1ebf tr\u00ean h\u1ec7 th\u1ed1ng, t\u1eeb \u0111\u00f3 hi\u1ec3u r\u00f5 c\u1ea5u tr\u00fac v\u00e0 ng\u1eef c\u1ea3nh d\u1ef1 \u00e1n thay v\u00ec ch\u1ec9 vi\u1ebft code d\u1ef1a tr\u00ean ph\u1ecfng \u0111o\u00e1n. Trong b\u00e0i vi\u1ebft n\u00e0y, InterData s\u1ebd h\u01b0\u1edbng d\u1eabn t\u1eebng b\u01b0\u1edbc k\u1ebft n\u1ed1i VS Code, Cursor v\u00e0 Windsurf v\u1edbi<\/p>\n","protected":false},"author":2,"featured_media":43228,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[167],"tags":[],"class_list":["post-43215","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vibe-coding"],"_links":{"self":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/43215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/comments?post=43215"}],"version-history":[{"count":9,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/43215\/revisions"}],"predecessor-version":[{"id":43233,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/43215\/revisions\/43233"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media\/43228"}],"wp:attachment":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media?parent=43215"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/categories?post=43215"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/tags?post=43215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}