Giới thiệu về Model Context Protocol

Các LLMs (Large Language Model) hay AI models như ChatGPT, Gemini,… chỉ được train dữ liệu chỉ tới một thời điểm nào đó, người ta gọi là thời điểm cutoff. Ví dụ như, cho ChatGPT ở thời điểm mình viết bài viết này thì hiểu biết của nó chỉ tới tháng 4 năm 2024:

Hay Gemini thì cũng chỉ tới tháng 6 năm 2024:

Điều này có nghĩa những thông tin mới sau thời điểm cutoff trên, ChatGPT hay Gemini đều không có thông tin để trả lời cho chúng ta được.

Một vấn đề khác nữa mà các LLMs không thể làm được là trả lời các thông tin liên quan đến cá nhân của chúng ta, dữ liệu trên máy của chúng ta hoặc một nội dung private nào đó.

Để các LLMs có thể biết được các thông tin private hoặc sau thời điểm cutoff, các duy nhất là chúng ta phải provide thông tin cho nó.

Chúng ta có thể provide thông tin cho các LLMs nhưng vấn đề là mỗi LLMs sẽ có cách đọc thông tin khác nhau, làm thế nào để chuẩn hoá chúng? Đó là lý do khái niệm Model Context Protocol (MCP) ra đời đó các bạn! MCP được giới thiệu bởi Anthropic, cha đẻ của AI model Claude, định nghĩa standard để các AI models có thể truy cập đến các datasources khác nhau, nhờ đó nó có thể trả lời các thông tin mà chúng ta muốn.

MCP General Architecture

Để hiểu về MCP, các bạn cần nắm các khái niệm sau:

  • MCP Hosts: là các chương trình client của các API models, được sử dụng để access các dữ liệu cá nhân hoặc các dữ liệu sau thời điểm cutoff.
  • MCP Clients: bên trong MCP Host, kết nối với MCP Server để lấy thông tin.
  • MCP Servers: là các ứng dụng expose dữ liệu từ các datasource cho các AI models sử dụng Model Context Protocol.

General Architecture của MCP, mình có thể vẽ lại như sau:

Như các bạn thấy, cho từng datasource, chúng ta sẽ có MCP Server tương ứng cho datasource đó. MCP Server 1 và 2 expose data cho các datasource trên local machine, còn MCP Server 3 sẽ connect tới 1 Remote Service để lấy thông tin và expose data cho AI models theo chuẩn MCP.

Có rất nhiều MCP Server được xây dựng sẵn ở đây https://github.com/modelcontextprotocol/servers?tab=readme-ov-file#-reference-servers.

Bây giờ, mình sẽ hướng dẫn các bạn cách sử dụng một MCP server đơn giản để hiểu cách hoạt động của MCP Server như thế nào các bạn nhé!

Cấu hình MCP Server với MCP Host

MCP Server mà mình sẽ sử dụng để làm ví dụ là Filesystem tại https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem. MCP Server này được viết bằng Node.JS đó các bạn!

Filesystem MCP Server cho phép các bạn có thể làm nhiều tác vụ khác nhau sử dụng các tool được liệt kê tại https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem#tools. Các bạn có thể hiểu nôm na tool là feature mà chúng ta có thể sử dụng với MCP Server.

MCP Host mà mình sẽ sử dụng là ứng dụng Desktop của Claude AI.

Để cấu hình MCP Server Filesystem với MCP Host là ứng dụng Claude Desktop, các bạn hãy mở ứng dụng Claude Desktop lên, sau đó thì vào menu Settings. Trong cửa sổ Settings, các bạn hãy chọn tab Developer:

rồi click vào nút Edit Config. Một tập tin claude_desktop_config.json sẽ được mở ra.

Tập tin claude_desktop_config.json này chứa định nghĩa của tất cả các MCP Server cho Claude Desktop đó các bạn! Các MCP Server này sẽ được chạy mỗi khi chúng ta chạy Claude Desktop.

Các bạn có thể cấu hình Filesytem MCP Server trong tập tin claude_desktop_config.json với nội dung như sau:

Với cấu hình này, Claude Desktop sẽ cài đặt Filesystem MCP Server bằng cách chạy command Node Package eXecute (NPX) của Node.js để download package @modelcontextprotocol/server-filesystem từ địa chỉ https://www.npmjs.com/package/@modelcontextprotocol/server-filesystem.. Thư mục “/Users/khanhnguyenj/Documents/code/huongdanjava.com” là thư mục trên máy của mình, sẽ được sử dụng bởi Filesystem MCP server để truy vấn thông tin. Các bạn có thể thêm nhiều thư mục nếu các bạn muốn.

Sau khi đã cấu hình xong Filesystem MCP Server, các bạn hãy restart lại Claude Desktop.

Sau khi khởi động lại, các bạn sẽ thấy Filesystem MCP Server được include trong Claude Desktop như sau:

Bây giờ, mình chỉ cần nhập Prompt “List out all folders”, cho ví dụ của mình Claude Desktop hiển thị kết quả như sau:

Như các bạn thấy, Claude Desktop sử dụng các tool list_allowed_directories, directory_treelist_directory để liệt kê hết các thư mục trong thư mục mà mình đã cấu hình. Một điểm hay là nó có thể phân loại thư mục chứa các thông tin về vấn đề gì và đưa ra kết luận chung về thư mục này luôn các bạn:

Như vậy là Filesystem MCP Server đã giúp chúng ta có thể truy vấn được các thông tin trên máy của mình, cái mà mặc định Claude Desktop không thể làm được.

Add Comment