Dựa trên video hướng dẫn của Sam Bartuk – Cube Simplify
Bạn đã bao giờ tự hỏi làm thế nào để LLM (Large Language Models) như Claude hay ChatGPT có thể tương tác với thế giới bên ngoài? Hoặc làm sao để AI có thể gọi các hàm, truy cập API hay thực hiện các tác vụ khác mà chỉ việc dùng text? Đó chính là lúc MCP (Model Context Protocol) bước vào cuộc chơi!
Mình tóm tắt bài giảng này từ Sam Bartuk và người khách mời Eduardo từ Dialypso để giúp bạn nhanh chóng hiểu được MCP là gì, cách nó hoạt động, và làm sao để áp dụng nó vào công việc của mình nhé.
Nội Dung Chính
- MCP Là Gì? Hiểu Về Model Context Protocol (00:00-08:30)
- Cách LLM Gọi Functions & Tools (08:31-15:45)
- Thực Hành: Cài Đặt & Sử Dụng MCP Với Claude (15:46-26:00)
- MCP.run: Nền Tảng Serverless Cho MCP (26:01-40:00)
- Web Assembly & MCP: Giải Pháp Cho Vấn Đề Security (40:01-50:30)
- Xây Dựng Serlet Đầu Tiên (50:31-58:20)
- Tự Động Hóa Tasks Với MCP.run (58:21-01:10:45)
- Tích Hợp MCP Với Kubernetes (01:10:46-01:20:00)
- Phát Triển Client Cho MCP (01:20:01-01:28:00)
MCP Là Gì? Hiểu Về Model Context Protocol
Để hiểu MCP, chúng ta cần hiểu trước cách hoạt động cơ bản của các mô hình ngôn ngữ lớn (LLM). Về bản chất, LLM chỉ làm một việc duy nhất: tạo ra text. Eduardo từ Dialypso giải thích rằng LLM là một “spicy autocomplete” – về cơ bản chúng nhận vào một đoạn text và hoàn thành nó dựa trên context mà chúng được cung cấp.
Điểm Chính:
- LLM chỉ có khả năng sinh text, không thể trực tiếp tương tác với thế giới bên ngoài
- Khi bạn “chat” với LLM, nó đang dùng context window để tạo ra phản hồi dạng đối thoại
- Model Context Protocol (MCP) là một giao thức đơn giản cho phép LLM tương tác với các dịch vụ bên ngoài
- MCP tương tự như Language Server Protocol (LSP) được sử dụng trong các trình soạn thảo code như VS Code
Ý Kiến Của Mình:
MCP giải quyết một vấn đề cốt lõi với LLM – làm sao để mô hình text-only có thể tương tác với thế giới thực. Bằng cách thiết lập một “ngôn ngữ chung” giữa AI và các service, chúng ta có thể mở rộng đáng kể khả năng của các assistant AI nhé!
Cách LLM Gọi Functions & Tools
LLM không thể trực tiếp gọi hàm – thay vào đó, chúng sinh ra text có cấu trúc (thường là JSON) mô tả function call. Một phần mềm trung gian (middleware) sẽ đọc text này, thực hiện cuộc gọi hàm thật, và trả kết quả về cho LLM dưới dạng text.
Điểm Chính:
- Function calling thực chất là một dạng RPC (Remote Procedure Call) sử dụng JSON
- LLM được cung cấp schema của các function có thể gọi (thường dùng JSON Schema)
- Các schema này trở thành một phần của system prompt
- MCP client là middleware giữa AI và server cung cấp functions
- MCP servers không chỉ cung cấp function calls mà còn resources và prompts
// Ví dụ về một function call trong MCP
{
"name": "get_stock_price",
"arguments": {
"ticker": "AAPL"
}
}
Ý Kiến Của Mình:
Điều thú vị nhất về cách LLM gọi functions là tất cả đều dựa trên text! Không có “phép thuật” nào ở đây cả – chỉ là một hệ thống được thiết kế khéo léo để cho phép AI tương tác với code thông qua JSON structured text. Đơn giản nhưng hiệu quả đáng kinh ngạc nhé!
Thực Hành: Cài Đặt & Sử Dụng MCP Với Claude
Trong phần này, Eduardo demo cách cài đặt Claude Desktop và cấu hình nó để sử dụng các MCP servers. Ông bắt đầu với một ví dụ đơn giản – sử dụng tool “fetch” để yêu cầu Claude truy cập web.
Điểm Chính:
- Claude Desktop cần được cài đặt để sử dụng MCP tools
- MCP tools được cấu hình thông qua file config của Claude
- Các commands sử dụng uvx (Python package manager) hoặc npx (Node package manager)
- Demo sử dụng fetch tool để truy cập news.ycombinator.com
- Thêm các tools khác như Brave Search và Google Maps để tìm thông tin về Milan Design Week
# Cấu hình fetch tool
uvx modelcontextprotocol-server.fetch \
--host 127.0.0.1 \
--port 8000
Ý Kiến Của Mình:
Demo này thực sự làm rõ sức mạnh của MCP – Claude đã từ một AI chỉ biết dựa vào knowledge cutoff đến một assistant có thể tra cứu thông tin real-time và tương tác với các dịch vụ khác nhau. Đặc biệt, model-based security (xin phép người dùng mỗi khi gọi tool) là một thiết kế thông minh bảo vệ người dùng khỏi các tool calls không mong muốn!
MCP.run: Nền Tảng Serverless Cho MCP
Eduardo giới thiệu về MCP.run, một nền tảng do Dialypso phát triển giúp đơn giản hóa việc quản lý và chạy MCP servers. Thay vì phải cấu hình từng server riêng lẻ, MCP.run cho phép người dùng quản lý các serlets (small servers) thông qua profiles.
Điểm Chính:
- MCP.run giải quyết các vấn đề với cách triển khai MCP truyền thống:
- API keys được lưu trữ an toàn, không lộ trong file config
- Serlets chạy trong sandbox environment với quyền truy cập hạn chế
- Quản lý tools thông qua profiles thay vì chỉnh sửa config files
- Serlets được implement bằng WebAssembly, giúp chúng chạy an toàn và đa nền tảng
Ý Kiến Của Mình:
MCP.run thực sự giải quyết vấn đề lớn nhất của MCP truyền thống: security. Việc lưu API keys trong plain text và cho các tools quyền truy cập không hạn chế trên máy là rủi ro bảo mật nghiêm trọng. Cách tiếp cận của MCP.run với WebAssembly và sandboxed environment là một bước tiến lớn về bảo mật mà vẫn giữ được tính linh hoạt!
Web Assembly & MCP: Giải Pháp Cho Vấn Đề Security
Phần này đi sâu hơn vào cách WebAssembly (WASM) giúp MCP.run giải quyết các vấn đề bảo mật. Eduardo giải thích WASM là gì và tại sao nó phù hợp để triển khai các MCP serlets.
Điểm Chính:
- WebAssembly là một portable binary format, tương tự JVM bytecode hơn là Docker containers
- WASM cung cấp sandboxing tự nhiên, chỉ cho phép truy cập vào các resources cụ thể
- WASM chạy trên language VM, không cần VM riêng như Docker trên Mac/Windows
- WASM là cross-platform, cùng binary có thể chạy trên mọi OS mà không cần recompile
- Exism là SDK mở của Dialypso giúp đơn giản hóa việc phát triển plugin systems với WASM
Ý Kiến Của Mình:
WebAssembly thực sự là công nghệ hoàn hảo cho MCP serlets. Với WASM, chúng ta nhận được cả hai ưu điểm: security thông qua sandboxing và portability giúp chạy trên mọi nền tảng. Là một cloud developer, mình đặc biệt thích cách WASM simplifies deployment và không yêu cầu VM riêng trên Mac/Windows như Docker!
Xây Dựng Serlet Đầu Tiên
Eduardo demo cách tạo một serlet đơn giản với MCP.run sử dụng công cụ XTP (Exism Tool Platform). Demo tạo một serlet “Hello World” đơn giản có thể chào người dùng.
Điểm Chính:
- XTP là công cụ dòng lệnh để tạo và quản lý MCP serlets
- Một serlet cần implement ít nhất hai hàm:
- – describe(): trả về schema JSON của các functions được cung cấp
- – call(): xử lý các function calls từ client
- Serlets được build và push đến MCP.run registry
- Sau khi build, có thể cài đặt và sử dụng serlet trong profile
# Tạo và đăng ký một serlet mới
xtp plugin create hello-world
xtp plugin build
xtp plugin push
Ý Kiến Của Mình:
Mặc dù ví dụ Hello World khá đơn giản, nó vẫn cho thấy workflow cơ bản khi làm việc với MCP.run. Sau khi hiểu được những bước này, ta có thể tạo các serlets phức tạp hơn để thực hiện các tác vụ thực tế như truy vấn API, tương tác với database, hay thậm chí là điều khiển các hệ thống khác!
Tự Động Hóa Tasks Với MCP.run
Eduardo demo tính năng Tasks của MCP.run cho phép chạy serlets theo lịch trình hoặc qua webhooks. Điều này mở ra khả năng automation với AI, từ việc tóm tắt tin tức đến xây dựng chatbots hoàn chỉnh.
Điểm Chính:
- Tasks cho phép chạy serlets theo lịch trình cố định hoặc trigger từ webhooks
- Demo với task tóm tắt tin tức từ Hacker News
- Tasks có thể tham số hóa để xử lý dữ liệu động từ webhooks
- Demo tạo Telegram bot sử dụng MCP.run webhooks
- Tích hợp với Pantry để lưu trữ lịch sử hội thoại giữa các lần gọi webhook
Ý Kiến Của Mình:
Tasks là tính năng game-changing biến MCP.run từ một nền tảng chỉ phục vụ LLM sang một công cụ automation toàn diện. Demo Telegram bot thực sự ấn tượng – chỉ với vài click, ta đã có một AI chatbot có khả năng tìm kiếm web, xem hình ảnh, và tương tác với các service khác. Khả năng parameterize các tasks cũng mở ra vô số use cases cho doanh nghiệp!
Tích Hợp MCP Với Kubernetes
Trong phần này, Eduardo demo việc sử dụng MCP để tương tác với cluster Kubernetes. Ông tạo một serlet “swappy” tương tác với API Star Wars đang chạy trong Kubernetes, và sử dụng Claude để chuẩn đoán và khắc phục lỗi trong deployment.
Điểm Chính:
- Demo sử dụng Kubernetes serlets để kiểm tra trạng thái pods và deployments
- Tạo custom serlet (swappy) để tương tác với API Star Wars trong Kubernetes
- Demo troubleshooting khi API gặp sự cố (CrashLoopBackOff)
- GitHub integration cho PR reviews tự động
- Tạo automated PR summaries với context awareness
Ý Kiến Của Mình:
Đây là use case cực kỳ thực tế cho cloud developers! Khả năng sử dụng AI để troubleshoot Kubernetes, analyze PRs và tự động hóa các tác vụ DevOps có thể tiết kiệm hàng giờ công việc. Điều thú vị là AI không chỉ thực hiện các lệnh mà còn giải thích kết quả một cách rõ ràng và đề xuất giải pháp – như một người đồng nghiệp DevOps thực thụ!
Phát Triển Client Cho MCP
Phần cuối demo cách tích hợp MCP.run vào các ứng dụng của bạn. Eduardo giới thiệu các SDK cho nhiều ngôn ngữ khác nhau và demo tích hợp với Spring AI (Java) và Android (với Gemini).
Điểm Chính:
- Dialypso cung cấp SDK cho nhiều ngôn ngữ: Java (MCPX4J), TypeScript, Python
- Demo với Spring AI + OpenAI sử dụng MCPX4J
- Demo trên Android với Gemini (multimodal)
- Sử dụng Chikory – WASM runtime thuần Java, không cần native code
- Ứng dụng multimodal: phân tích hình ảnh và tìm hướng dẫn giữa hai địa điểm
Ý Kiến Của Mình:
SDKs cho các ngôn ngữ khác nhau thực sự mở rộng khả năng ứng dụng của MCP. Demo Android với Gemini cực kỳ ấn tượng – nó cho thấy MCP không chỉ là một giao thức cho text-based LLMs mà còn có thể mở rộng cho multimodal AI. Khả năng chạy serlets trên mobile, với Chikory runtime thuần Java, mở ra tiềm năng cho các ứng dụng AI edge computing!