Lời mở đầu
Xin chào mọi người, lại là tôi đây. Trong thế giới AI ngày nay, một trong những thách thức lớn nhất không chỉ là xây dựng những mô hình mạnh mẽ, mà còn là làm thế nào để mô hình có thể giao tiếp, hiểu và phối hợp hiệu quả với các công cụ, dữ liệu, hay dịch vụ bên ngoài. Đây chính là lý do Model Context Protocol (MCP) ra đời.
Trong bài viết này, chúng ta sẽ cùng nhau đi sâu vào khám phá MCP là gì, tại sao nó quan trọng, cách nó hoạt động và những ứng dụng thực tế mà MCP có thể mang lại.
I. Model Context Protocol
Các khái niệm và thuật ngữ chính
Trước khi đi sâu vào Model Context Protocol, việc hiểu các khái niệm và thuật ngữ chính của MCP là rất quan trọng.
Phần này sẽ giới thiệu về những ý tưởng cơ bản và thuật ngữ liên quan đến MCP.
MCP được định nghĩa như là "USB-C for AI applications.". MCP cung cấp giao thức nhất quán để liên kết các model AI với các công cụ bên ngoài.
The Integration Problem
M x N Integration Problem là thuật ngữ nói đến sự thách thức của việc kết nối M ứng dụng AI với N công cụ bên ngoài (hoặc là nguồn dữ liệu)
Khi chưa có MCP (M x N Problems)
Khi không có giao thức như MCP, mỗi ứng dụng AI cần tích hợp với mỗi tool bên ngoài một cách riêng biệt. Việc này rất phức tạp và tốn kém chi phí và thời gian.
Khi chúng ta có nhiều ứng dụng AI và nhiều tool, số lượng tool cần tích hợp là vô cùng lớn (M x N problems)
Khi có MCP (M + N solutions)
MCP xử lý vấn đề M x N problems thành M + N solutions bằng cách cung cấp một chuẩn kết nối: mỗi ứng dụng AI được triển khai ở phía máy khách MCP một lần, và mỗi tool/data source triển khai ở phía Server một lần.
Thuật ngữ chính của MCP
Components
Tương tự như client server trong HTTP, MCP cũng có client và server
- Host: Phần người dùng tương tác trực tiếp với ứng dụng AI (có thể là Claude Desktop, Cursor)
- Client: Thành phần nằm trong Host đảm nhiệm phần kết nối tới MCP Server
- Server: Một chương trình bên ngoài hoặc một service cung cấp các khả năng (tools, resources, prompts) thông qua MCP protocols.
Capabilities
Mặc dù có rất nhiều tool mà MCP có thể kết nối đến, tuy nhiên sẽ có những tool chung được sử dụng cho nhiều ứng dụng AI. Dưới đây là các loại tool được sử dụng cho nhiều ứng dụng AI.
- Tools: Một hàm mà model AI cung cấp có thể thực thi các hành động hoặc là tính toán. (Ví dụ tool get_weather)
- Resources: Read-only data sources cung cấp context mà không cần tính toán quan trọng (Ví dụ các scientific papers cho trợ lý nghiên cứu)
- Prompts: Các templates hoặc workflows hướng dẫn tương tác giữa users, AI moels và các công cụ bên ngoài
II. Architecture Components của MCP
Sau khi đã nắm được các khái niệm và thuật ngữ chính cho MCP, chúng ta sẽ đến với kiến trúc của MCP.
Host, Client, và Server
Model Context Protocol (MCP) được xây dựng dựa trên kiến trúc client-server giúp cung cấp khả năng tương tác giữa mô hình AI và công cụ bên ngoài.
Host
Host là phần người dùng cuối (end users) tương tác trực tiếp với ứng dụng AI.
Ví dụ như Claude Desktop, Cursor...
Host sẽ chịu trách nhiệ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 MCP Servers thông qua MCP Clients
- Xử lý request của người dùng để điều hướng luồng tới các công cụ bên ngoài
- Trả về kết quả cho người dùng
Client
Client là thành phần nằm trong Host giúp quản lý kết nối với MCP server cụ thể.
Client có các đặc điểm:
- Mỗi client duy trì kết nối 1:1 tới một Server
- Xử lý protocol-level của MCP
- Hoạt động như phần trung gian giữa Host và Server
Server
Server là chương trình bên ngoài hoặc dịch vụ cung cấp cho mô hình AI thông qua MCP protocols.
Server sẽ chịu trách nhiệm:
- Cung cấp kết nối tới các thành phần bên ngoài như các tools, nguồn dữ liệu hoặc dịch vụ.
- Có thể chạy local (cùng máy với Host) hoặc remotely (thông qua mạng)
- Cung cấp chuẩn kết nối giúp Clients có thể sử dụng
Communication Flow
Tiếp theo chúng ta sẽ đến với workflows của MCP:
- Ban đầu, người dùng sẽ tương tác với Host.
- Host sẽ thực hiện xử lý yêu cầu của người dùng, sử dụng LLM để xác định công cụ bên ngoài nào cần được sử dụng
- Host chỉ định Client đi connect tới Server
- Client sẽ gọi tới Server để trả về danh sách các tool của Server
- Host sẽ chỉ dẫn Client để sử dụng tool được lấy từ server
- Server sẽ thực thi yêu cầu và trả về kết quả cho client.
- Host sẽ tổng hợp kết quả từ client và sinh ra câu trả lời cho người dùng.
III. Communication Protocol
Cuối cùng chúng ta sẽ đi đến phần giao thức MCP.
JSON-RPC: The Foundation
MCP sử dụng JSON-RPC 2.0 để xử lý tất cả kết nối giữa Client và Server. JSON-RPC là phiên bản nhẹ hơn của RPC (Remote Procedure Call) được mã hóa trong JSON, nó giúp cho:
- Dễ đọc và debug
- Không phụ thuộc ngôn ngữ, hỗ trợ triển khai trong mọi môi trường lập trình
- Có thông số kỹ thuật rõ ràng và được áp dụng rộng rãi
Giao thức có 3 loại message:
- Request
- Là message được gửi từ Client tới Server để khởi tạo kết nối. Request Message bao gồm:
- Responses
- Được gửi từ Server trả về Client để phản hồi lại Request. Response Message bao gồm:
- Notifications
- Là dạng message một chiều, chỉ được gửi từ Server trả về Client để cung cấp cập nhật hoặc thông báo về sự kiện nào đó.
Transport Mechanisms
MCP chỉ định cách các message được vận chuyển giữa Client và Server như sau:
- stdio (Standard Input/Output)
- Được sử dụng khi Client và Server chạy trên cùng một máy
- Ứng dụng Host khởi chạy Server như một tiến trình con và giao tiếp với Server bằng cách ghi vào đầu vào chuẩn (stdin) và đọc từ đầu ra chuẩn (stdout).
- HTTP + SSE (Server-Sent Events) / Streamable HTTP
- Được sử dụng khi Client và Server khác máy
- Giao tiếp diễn ra qua HTTP, trong đó Server sử dụng Server-Sent Events (SSE) để đẩy các update và notifications tới Clients qua kết nối liên tục.
Kết luận
Trên đây chúng ta đã cùng tìm hiểu về Model Context Protocol (MCP). Hi vọng có thể giúp đỡ được các bạn hiểu thêm phần nào về MCP.