BIẾT A.I CHƯA?

Model Context Protocol (MCP): Chìa khóa mở khóa tiềm năng của AI Agent

Trong vài năm trở lại đây, cụm từ “AI Agent” đã trở nên quen thuộc, hứa hẹn một tương lai nơi các tác nhân AI có thể tự động hóa và thực hiện các nhiệm vụ phức tạp. Tuy nhiên, hành trình đưa các tác nhân này từ ý tưởng đến thực tế thường gặp phải một rào cản lớn: sự phân mảnh trong cách các ứng dụng AI tương tác với công cụ và nguồn dữ liệu bên ngoài. May mắn thay, một giải pháp mang tính cách mạng đã xuất hiện, và nó được gọi là Model Context Protocol (MCP).

Khi lần đầu tiên tìm hiểu về MCP, mình cũng như nhiều người khác, đã nghe những lời ca ngợi rằng nó là một “kẻ thay đổi cuộc chơi”. Sau khi dành thời gian nghiên cứu chuyên sâu, tham gia các khóa học, và thậm chí tự xây dựng các máy chủ và ứng dụng MCP cho đội ngũ của mình cũng như cho các khách hàng B2B, mình phải khẳng định rằng: những lời khen đó hoàn toàn có cơ sở. MCP không chỉ đơn thuần là một giao thức; nó là một cầu nối, một tiêu chuẩn hóa thiết yếu giúp các ứng dụng AI của chúng ta khai thác sức mạnh thực sự của chúng.

Bài viết này sẽ đưa bạn đi sâu vào thế giới của Model Context Protocol (MCP), từ những khái niệm nền tảng, kiến trúc hoạt động, cho đến cách bạn có thể tự xây dựng các máy chủ MCP của riêng mình, dù bạn là người thích phương pháp không cần code hay muốn tùy chỉnh sâu hơn bằng cách viết code.

Chia sẻ bởi Tina Huang

Model Context Protocol (MCP) là gì? Một chuẩn mực mới cho AI

Để hiểu rõ Model Context Protocol (MCP) là gì, chúng ta hãy bắt đầu với định nghĩa chính thức từ Anthropic – những người đã phát triển nó. MCP được định nghĩa là một giao thức mở, chuẩn hóa cách các ứng dụng mô hình ngôn ngữ lớn (LLM) kết nối và làm việc với các công cụ cũng như nguồn dữ liệu của bạn.

Nghe có vẻ hơi phức tạp đúng không? Hãy hình dung thế này: MCP giống như một cổng USB phổ biến mà chúng ta vẫn sử dụng hàng ngày. Trước khi có USB, việc kết nối các thiết bị ngoại vi với máy tính là một cơn ác mộng. Bạn cần hàng tá loại cáp và cổng khác nhau cho từng thiết bị: một loại cho chuột, một loại cho bàn phím, một loại cho webcam, v.v. Mỗi nhà sản xuất lại có một “ngôn ngữ” riêng để thiết bị của họ giao tiếp. Điều này cực kỳ phức tạp, tốn kém và cản trở sự đổi mới.

Tuy nhiên, với sự ra đời của cổng USB, mọi thứ thay đổi hoàn toàn. Giờ đây, bạn có thể cắm hầu hết mọi thiết bị vào bất kỳ máy tính nào chỉ với một loại cáp duy nhất và chúng hoạt động trơn tru. Sự đơn giản này đã mở ra cánh cửa cho vô vàn sự đổi mới trong lĩnh vực công nghệ.

Vấn đề trước MCP: Sự phân mảnh trong tích hợp AI Agent

Tương tự như kỷ nguyên trước USB, thế giới AI Agent trước đây cũng đối mặt với một vấn đề tương tự. Nếu bạn muốn xây dựng một AI Agent có khả năng thực hiện nhiều tác vụ (ví dụ: lên lịch hẹn, gửi email, ghi chú, tham gia cuộc họp Zoom), bạn sẽ phải cung cấp cho nó quyền truy cập vào các công cụ như lịch, email, ứng dụng ghi chú, Zoom, Calendly.

Vấn đề nằm ở chỗ, mỗi hệ thống và công cụ bên ngoài này đều có một định nghĩa riêng về cách tương tác với chúng, thông qua các API chuyên biệt. Điều này có nghĩa là bạn cần phải viết mã tùy chỉnh cho từng công cụ mà bạn muốn AI Agent của mình sử dụng. Việc này không chỉ tốn thời gian, công sức mà còn tạo ra một “mớ bòng bong” phức tạp, cản trở việc mở rộng khả năng của tác nhân AI.

Giải pháp của MCP: Chuẩn hóa giao tiếp cho AI Agent

Đây chính là lúc Model Context Protocol (MCP) phát huy vai trò của mình. Khi Anthropic đề xuất MCP, nó ngay lập tức được chào đón như một giải pháp tuyệt vời. MCP chuẩn hóa cách chúng ta tương tác với tất cả các phần mềm bên ngoài này, cho phép AI Agent truy cập vô số công cụ và dịch vụ bằng cùng một giao thức.

Chỉ trong vài tháng sau khi MCP ra đời, số lượng công cụ mà bạn có thể cung cấp cho AI Agent (mà chúng ta gọi là MCP servers) đã bùng nổ lên đến hàng ngàn. Hiện nay, có hơn 20.000 MCP server được xây dựng sẵn mà bạn có thể dễ dàng sử dụng. Bất kỳ ai cũng có thể dễ dàng viết, xuất bản và sử dụng chúng, mở ra một kỷ nguyên mới của sự kết nối liền mạch và khả năng vô tận cho AI Agent.

Kiến trúc HCS và Thành phần cốt lõi của MCP Server

Để hiểu sâu hơn về cách MCP hoạt động, chúng ta cần tìm hiểu về kiến trúc Client-Server (HCS) và ba yếu tố chính cấu thành một MCP Server.

Kiến trúc Client-Server (HCS): Host, Client, Server

Trong hệ thống MCP, có ba thành phần chính tương tác với nhau:

  • Host (Máy chủ lưu trữ): Đây là ứng dụng LLM muốn truy cập các công cụ hoặc dữ liệu thông qua MCP. Ví dụ điển hình bao gồm các ứng dụng như Claude desktop, n8n, hay các AI Agent, IDE (môi trường phát triển tích hợp) do bạn tự xây dựng. Về cơ bản, bất kỳ ứng dụng mô hình ngôn ngữ lớn nào cũng có thể đóng vai trò là Host.
  • Client (Ứng dụng khách): MCP Client là một thành phần sống bên trong Host. Nhiệm vụ của nó là khởi tạo và duy trì kết nối một-một với MCP Server bằng cách sử dụng giao thức MCP. Nó đóng vai trò trung gian, cho phép Host gửi yêu cầu và nhận phản hồi từ Server.
  • Server (Máy chủ): MCP Server là các chương trình nhẹ, độc lập, có chức năng chuyên biệt, cung cấp các khả năng cụ thể (tools, resources, prompt templates) mà Host muốn sử dụng. Các ví dụ về MCP Server bao gồm:
    • Alpha Vantage: Cung cấp dữ liệu thị trường chứng khoán theo thời gian thực và lịch sử.
    • Time: Cung cấp khả năng chuyển đổi thời gian và múi giờ.
    • Cherry Studio: Hỗ trợ các nhà cung cấp LLM, trợ lý AI và xử lý dữ liệu.
    • PostgreSQL: Cung cấp quyền truy cập chỉ đọc vào cơ sở dữ liệu PostgreSQL.
    • GitLab, Redis: Tương tự, cung cấp quyền truy cập vào các hệ thống tương ứng.
      Số lượng các MCP Server ngày càng tăng, cung cấp một thư viện phong phú các chức năng sẵn có.

Ba yếu tố chính tạo nên một MCP Server (TRP): Tools, Resources, Prompt Templates

Một MCP Server được thiết kế để cung cấp ba loại thông tin hoặc khả năng chính:

  • Tools (Công cụ): Đây là các hàm hoặc chức năng mà MCP Client có thể gọi để thực hiện một hành động cụ thể. Đây là thành phần được sử dụng phổ biến nhất khi chúng ta nghĩ về việc cung cấp khả năng cho AI Agent. Ví dụ:
    • Các hàm để truy xuất dữ liệu chứng khoán (như time series, intraday, global quote).
    • Gửi tin nhắn trong Gmail.
    • Sử dụng máy tính để thực hiện phép toán.
    • Truy xuất và tìm kiếm thông tin.
    • Cập nhật các bản ghi trong cơ sở dữ liệu.
      Công cụ cho phép AI Agent thực hiện hành động trong thế giới thực.
  • Resources (Tài nguyên): Không chỉ là hành động, đôi khi AI Agent cần truy cập vào dữ liệu tĩnh, chỉ đọc. Resources chính là phần này. Chúng là các tệp hoặc bản ghi dữ liệu mà server phơi bày để client có thể truy vấn nhưng không thể thay đổi. Ví dụ:
    • Các tệp ghi chú Markdown.
    • Lịch sử log của các lần gọi công cụ (ví dụ: ghi lại dữ liệu thời tiết đã thu thập được).
    • Các bản ghi cơ sở dữ liệu chứa thông tin như hợp đồng, ghi âm cuộc họp, ghi chú.
      Resources giúp AI Agent có “bối cảnh” (context) tĩnh để làm việc mà không cần phải liên tục gọi công cụ để thu thập lại thông tin đã có.
  • Prompt Templates (Mẫu lời nhắc): Đây là các bản thiết kế lời nhắc có cấu trúc được xây dựng sẵn, giúp tối ưu hóa cách người dùng tương tác với AI Agent. Thay vì buộc người dùng phải tự nghĩ ra các prompt hiệu quả, MCP Server có thể cung cấp các mẫu prompt được xây dựng bởi chuyên gia. Ví dụ:
    • Nếu bạn muốn AI Agent tóm tắt một bản ghi cuộc họp và tạo báo cáo, thay vì viết một prompt đơn giản như “tóm tắt bản ghi này và tạo báo cáo”, bạn có thể sử dụng một prompt template chi tiết hơn được tích hợp sẵn trong server. Template này sẽ hướng dẫn AI Agent cách trích xuất thông tin chi tiết và tạo báo cáo theo định dạng tốt nhất, giúp người dùng đạt được kết quả mong muốn mà không cần phải là một chuyên gia kỹ thuật prompt.

Ví dụ tổng hợp: Hãy tưởng tượng một MCP Server cho cơ sở dữ liệu SQLite. Nó có thể bao gồm:

  • Tools: Các công cụ để đọc, chèn, thay đổi và xóa thông tin từ cơ sở dữ liệu.
  • Resources: Một bản ghi log tất cả các thay đổi đã xảy ra với cơ sở dữ liệu, cung cấp lịch sử đầy đủ.
  • Prompt Templates: Các mẫu lời nhắc đã được tối ưu hóa để tương tác hiệu quả nhất với cơ sở dữ liệu đó.

Sự kết hợp của Tools, Resources và Prompt Templates cho phép các MCP Server cung cấp một bộ khả năng toàn diện và mạnh mẽ cho AI Agent.

Giao tiếp trong MCP: Vòng đời và các loại Transport

Sau khi đã hiểu các thành phần, chúng ta hãy xem cách MCP Client và MCP Server giao tiếp với nhau. Quá trình này diễn ra theo một vòng đời và thông qua các phương thức truyền tải (transport) khác nhau.

Vòng đời giao tiếp MCP

Vòng đời giao tiếp giữa client và server trong MCP thường bao gồm ba giai đoạn chính:

  1. Khởi tạo (Initialization): Đây là bước đầu tiên, khi MCP Client tương tác với MCP Server để thiết lập kết nối. Client “chào hỏi” server và bày tỏ mong muốn được truy cập các khả năng của server.
  2. Trao đổi thông điệp (Message Exchange): Sau khi kết nối được thiết lập, client sẽ gửi các yêu cầu đến server (ví dụ: “Tôi muốn sử dụng công cụ X”) và server sẽ xử lý yêu cầu đó, sau đó gửi lại phản hồi cho client. Quá trình này có thể lặp lại nhiều lần tùy thuộc vào tác vụ.
  3. Chấm dứt (Termination): Cuối cùng, khi client và server không còn nhu cầu tương tác, kết nối sẽ được chấm dứt.

Các loại Transport (Phương thức truyền tải)

Transport là cơ chế xử lý các hoạt động ngầm định về cách các thông điệp được gửi và nhận giữa client và server. Có hai loại chính:

  1. Server cục bộ (Local Server):
    Loại transport này được sử dụng khi MCP Server và Host (nơi chứa MCP Client) chạy trên cùng một máy tính. Hãy tưởng tượng bạn và một người bạn đang nấu ăn tại nhà. Bạn (MCP Server) đang nấu, và bạn viết ra những gì bạn đang làm vào một cuốn sổ tay, sau đó đưa cho người bạn (MCP Client) để họ nắm bắt thông tin. Trong trường hợp này, thông tin được trao đổi trực tiếp, không cần qua bất kỳ bên trung gian nào. Đây tương tự như việc sử dụng stdout (standard output) để ghi log hoặc chia sẻ thông tin cục bộ.
  2. Server từ xa (Remote Server):
    Đây là trường hợp server nằm trên một máy khác, thường là trên cloud. Có hai cách tiếp cận chính để tương tác với server từ xa:
    • HTTP + SSE (Server-Sent Events) – Kết nối có trạng thái (Stateful):
      Với kết nối có trạng thái, server duy trì “bộ nhớ” về các tương tác trước đó trong suốt phiên làm việc. Hãy hình dung bạn đang ở một nhà hàng sang trọng. Bạn (client) ngồi xuống, gọi món khai vị và đồ uống từ người phục vụ (server). Nếu sau đó bạn muốn gọi thêm đồ uống tương tự, bạn chỉ cần nói “cho mình thêm một cốc đồ uống như vừa rồi” mà không cần lặp lại toàn bộ chi tiết. Người phục vụ nhớ trạng thái order của bạn.
      Tuy nhiên, phương pháp HTTP + SSE hiện đã được coi là lỗi thời (deprecated) vì sự phức tạp và hạn chế của nó.
    • Streamable HTTP – Hỗ trợ cả có trạng thái và không trạng thái: Đây là phương thức transport được khuyến nghị và linh hoạt hơn. Nó có thể hỗ trợ cả kết nối có trạng thái và không trạng thái.
      • Không trạng thái (Stateless): Giống như khi bạn ở một nhà hàng thức ăn nhanh. Mỗi lần bạn đặt món, bạn phải đưa ra toàn bộ yêu cầu từ đầu. Người thu ngân (server) không nhớ đơn hàng trước đó của bạn. Mỗi yêu cầu là độc lập và không liên quan đến các yêu cầu trước.
      • Có trạng thái (Stateful): Streamable HTTP cũng có thể được cấu hình để hoạt động giống như kết nối có trạng thái, tùy thuộc vào nhu cầu.
        Khả năng hỗ trợ cả hai loại kết nối khiến Streamable HTTP trở thành lựa chọn tối ưu, vì có những tình huống cần duy trì trạng thái và có những tình huống không cần.

Mặc dù phần này có vẻ mang tính lý thuyết, việc nắm vững các khái niệm về vòng đời giao tiếp và các loại transport là cực kỳ quan trọng khi bạn bắt đầu sử dụng và xây dựng các MCP Server của riêng mình.

Hướng dẫn thực hành: Xây dựng MCP Server của riêng bạn

Sau khi đã nắm vững lý thuyết, giờ là lúc chúng ta đi vào phần thực hành. Bạn có thể xây dựng MCP Server bằng cả phương pháp không cần code (no-code) hoặc thông qua lập trình.

(1) Xây dựng MCP Server không cần code với n8n

n8n là một công cụ no-code/low-code mạnh mẽ cho phép bạn xây dựng các quy trình làm việc tự động và thú vị hơn là cả MCP Server.

Các bước tạo một MCP Server đơn giản (ví dụ: Gmail và Calculator):

  1. Bắt đầu một workflow mới trong n8n: Đầu tiên, bạn cần một workflow trống và thêm một “server trigger” (kích hoạt máy chủ) để định nghĩa MCP Server của mình.
  2. Thêm các công cụ (Tools):
    • Kéo và thả một node “Calculator”. Node này sẽ cung cấp khả năng thực hiện các phép toán.
    • Kéo và thả một node “Gmail”. Bạn cần thiết lập thông tin đăng nhập Gmail của mình để cho phép server gửi email. Trong cấu hình node Gmail, bạn có thể chọn hoạt động là “Send” và đặt các trường như “To”, “Subject”, “Message” thành “Let the model decide” (để mô hình AI tự quyết định), cho phép AI Agent linh hoạt hơn.
  3. Kích hoạt và lấy URL của Server: Sau khi cấu hình xong, hãy lưu workflow và đảm bảo rằng server đã được kích hoạt (active). n8n sẽ cung cấp cho bạn một “Production URL” – đây chính là điểm cuối (endpoint) để AI Agent có thể truy cập MCP Server của bạn.

Kết nối MCP Server với AI Agent (ví dụ: Claude desktop hoặc AI Agent trong n8n):

  • Với AI Agent trong n8n: Trong một workflow AI Agent riêng biệt, bạn sẽ thêm một node “MCP Client”. Dán “Production URL” của MCP Server vừa tạo vào trường “Endpoint”. Đảm bảo chọn “HTTP Streamable” làm phương thức transport. Sau đó, AI Agent của bạn có thể sử dụng các công cụ từ server đó.
    • Ví dụ: Bạn có thể yêu cầu AI Agent “Calculate 11 * 99”. AI Agent sẽ gọi MCP Client, sau đó client gọi công cụ Calculator trên MCP Server, và bạn sẽ nhận được kết quả 1089.
  • Với Claude desktop:
    1. Vào phần “Help” trong Claude, tìm “Developer” và bật “Developer mode”.
    2. Mở tệp cấu hình Claude desktop (thường là tệp JSON trống) bằng một trình soạn thảo văn bản.
    3. Thêm cấu hình cho MCP Server, bao gồm tên server, endpoint URL (lấy từ n8n) và phương thức transport (ví dụ: sse hoặc http_streamable). Lưu tệp và khởi động lại Claude.
    4. Claude giờ đây sẽ hiển thị các công cụ từ MCP Server của bạn (ví dụ: “Send a message in Gmail” và “Calculator”).
    • Ví dụ: Bạn có thể yêu cầu Claude “Send an email to [email protected] asking her to host an octopus party”. Claude sẽ hỏi xác nhận để sử dụng công cụ Gmail từ MCP Server của bạn, và sau khi được cho phép, email sẽ được gửi tự động.

Giới hạn của phương pháp No-Code:
Mặc dù phương pháp no-code với n8n cực kỳ dễ tiếp cận và nhanh chóng, nó có một số hạn chế. Hiện tại, bạn không thể thêm “Resources” hoặc “Prompt Templates” vào MCP Server được tạo bằng n8n. Đây là lúc phương pháp viết code trở nên cần thiết.

(2) Xây dựng MCP Server bằng code (ví dụ: Google Sheets và Google Forms)

Việc viết code cho phép bạn tùy chỉnh sâu rộng hơn và tích hợp đầy đủ các tính năng của MCP, bao gồm Tools, Resources và Prompt Templates.

Ví dụ về MCP Server cho Google Sheets/Forms:
Hãy xem xét một MCP Server được xây dựng bằng code để cung cấp các công cụ, tài nguyên và mẫu lời nhắc cho việc làm việc với Google Sheets và Google Forms.

  • Các công cụ (Tools) được cung cấp:
    • list_spreadsheets: Liệt kê tất cả các bảng tính Google Sheets có sẵn.
    • read_sheet: Đọc dữ liệu từ một bảng tính cụ thể.
    • write_sheet: Ghi dữ liệu vào một bảng tính.
    • append_sheet: Thêm dữ liệu vào cuối một bảng tính.
  • Tài nguyên (Resource):
    • get_sheet_resource: Cho phép truy cập chỉ đọc vào dữ liệu bảng tính, ví dụ như tên cột của một bảng tính.
  • Mẫu lời nhắc (Prompt Templates):
    • analyze_sheet_data: Một mẫu để phân tích dữ liệu bảng tính.
    • create_report_template: Một mẫu để tạo báo cáo từ bảng tính.
    • form_to_sheet: Một mẫu cho quy trình làm việc từ biểu mẫu đến bảng tính.

Cách một AI Agent sử dụng MCP Server được viết code:
Khi MCP Server này được kết nối với một Host (ví dụ: Claude desktop), AI Agent có thể thực hiện các tác vụ phức tạp:

  • Yêu cầu danh sách bảng tính: Bạn có thể hỏi “list out the spreadsheets that are available”. AI Agent sẽ gọi công cụ list_spreadsheets và hiển thị danh sách các bảng tính.
  • Đọc dữ liệu từ Resource: Sau đó, bạn có thể yêu cầu “use read sheet to get the columns of the anonymous feedback spreadsheet”. AI Agent sẽ sử dụng resource read_sheet để truy cập và hiển thị tên các cột của bảng tính đó.
  • Sử dụng Prompt Template để phân tích dữ liệu: Khi muốn phân tích dữ liệu, bạn có thể chọn một trong các prompt template có sẵn. Ví dụ, chọn analyze_sheet_data và yêu cầu “use this to analyze the anonymous feedback spreadsheet and create a dashboard”. AI Agent sẽ sử dụng template này, đọc dữ liệu, phân tích và thậm chí tạo ra một dashboard trực quan hóa các insight (ví dụ: tổng số phản hồi, điểm MPS trung bình, thông tin định tính, v.v.).

Nhận diện Tools, Resources, Prompt Templates trong code:
Trong quá trình lập trình, các tools, resources và prompt templates thường được định nghĩa bằng cách sử dụng các “decorator” đặc biệt (ví dụ: @mcp_tool, @mcp_resource, @mcp_prompt_template) trên các hàm hoặc biến trong mã nguồn. Điều này giúp MCP Client dễ dàng nhận diện và gọi các thành phần tương ứng.

Việc triển khai MCP Server bằng code mang lại sự linh hoạt tối đa nhưng đòi hỏi kiến thức lập trình. Nếu bạn muốn đi sâu vào con đường này, mình thực sự khuyến nghị tìm hiểu các khóa học chuyên sâu (như khóa học của Anthropic kết hợp với DeepLearning.AI) hoặc các tài liệu hướng dẫn cụ thể về cách xây dựng MCP Server từng bước.

Nắm vững MCP để dẫn đầu kỷ nguyên AI

Model Context Protocol (MCP) không chỉ là một khái niệm kỹ thuật; nó là một sự chuyển đổi trong cách chúng ta xây dựng và tương tác với các AI Agent. Bằng cách tiêu chuẩn hóa giao tiếp giữa các ứng dụng LLM và vô số công cụ, dữ liệu bên ngoài, MCP đã loại bỏ sự phức tạp, mở khóa khả năng tích hợp không giới hạn và đẩy nhanh tốc độ đổi mới trong lĩnh vực AI.

Từ việc hiểu rõ Model Context Protocol (MCP) là gì, kiến trúc HCS, các thành phần Tools, Resources, Prompt Templates, cho đến vòng đời giao tiếp và các phương thức transport, bạn đã có một cái nhìn toàn diện về nền tảng này. Dù bạn chọn phương pháp không cần code để nhanh chóng triển khai các ý tưởng, hay đi sâu vào lập trình để tạo ra các giải pháp tùy chỉnh mạnh mẽ, MCP đều mang đến những khả năng phi thường.

Với MCP, AI Agent của bạn không còn là những cỗ máy bị cô lập mà trở thành những thực thể thông minh, có khả năng tương tác liền mạch với thế giới kỹ thuật số xung quanh. Đã đến lúc bạn nắm bắt cơ hội này, bắt đầu khám phá và xây dựng các MCP Server của riêng mình để đưa AI Agent của mình lên một tầm cao mới.

Nếu bạn muốn đào sâu hơn, mình đặc biệt khuyên bạn nên tìm hiểu khóa học “MCP: Build Rich Context AI Apps with Anthropic” của Anthropic và DeepLearning.AI. Ngoài ra, bạn cũng có thể tham khảo các tài nguyên khác, chẳng hạn như video của Network Chuck về cách triển khai MCP bằng Docker, để mở rộng kiến thức và kỹ năng thực chiến của mình. Con đường phía trước là vô tận, và MCP chính là tấm bản đồ dẫn lối.

Duy Nghiện
Hãy làm khán giả, đừng làm nhân vật chính :)

You may also like

Nhận thông báo qua email
Nhận thông báo cho
guest

0 Bình luận
Mới nhất
Cũ nhất Nhiều like nhất
Phản hồi nội tuyến
Xem tất cả bình luận