Bỏ qua tới nội dung
Bài 4/11 · Khoá học MCP (Hugging Face)

Các thành phần kiến trúc của MCP

Vai trò của host, client, server và luồng giao tiếp điển hình giữa chúng.

Cơ bản@shine19046 phút đọc

Ở bài trước, chúng ta đã bàn về các khái niệm và thuật ngữ chính của MCP. Giờ hãy đi sâu hơn vào các thành phần kiến trúc tạo nên hệ sinh thái MCP.

Host, client và server

Model Context Protocol (MCP) được xây dựng trên kiến trúc client–server, cho phép giao tiếp có cấu trúc giữa model AI và các hệ thống bên ngoài.

Kiến trúc MCP

Kiến trúc MCP gồm ba thành phần chính, mỗi thành phần có vai trò và trách nhiệm rõ ràng: host, client và server. Chúng ta đã nhắc qua ở bài trước, giờ hãy xem kỹ từng thành phần và trách nhiệm của nó.

Host

Host là ứng dụng AI mà người dùng cuối tương tác trực tiếp.

Ví dụ:

  • Ứng dụng chat AI như ChatGPT của OpenAI hay Claude Desktop của Anthropic
  • IDE tích hợp AI như Cursor, hoặc tích hợp vào tool như Continue.dev
  • AI agent và ứng dụng tự xây dựng bằng thư viện như LangChain hay smolagents

Trách nhiệm của host gồm:

  • Quản lý tương tác và quyền của người dùng
  • Khởi tạo kết nối tới các MCP server thông qua MCP client
  • Điều phối toàn bộ luồng xử lý giữa yêu cầu của người dùng, phần xử lý của LLM và các tool bên ngoài
  • Hiển thị kết quả cho người dùng theo định dạng mạch lạc

Trong hầu hết trường hợp, người dùng chọn ứng dụng host theo nhu cầu và sở thích. Ví dụ, một lập trình viên có thể chọn Cursor vì khả năng sửa code mạnh, còn chuyên gia trong một lĩnh vực có thể dùng ứng dụng riêng xây bằng smolagents.

Client

Client là một thành phần bên trong ứng dụng host, quản lý việc giao tiếp với một MCP server cụ thể. Đặc điểm chính:

  • Mỗi client duy trì kết nối 1:1 với một server duy nhất
  • Xử lý các chi tiết ở tầng giao thức của MCP
  • Đóng vai trò trung gian giữa logic của host và server bên ngoài

Server

Server là một chương trình hoặc dịch vụ bên ngoài, cung cấp các khả năng (capability) cho model AI qua giao thức MCP. Server:

  • Cho phép truy cập các tool, nguồn dữ liệu hoặc dịch vụ bên ngoài cụ thể
  • Là lớp bọc gọn nhẹ quanh các chức năng sẵn có
  • Có thể chạy cục bộ (cùng máy với host) hoặc từ xa (qua mạng)
  • Công bố khả năng của mình theo định dạng chuẩn để client có thể khám phá và sử dụng

Luồng giao tiếp

Hãy xem các thành phần này tương tác với nhau thế nào trong một quy trình MCP điển hình:

  1. Người dùng tương tác: người dùng làm việc với ứng dụng host, đưa ra một ý định hoặc câu hỏi.
  2. Host xử lý: host xử lý đầu vào của người dùng, có thể dùng LLM để hiểu yêu cầu và xác định cần những khả năng bên ngoài nào.
  3. Client kết nối: host yêu cầu thành phần client của nó kết nối tới (các) server phù hợp.
  4. Khám phá khả năng: client truy vấn server để biết server cung cấp những khả năng nào (Tools, Resources, Prompts).
  5. Gọi khả năng: dựa trên nhu cầu của người dùng hoặc quyết định của LLM, host yêu cầu client gọi những khả năng cụ thể của server.
  6. Server thực thi: server thực hiện chức năng được yêu cầu và trả kết quả về cho client.
  7. Tích hợp kết quả: client chuyển kết quả về host; host đưa kết quả vào ngữ cảnh cho LLM hoặc hiển thị trực tiếp cho người dùng.

Một ưu điểm quan trọng của kiến trúc này là tính mô-đun. Một host có thể kết nối đồng thời với nhiều server thông qua các client khác nhau. Có thể thêm server mới vào hệ sinh thái mà không cần thay đổi các host hiện có. Các khả năng từ nhiều server khác nhau có thể dễ dàng kết hợp với nhau.

Kiến trúc này trông có vẻ đơn giản, nhưng sức mạnh của nó nằm ở việc chuẩn hoá giao thức giao tiếp và phân tách rõ trách nhiệm giữa các thành phần. Thiết kế này tạo nên một hệ sinh thái gắn kết, nơi model AI có thể kết nối liền mạch với số lượng tool và nguồn dữ liệu bên ngoài ngày càng nhiều.

Kết luận

Các mẫu tương tác này tuân theo một số nguyên tắc chính định hình thiết kế và sự phát triển của MCP. Giao thức đề cao chuẩn hoá bằng cách cung cấp một giao thức chung cho việc kết nối AI, đồng thời giữ đơn giản với phần lõi gọn gàng nhưng vẫn hỗ trợ tính năng nâng cao. An toàn được ưu tiên bằng cách yêu cầu người dùng phê duyệt rõ ràng cho các thao tác nhạy cảm, và khả năng khám phá cho phép tìm ra các khả năng một cách động. Giao thức được thiết kế để mở rộng, hỗ trợ phát triển thông qua quản lý phiên bản và thương lượng khả năng, đồng thời đảm bảo khả năng tương tác giữa các phần triển khai và môi trường khác nhau.

Ở bài tiếp theo, chúng ta sẽ tìm hiểu giao thức giao tiếp giúp các thành phần này làm việc hiệu quả cùng nhau.

Nguồn