Các bài viết trong series:
  1. MCP - Prompts & Resources
Series

Xây dựng máy khách MCP - Phần 1: Cơ chế

6 months ago MCP

Xây dựng một máy khách MCP cơ bản không khó, nhưng trước tiên để làm được bất kỳ điều gì thì chúng ta cần phải hiểu được cách nó hoạt động. Máy khách MCP cần phải có cơ chế phối hợp nhịp nhàng với máy chủ MCP, và đó là đặc tả của MCP.

Về cơ bản quá trình giao tiếp giữa máy khách với máy chủ diễn ra như sau. Ở đây mình xin phép lược bớt các thành phần như xác thực, khám phá danh sách prompts, danh sách tài nguyên... mà máy chủ cung cấp. Thay vào đó tập trung vào một luồng chính cơ bản tức lúc nhập một yêu cầu ra lệnh, đến lúc thực thi và cho đến khi nhận được kết quả.

Sơ đồ hoạt động MCP Client

Bước 1: Máy khách khởi tạo kết nối đến mô hình ngôn ngữ lớn (như sử dụng thư viện openai) và máy chủ MCP.

Bước 2: Máy khách tự khám phá danh sách tools từ máy chủ MCP.

Bước 3: Người dùng nhập yêu cầu, máy khách xử lý yêu cầu, gửi tất cả dữ liệu đến mô hình ngôn ngữ lớn.

Bước 4: Mô hình phản hồi kết quả kèm theo tool phù hợp với yêu cầu. Có thể có hoặc không có tool phù hợp. Nếu không có thì kết thúc, trả lời rằng không tìm thấy, còn nếu có thì tiếp tục sang bước 5.

Bước 5: Máy khách gọi MCP tools từ máy chủ và nhận kết quả.

Bước 6: Máy khách nhận kết quả từ máy chủ, tiếp tục xử lý và đưa ra câu trả lời cuối cùng cho người dùng.

Đến đây thì hẳn có người nhận ra các bước này từng gặp ở đâu rồi thì phải. Chính xác! Nó khá tương đồng với với Function calling trong một số nhà cung cấp LLMs như OpenAI. Function calling yêu cầu danh sách các hàm để LLMs tìm ra được hàm phù hợp mà gọi nó và nhận kết quả. Máy khách MCP cũng tương tự, điểm khác biệt chính ở đây là một cái gọi hàm trong máy chủ còn một cái thì gọi hàm đến máy chủ.

Trong bộ SDK của MCP đã viết sẵn cho chúng ta các API cơ bản như lấy danh sách prompts, danh sách resources và cả hàm để gọi đến máy chủ. Việc còn lại của chỉ là kết hợp chúng lại với nhau để tạo ra một máy khách theo ý muốn. Trong bài viết tiếp theo chúng ta sẽ viết một máy khách MCP cơ bản sử dụng trong dòng lệnh nhé.