← Blog
Field note

Phát Triển MCP Server: Chi Phí, Kiến Trúc, Bảo Mật 2026

Thien Nguyen · Oct 6, 2026

Phát triển MCP server năm 2026 là đặt một lớp mỏng, được bảo vệ chặt trước sản phẩm của bạn, để AI agent như Claude hay ChatGPT gọi sản phẩm như gọi công cụ. Một server công khai, chỉ đọc trên dữ liệu sẵn có mất khoảng một đến hai tuần công của kỹ sư senior. Server có xác thực trên dữ liệu khách hàng mất ba đến sáu tuần. Server cho agent ghi dữ liệu trong sản phẩm thuộc ngành phải tuân thủ thì mất ba đến sáu tháng. Phần lớn thời gian dành cho phân quyền, giới hạn phạm vi và audit, không phải cho bản thân giao thức. Bài này trình bày kiến trúc, chi phí và checklist bảo mật 20 điểm, lấy ví dụ thật từ ba MCP server BeevR đang chạy production. Cập nhật tháng 10/2026.

MCP server là gì, và khi nào sản phẩm cần có?

MCP server đưa các chức năng của sản phẩm ra thành "công cụ" (tool) mà mọi client hỗ trợ Model Context Protocol đều tìm thấy và gọi được: Claude, connector của ChatGPT, agent trong IDE, các framework agent. Bạn viết tích hợp một lần và mọi client tương thích đều dùng được. Trước MCP, mỗi client cần một plugin riêng. MCP server không phải backend mới. Nó là một lớp adapter mỏng nằm trên API hiện có, với phân quyền riêng và nhật ký audit riêng.

Bạn cần MCP server khi khách hàng hoặc đối tác muốn dùng sản phẩm của bạn ngay trong trợ lý AI. Ví dụ: "tóm tắt tài khoản của tôi", "cơ sở này có phải kiểm kê khí nhà kính không", "lấy số liệu quý trước vào bảng phân tích". Bạn cũng cần nó khi muốn các công cụ AI trả lời câu hỏi về công ty bằng dữ liệu của chính bạn, thay vì những gì model nhớ từ lúc huấn luyện. Có lẽ bạn chưa cần MCP server nếu chưa khách hàng nào hỏi, API còn chưa ổn định, hoặc mô hình dữ liệu còn đổi hằng tuần. Hãy làm chắc API trước, vì lớp MCP dựa hoàn toàn vào nó.

Đặc tả MCP thay đổi gì trong năm 2026?

Phiên bản MCP hiện hành là 2026-07-28, và nó thay đổi cách xây server. Thay đổi lớn nhất là MCP giờ đã stateless. Bước bắt tay initialize và header Mcp-Session-Id bị bỏ. Mỗi request tự mang phiên bản giao thức và capability của client trong _meta, và server bắt buộc có phương thức mới server/discover để công bố các phiên bản mình hỗ trợ. Server nào cần giữ trạng thái giữa các lần gọi giờ phải tự tạo "handle" và nhận lại handle đó như một tham số tool bình thường. ping bị bỏ; Roots, Sampling và Logging bị đánh dấu deprecated.

Phần phân quyền cũng đổi. OAuth 2.0 Dynamic Client Registration (RFC 7591) bị deprecated, nhường chỗ cho OAuth Client ID Metadata Documents, dù vẫn được giữ để tương thích ngược. Client giờ phải kiểm tra tham số iss trong phản hồi authorization để chặn tấn công mix-up. Các nguyên tắc cốt lõi giữ nguyên:

  • MCP server được bảo vệ là một OAuth 2.1 resource server.
  • Server bắt buộc công bố OAuth 2.0 Protected Resource Metadata (RFC 9728).
  • Server phải kiểm tra token được cấp đúng cho chính nó.
  • Server không bao giờ được chuyển tiếp token của client sang API phía sau.

Ngoài ra, tháng 6/2026 dự án MCP công bố extension Enterprise-Managed Authorization ở trạng thái ổn định. Extension này cho phép hệ thống định danh của doanh nghiệp (khi ra mắt là Okta) cấp và thu hồi quyền truy cập MCP tập trung, thay vì người dùng phải bấm qua OAuth cho từng server. Nếu bạn bán cho khách hàng doanh nghiệp, hãy tính trước phần này.

Trên thực tế, server xây năm 2025 hoặc đầu 2026 theo các phiên bản có bắt tay (2025-06-18, 2025-11-25) vẫn chạy với những client còn hỗ trợ các phiên bản đó. Server mới nên nhắm 2026-07-28 ngay từ đầu. Hai server công khai của chúng tôi hiện vẫn đàm phán 2025-06-18 hoặc 2025-11-25, nên chúng là ví dụ đúng về đợt nâng cấp mà phần lớn các đội đang phải làm.

Các công cụ và dịch vụ kết nối trong một pipeline tự động
Các công cụ và dịch vụ kết nối trong một pipeline tự động

Kiến trúc MCP server chạy production trông như thế nào?

Dù dùng stack nào, MCP server production cũng có năm lớp, tính từ ngoài vào trong:

  1. Discovery. Server card tại /.well-known/mcp/server-card.json mô tả endpoint, transport, yêu cầu xác thực và danh sách tool. Server có bảo vệ công bố thêm protected-resource metadata và authorization-server metadata.
  2. Transport và giao thức. Streamable HTTP với JSON-RPC 2.0. Thực chất là một endpoint HTTPS nhận POST và kiểm tra cấu trúc message.
  3. Phân quyền. Với mọi dữ liệu không công khai: kiểm tra token (issuer, audience hoặc client, thời hạn, scope), rồi kiểm tra chính sách trên từng request.
  4. Tool. Một bộ tool nhỏ, chọn lọc, có input schema chặt và mô tả ngắn, đúng sự thật. Mỗi tool gọi API hoặc lớp dữ liệu sẵn có. Không tool nào được truy cập thẳng vào database.
  5. Quan sát và giới hạn. Rate limit theo người dùng hoặc client, một dòng audit cho mỗi request của agent, cảnh báo khi có lượt gọi bị từ chối.

BeevR đang chạy ba MCP server theo đúng mô hình này, và bạn có thể kết nối ngay vào hai server công khai:

ServerXác thựcCung cấp gìGhi chú
https://beevr.ai/mcpKhông (công khai)8 tool chỉ đọc: tìm kiếm, bảng giá, dịch vụ, case study, bài viết (EN và VI)JSON-RPC stateless qua Streamable HTTP; GET trả 405 vì server không mở stream chủ động
https://ecocheck.ai/mcpKhông (công khai)8 tool chỉ đọc, gồm công cụ kiểm tra nghĩa vụ kiểm kê khí nhà kính và các quy định 2026 đã kiểm chứngCó server card; cùng mô hình với beevr.ai
https://ecocheck.ai/mcp/accountOAuth 2.1, authorization code + PKCE (S256)Workspace, kỳ kiểm kê, năm báo cáo và báo cáo phát thải của chính khách hàng đã đăng nhập, chỉ đọcChi tiết ở phần tiếp theo

Muốn tự xem giao thức hoạt động, hãy liệt kê tool trên server công khai của chúng tôi:

curl -s https://beevr.ai/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Hoặc thêm https://beevr.ai/mcp làm custom connector trong một trợ lý AI hỗ trợ MCP, rồi hỏi các gói giá cố định của BeevR. Câu trả lời sẽ đến từ tool get_pricing, không phải từ trí nhớ của model.

Nếu bạn tự xây agent, ranh giới tool này cũng áp dụng ở phía client. Kite, framework agent mã nguồn mở của chúng tôi, có sẵn tích hợp MCP (Slack, Gmail, Google Drive, PostgreSQL, Stripe). Mọi lượt gọi tool mà agent đề xuất đều đi qua một kernel kiểm tra danh sách cho phép, ngân sách và chính sách trước khi chạy.

MCP server có OAuth hoạt động thực tế ra sao?

Server tài khoản của EcoCheck thể hiện trọn luồng, và mọi bước đều công khai để bạn tự kiểm tra:

  • Thách thức xác thực. POST chưa xác thực vào /mcp/account trả 401 kèm WWW-Authenticate: Bearer resource_metadata="…/.well-known/oauth-protected-resource/mcp/account", scope="ecocheck/read". Header này cho client biết phải xin quyền ở đâu và xin scope nào.
  • Protected-resource metadata (RFC 9728) nêu authorization server, các scope hỗ trợ, chỉ nhận token qua header, và issuer của token.
  • Authorization-server metadata (RFC 8414) tại /.well-known/oauth-authorization-server đứng trước AWS Cognito. Nó chỉ công bố luồng authorization code, PKCE chỉ S256, client công khai (token_endpoint_auth_method: none) và có endpoint thu hồi token.
  • Đăng ký client (RFC 7591) là một lớp facade mỏng tại /oauth/register. Nó chỉ chấp nhận redirect URI trong danh sách cho phép (Claude, ChatGPT và MCP Inspector chạy local) và trả về client ID công khai. Agent không bao giờ tạo tài khoản khách hàng.
  • Token là JWT do Cognito cấp. Access token sống 60 phút, refresh token 7 ngày, có thu hồi.
  • Kiểm soát nằm trong API, không chỉ ở lớp MCP. Backend nhận diện token cấp cho app client dành riêng cho agent. Với các token đó, backend yêu cầu scope ecocheck/read và chỉ cho GET/HEAD trên danh sách route cho phép. Danh sách thành viên, file minh chứng và xuất tài liệu đều trả 403. Mọi kiểm tra quyền workspace và tổ chức sẵn có vẫn chạy, vì agent hành động với tư cách chính khách hàng đó.
  • Giới hạn và audit. Request của agent bị giới hạn theo người dùng (mặc định 120 request/phút), và mỗi request của agent ghi một dòng audit: ai, phương thức, đường dẫn, được phép hay bị chặn.

Có hai quyết định thiết kế quan trọng hơn cả. Thứ nhất, quy tắc chỉ đọc nằm trong API sở hữu dữ liệu, nên một lỗi ở adapter MCP không thể nới rộng quyền truy cập. Thứ hai, token là của chính khách hàng, nên agent không bao giờ thấy nhiều hơn những gì khách hàng thấy trong ứng dụng. Phía người dùng được đội EcoCheck giải thích trong hướng dẫn kết nối EcoCheck qua MCP.

Cũng cần nói rõ một điểm cần cập nhật năm 2026: server này đăng ký client qua Dynamic Client Registration, cách mà đặc tả 2026-07-28 nay đã deprecated để nhường cho Client ID Metadata Documents. Cách này vẫn được phép để tương thích ngược, nhưng bản xây mới nên hỗ trợ Client ID Metadata Documents ngay từ đầu.

Kiến trúc MCP server có OAuth: AI client, authorization server với PKCE S256, MCP resource server, allowlist route trong API với scope chỉ đọc, và nhật ký audit kèm rate limit theo người dùng
Hình 1: Kiến trúc MCP server có OAuth: AI client, authorization server với PKCE S256, MCP resource server, allowlist route trong API với scope chỉ đọc, và nhật ký audit kèm rate limit theo người dùng

Phát triển MCP server năm 2026 tốn bao nhiêu?

Chi phí phụ thuộc ba câu hỏi: server mở dữ liệu của ai, agent có được thay đổi gì không, và chế độ tuân thủ nào áp dụng. Bản thân lớp giao thức chỉ vài trăm dòng code. Bảng dưới quy đổi công sức ra tiền theo hai mức giá đã công bố: mức senior khu vực châu Á $31–$41/giờ trong bài giá thuê ngoài phần mềm Việt Nam 2026 của chúng tôi, và mức $100–$300/giờ thường thấy ở các công ty tầm trung tại Mỹ.

Loại serverPhạm viCông sức điển hình (tuần công kỹ sư senior)Ở mức $31–$41/giờỞ mức $100–$300/giờ
Công khai, chỉ đọc (như beevr.ai/mcp)5–10 tool trên nội dung hoặc API công khai sẵn có, server card, rate limit, test1–2$1,2K–$3,3K$4K–$24K
Có xác thực, chỉ đọc (như ecocheck.ai/mcp/account)OAuth 2.1 + PKCE với hệ thống định danh của bạn, metadata RFC 9728/8414, đăng ký client, allowlist route trong API, giới hạn theo người dùng, nhật ký audit3–6$3,7K–$9,8K$12K–$72K
Đọc và ghiScope theo từng tool và step-up authorization, xác nhận với hành động có hệ quả, idempotency, rollback, rà soát mô tả tool, test lạm dụng6–12$7,4K–$19,7K$24K–$144K
Ngành tuân thủ hoặc doanh nghiệp đa tenantToàn bộ phần trên, cộng test cô lập tenant, khoanh vùng luồng dữ liệu HIPAA/PCI, lưu trữ log, SSO doanh nghiệp/managed authorization, pentest bên ngoài12–24+$15K–$39K+$48K–$288K+

Các khoảng công sức là ước tính lập kế hoạch của chúng tôi, không phải báo giá. Chúng giả định đội đã nắm OAuth và API phía sau server, và chưa gồm phí audit hay pentest bên ngoài. Chi phí vận hành thường nhỏ, vì MCP server stateless chỉ là một hàm HTTP nhẹ. Chi phí thật nằm ở các lượt gọi API và model mà agent kích hoạt phía bạn. Phần chi phí của agent xem thêm ở chi phí xây dựng và vận hành AI agent.

Chi phí phát triển MCP server theo mức bảo mật năm 2026: công khai chỉ đọc 1–2 tuần, có xác thực 3–6, đọc ghi 6–12, ngành tuân thủ đa tenant 12–24+ tuần công, quy đổi ở $31–$41/giờ và $100–$300/giờ
Hình 2: Chi phí phát triển MCP server theo mức bảo mật năm 2026: công khai chỉ đọc 1–2 tuần, có xác thực 3–6, đọc ghi 6–12, ngành tuân thủ đa tenant 12–24+ tuần công, quy đổi ở $31–$41/giờ và $100–$300/giờ

Rủi ro bảo mật lớn nhất của MCP là gì?

Rủi ro chia thành ba nhóm: model đọc phải thứ gì, server tin ai, và sau sự cố bạn chứng minh được gì. OWASP MCP Top 10, hiện ở giai đoạn beta, là bản đồ hữu ích nhất. Theo thứ tự, danh sách gồm:

  1. Quản lý token kém và lộ secret
  2. Leo thang đặc quyền do scope phình to
  3. Đầu độc tool (tool poisoning)
  4. Tấn công chuỗi cung ứng phần mềm và can thiệp dependency
  5. Command injection và thực thi lệnh
  6. Prompt injection qua nội dung ngữ cảnh
  7. Xác thực và phân quyền không đủ
  8. Thiếu audit và telemetry
  9. MCP server "ngầm" (shadow MCP)
  10. Context injection và chia sẻ quá mức

Ba phát hiện cho thấy đây không phải chuyện lý thuyết:

  • Tool poisoning có hiệu quả thật. Benchmark MCPTox cài chỉ dẫn độc hại vào mô tả tool trên 45 MCP server đang chạy và 353 tool thật. Tấn công thành công trung bình 36,5%, và lên tới 72,8% với model dễ bị lừa nhất. Model càng mạnh thường lại càng dễ bị lừa hơn, không phải kém đi.
  • Chuỗi cung ứng là một phần bề mặt tấn công. Tháng 4/2026, OX Security công bố một vấn đề thực thi lệnh ở mức thiết kế, nằm trong cách các SDK MCP chính thức khởi chạy server STDIO local. Họ báo cáo hơn 30 lần công bố có trách nhiệm và hơn 10 CVE mức cao hoặc nghiêm trọng trong hệ sinh thái. Server HTTP từ xa tránh được đường tấn công cụ thể này, nhưng client và máy của lập trình viên thì chưa chắc.
  • Agent đọc mô tả tool như mệnh lệnh. Mô tả tool là văn bản đi thẳng vào context của model. Hãy đối xử với nó như code: rà soát, quản lý phiên bản, và không bao giờ sinh nó từ dữ liệu người dùng nhập.

Bức tranh quản trị rộng hơn (ai được nối agent nào vào đâu, giới hạn chi tiêu ra sao) có trong bài quản trị AI agent của chúng tôi.

Checklist bảo mật cho MCP server gồm những gì?

Đây là danh sách 20 điểm chúng tôi áp cho chính server của mình. Mục có dấu sao là những gì đặc tả 2026-07-28 yêu cầu hoặc khuyến nghị mạnh.

Phân quyền

  • OAuth 2.1 authorization code kèm PKCE, chỉ S256, cho mọi dữ liệu không công khai.*
  • Công bố Protected Resource Metadata (RFC 9728), và trả 401 với WWW-Authenticate chứa resource_metadata cùng scope cần thiết.*
  • Authorization-server metadata (RFC 8414 hoặc OpenID Connect Discovery) truy cập được từ tài liệu trên.*
  • Token được kiểm tra issuer, thời hạn, scope và audience hoặc client đích. Token cấp cho dịch vụ khác bị từ chối.*
  • Không chuyển tiếp token: server không bao giờ đưa token của client sang API bên thứ ba.*
  • Bản xây mới hỗ trợ Client ID Metadata Documents. Dynamic Client Registration chỉ dùng để tương thích, và chỉ với allowlist redirect URI so khớp chính xác.*
  • Access token ngắn hạn (chúng tôi dùng 60 phút) và có cơ chế thu hồi chạy được.

Quyền tối thiểu

  • Scope mặc định tối thiểu, thao tác đặc quyền phải qua thách thức step-up insufficient_scope.*
  • Quy tắc chỉ đọc được thực thi trong API sở hữu dữ liệu, không chỉ ở adapter MCP.
  • Agent hành động với tư cách người dùng: kiểm tra tenant, tổ chức và vai trò sẵn có vẫn chạy trên mọi lượt gọi.
  • Không mở danh sách thành viên, secret, file gốc hay xuất hàng loạt, trừ khi có use case cụ thể cần.

Tool

  • Mọi input của tool được kiểm tra theo schema chặt, mọi output được làm sạch.*
  • Mô tả tool được rà soát như code, lưu trong version control và so diff ở mỗi lần phát hành (phòng tool poisoning).
  • Tool trả về theo thứ tự cố định, tên tool duy nhất và ổn định.*
  • Hành động có hệ quả (thanh toán, xóa, gửi tin ra ngoài) phải có xác nhận rõ ràng của người dùng và idempotency key.

Vận hành

  • Rate limit theo người dùng và theo client (của chúng tôi: mặc định 120 request của agent mỗi phút cho mỗi người dùng).*
  • Một dòng audit cho mỗi request của agent: chủ thể, client, tool hoặc route, quyết định, thời điểm.
  • Cảnh báo khi lượt gọi bị từ chối tăng đột biến hoặc xuất hiện client lạ, và một kill switch tắt quyền truy cập của agent mà không cần deploy.
  • Dependency được ghim phiên bản và quét lỗ hổng; không khởi chạy server qua STDIO từ cấu hình không tin cậy.
  • Công bố server card, tài liệu xác thực dễ đọc và chính sách quyền riêng tư, để người đánh giá bảo mật tự đánh giá mà không cần họp.

Trước khi ra mắt, chạy server qua MCP Inspector và ít nhất hai client thật. Sau đó chạy lại các test đường bị từ chối trong checklist: sai scope, token hết hạn, ID của tenant khác, phương thức ghi, input quá cỡ.

Nên tự xây MCP server hay dùng nền tảng có sẵn?

Hãy tự xây khi dữ liệu là của bạn, nhạy cảm hoặc thuộc diện quản lý, vì logic phân quyền phải nằm cạnh dữ liệu. MCP gateway dạng dịch vụ hợp với việc mở các tool SaaS bên thứ ba cho nội bộ, hoặc cho bản prototype. Với server dành cho khách hàng trên chính sản phẩm của bạn, gateway vẫn cần API của bạn thực thi scope, tenant và audit, và đó vốn là phần việc lớn nhất. Dù chọn cách nào, agent bao quanh server vẫn cần kỷ luật production như mọi agent khác: xem đưa AI agent từ pilot lên production.

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

Xây một MCP server mất bao lâu?

MCP server công khai, chỉ đọc trên dữ liệu bạn đã phục vụ sẵn mất một đến hai tuần công kỹ sư senior, gồm cả test và server card. Server chỉ đọc có OAuth trên dữ liệu khách hàng mất ba đến sáu tuần. Server đọc-ghi hoặc trong ngành tuân thủ lâu hơn, vì phải khoanh scope, làm luồng xác nhận và kiểm thử bảo mật.

MCP server có bắt buộc dùng OAuth không?

Không, với dữ liệu công khai: hai server công khai của beevr.ai và ecocheck.ai không cần thông tin đăng nhập. Với dữ liệu riêng của người dùng thì có: đặc tả MCP định nghĩa OAuth 2.1 kèm PKCE, server đóng vai resource server và công bố metadata RFC 9728. Đừng bao giờ đưa API key hay mật khẩu vào cuộc trò chuyện với agent.

Dynamic Client Registration còn được dùng trong MCP không?

Còn, nhưng đã bị deprecated từ phiên bản 2026-07-28. Client ID Metadata Documents giờ là cách khuyến nghị để client tự định danh. DCR được giữ cho các authorization server chưa hỗ trợ cách mới. Nếu vẫn giữ DCR, hãy giới hạn redirect URI bằng allowlist so khớp chính xác.

Tool poisoning trong MCP là gì?

Tool poisoning là khi chỉ dẫn độc hại được giấu trong mô tả hoặc output của tool, và model làm theo, ví dụ gửi dữ liệu cho kẻ tấn công. Trong benchmark MCPTox, kiểu tấn công này thành công trung bình 36,5%. Cách phòng: mô tả tool được rà soát và quản lý phiên bản, output chặt chẽ, scope tối thiểu, và người dùng xác nhận các hành động có hệ quả.

MCP server có tuân thủ HIPAA hay PCI được không?

Server có thể được thiết kế để nằm gọn trong một hệ thống tuân thủ, nhưng tuân thủ là của cả hệ thống, không phải của giao thức. Giữ PHI hay dữ liệu thẻ ngoài output của tool, trừ khi endpoint model đã có thỏa thuận phù hợp; ghi log mọi truy cập; và đưa server vào phạm vi phân tích rủi ro. Phía y tế có trong bài AI agent tuân thủ HIPAA.

BeevR xây MCP server production và các agent gọi chúng cho sản phẩm trong ngành tuân thủ, giá cố định theo từng giai đoạn và bạn sở hữu toàn bộ code từ ngày đầu. Bạn có thể kết nối ngay vào server công khai của chúng tôi tại https://beevr.ai/mcp. Để đưa sản phẩm của bạn sẵn sàng cho agent, xem dịch vụ phát triển AI agent hoặc kể cho chúng tôi bạn muốn agent làm gì với sản phẩm của mình.