MCP Cheat Sheet: Hiểu Model Context Protocol trong một bài viết
MCP (Model Context Protocol) là giao thức cho phép AI kết nối với các công cụ bên ngoài — từ đọc file, truy vấn database đến gọi API. Nó giống như “cổng USB” của AI: cắm vào là dùng được. Bài viết này giải thích MCP từ kiến trúc (Host, Client, Server), capabilities (Tools, Resources, Prompts) đến cách xây dựng MCP server — tất cả trong một bài.
1. Model Context Protocol (MCP) là gì?
Model Context Protocol (MCP) là một giao thức mã nguồn mở được phát triển bởi Anthropic, cho phép giao tiếp an toàn, hai chiều giữa các ứng dụng AI (như Claude Desktop, Cursor) và các nguồn dữ liệu hoặc công cụ cục bộ/từ xa. Bạn có thể hình dung MCP như một “cổng kết nối đa năng” (USB-C) dành riêng cho AI.
Trước khi có MCP, mỗi ứng dụng AI phải xây dựng các tích hợp tùy chỉnh cho từng nguồn dữ liệu (như Google Drive, Slack, GitHub, cơ sở dữ liệu nội bộ). Quá trình này không chỉ tốn kém thời gian, công sức bảo trì mà còn tạo ra những rào cản lớn về bảo mật và sự phân mảnh trong hệ sinh thái AI. MCP chuẩn hóa quá trình này, cho phép “viết một lần, kết nối mọi nơi”.
2. Tại sao MCP lại quan trọng và ra đời?
Sự ra đời của MCP giải quyết một loạt các vấn đề cốt lõi mà các nhà phát triển AI đang phải đối mặt:
- Loại bỏ sự phân mảnh (Fragmentation): Thay vì viết hàng tá API kết nối khác nhau cho Claude, OpenAI, Gemini, nhà phát triển chỉ cần viết một MCP Server duy nhất.
- Bảo mật dữ liệu (Data Security): MCP cho phép dữ liệu ở lại nơi nó thuộc về. Các tổ chức có thể cấp quyền truy cập dữ liệu cho AI mà không cần tải toàn bộ dữ liệu lên cloud của nhà cung cấp LLM.
- Quản lý bối cảnh (Context Management): Cung cấp một cách chuẩn hóa để lấy chính xác phần dữ liệu cần thiết (context) cho AI, giảm thiểu hiện tượng ảo giác (hallucinations) và tăng độ chính xác của câu trả lời.
- Khả năng mở rộng (Scalability): Dễ dàng thêm các nguồn dữ liệu mới hoặc công cụ mới vào hệ sinh thái AI của bạn thông qua kiến trúc Client-Server linh hoạt.
3. Kiến trúc của MCP: Host, Client, và Server
Kiến trúc MCP được thiết kế khá tinh gọn và dễ hiểu, bao gồm 3 thành phần chính:
3.1. MCP Host (Máy lưu trữ)
Đây là ứng dụng hoặc nền tảng nơi người dùng tương tác trực tiếp (ví dụ: Claude Desktop, Cursor IDE, Zed, hoặc một ứng dụng web AI nội bộ của công ty). Host chịu trách nhiệm hiển thị kết quả và nhận lệnh từ người dùng. Một Host có thể chứa hoặc khởi tạo các MCP Clients.
3.2. MCP Client (Máy khách)
Nằm bên trong Host, Client là phần mềm thực hiện việc duy trì kết nối theo giao thức MCP. Client lấy yêu cầu từ Host (ví dụ: “Tìm cho tôi file báo cáo quý 3”), chuyển ngữ cảnh yêu cầu đến MCP Server, sau đó nhận dữ liệu trả về để Host có thể đưa cho LLM xử lý.
3.3. MCP Server (Máy chủ)
Đây là phần quan trọng nhất. MCP Server là một chương trình nhẹ, có thể chạy cục bộ trên máy tính của bạn hoặc trên một máy chủ từ xa. Nhiệm vụ của nó là tiếp nhận yêu cầu từ Client theo chuẩn MCP, sau đó trực tiếp truy cập vào dữ liệu hoặc công cụ (như truy vấn SQL database, đọc file hệ thống, gọi API của GitHub) và trả kết quả về cho Client.
4. Các khả năng cốt lõi của MCP
Giao thức MCP cung cấp 3 khả năng cốt lõi (Prims) giúp chuẩn hóa cách AI tương tác với dữ liệu, cùng với các tính năng bổ sung nâng cao.
4.1. Resources (Tài nguyên)
Resources đại diện cho các dữ liệu cung cấp cho AI dưới dạng văn bản tĩnh (hoặc dữ liệu nhị phân như hình ảnh). Hãy hình dung nó giống như một hệ thống tệp tin ảo.
- Cách hoạt động: Server cung cấp một danh sách các tài nguyên hoặc các mẫu URL (URI templates). Client có thể “đọc” (read) nội dung này.
- Ví dụ: Đọc nội dung file log, xem một bảng tính, lấy nội dung file cấu hình.
- Tính năng: Hỗ trợ subscriptions (đăng ký theo dõi), Client sẽ được thông báo khi resource thay đổi (như đọc log theo thời gian thực).
4.2. Tools (Công cụ)
Trong khi Resources là tĩnh, Tools cho phép AI thực hiện các hành động có thể thay đổi trạng thái của hệ thống (side effects) hoặc thực hiện các tính toán động.
- Cách hoạt động: Server định nghĩa danh sách các công cụ, bao gồm tên, mô tả và cấu trúc tham số đầu vào (JSON Schema). LLM (thông qua Host) sẽ quyết định gọi công cụ nào và truyền tham số tương ứng.
- Ví dụ: Gửi email, thực thi một đoạn mã Python, tạo một ticket Jira mới, truy vấn cơ sở dữ liệu SQL.
- Lưu ý quan trọng: Vì tools thực thi các hành động thực tế, việc thiết lập “Human-in-the-loop” (yêu cầu người dùng xác nhận) là điều cần thiết để đảm bảo an toàn.
4.3. Prompts (Mẫu câu lệnh)
Prompts là các đoạn text mẫu được thiết kế sẵn bởi nhà cung cấp Server, giúp hướng dẫn LLM thực hiện một tác vụ cụ thể một cách tối ưu.
- Cách hoạt động: Server định nghĩa các template prompt với các biến số. Client yêu cầu một prompt và truyền tham số, Server trả về prompt hoàn chỉnh để sử dụng với LLM.
- Ví dụ: Một prompt “Review Code” đi kèm với các biến số là `file_path` và `language`, giúp AI đánh giá code đúng chuẩn mực công ty.
4.4. Sampling (Lấy mẫu) – Tính năng nâng cao
Sampling là một khả năng “đảo ngược” dòng chảy bình thường. Nó cho phép một MCP Server yêu cầu MCP Client sử dụng LLM của Client để tạo ra nội dung. Điều này cực kỳ hữu ích khi Server cần khả năng suy luận để xử lý dữ liệu nội bộ trước khi trả kết quả cuối cùng cho Client.
5. MCP hoạt động dưới màng bọc như thế nào?
Dưới góc độ kỹ thuật, Model Context Protocol hoạt động dựa trên các công nghệ truyền tải và giao thức nhắn tin đã được chuẩn hóa.
JSON-RPC 2.0
Mọi thông điệp (messages) truyền qua lại giữa Client và Server đều sử dụng định dạng chuẩn JSON-RPC 2.0. Giao thức này hỗ trợ:
- Requests: Client yêu cầu Server làm gì đó (và mong đợi phản hồi).
- Responses: Server trả về kết quả (hoặc lỗi).
- Notifications: Thông báo một chiều không cần phản hồi (ví dụ: báo cáo tiến độ, thông báo tài nguyên thay đổi).
Transport Layers (Lớp mạng truyền tải)
MCP không ràng buộc cách bạn gửi gói tin JSON-RPC. Nó hỗ trợ hai phương thức truyền tải chính:
- stdio (Standard Input/Output): Dùng cho giao tiếp cục bộ. Client khởi chạy Server như một tiến trình con (subprocess) và hai bên nói chuyện thông qua luồng stdin/stdout. Phương thức này cực kỳ phổ biến vì nó an toàn, không cần mở port mạng.
- SSE (Server-Sent Events) over HTTP: Dùng cho giao tiếp từ xa (Remote). Server chạy dưới dạng web server (như ExpressJS, FastAPI). Client kết nối tới qua HTTP, sử dụng POST để gửi Request và SSE stream để nhận Response/Notifications từ Server.
6. So sánh: MCP vs API Truyền thống vs Function Calling
Rất nhiều người thắc mắc: “Tại sao phải dùng MCP khi chúng ta đã có REST API hay tính năng Function Calling của OpenAI/Anthropic?”. Bảng so sánh dưới đây sẽ làm rõ:
| Tiêu chí | API (REST/GraphQL) | LLM Function Calling | Model Context Protocol (MCP) |
|---|---|---|---|
| Mục đích chính | Giao tiếp Giữa Hệ thống – Hệ thống. | Cho phép AI quyết định gọi code của bạn. | Chuẩn hóa giao tiếp AI – Dữ liệu/Công cụ cục bộ và từ xa. |
| Phạm vi | Mọi ứng dụng phần mềm. | Giới hạn trong API của từng nhà cung cấp LLM cụ thể. | Giao thức chung, độc lập với loại LLM. |
| Quản lý bối cảnh | Không tự động quản lý, phải tự code xử lý dữ liệu đầu vào/ra. | Trả về JSON thô cho mô hình. | Cung cấp sẵn khái niệm Resource, Tool, Prompt tối ưu cho AI. |
| Tính đa nền tảng | Rất cao. | Phải viết lại mã chuyển đổi schema (OpenAI khác Anthropic). | Viết 1 Server MCP, tích hợp với Claude Desktop, Cursor, hay bất kỳ MCP Client nào. |
Tóm lại: MCP không thay thế API hay Function Calling, mà nó bao bọc chúng. Một MCP Server sử dụng Function Calling dưới nền tảng để báo cho LLM biết về các “Tools” của nó, đồng thời dùng API truyền thống để kết nối tới hệ thống thực (ví dụ GitHub API).
7. Hệ sinh thái MCP Servers (Công cụ có sẵn)
Một trong những điểm mạnh của tiêu chuẩn nguồn mở là cộng đồng phát triển nhanh chóng. Hiện tại, đã có hàng loạt các MCP Server mã nguồn mở sẵn sàng sử dụng:
- Filesystem MCP Server: Cho phép AI đọc/ghi an toàn vào các thư mục cụ thể trên máy tính của bạn.
- PostgreSQL / SQLite MCP Server: AI có thể đọc schema database, tự động viết và thực thi truy vấn SQL để trả lời câu hỏi phân tích dữ liệu.
- GitHub MCP Server: AI có thể tìm kiếm repo, tạo pull request, đọc code, bình luận issue ngay trong ngữ cảnh chat.
- Google Drive / Slack MCP Server: AI giúp tìm kiếm tài liệu trong kho công ty, tóm tắt chuỗi hội thoại trên Slack.
- Brave Search / Puppeteer MCP: Cấp cho AI khả năng tìm kiếm web trực tiếp, hoặc điều khiển trình duyệt ẩn danh để cào dữ liệu web.
8. Hướng dẫn cơ bản xây dựng một MCP Server
Xây dựng MCP Server hiện tại được hỗ trợ chính thức qua hai bộ SDK từ Anthropic: TypeScript (Node.js) và Python. Dưới đây là một ví dụ minh họa cách tạo một Tool đơn giản bằng Python MCP SDK (FastAPI):
from mcp.server.fastmcp import FastMCP
# 1. Khởi tạo MCP Server
mcp = FastMCP("My Weather Server")
# 2. Định nghĩa một Tool cho AI
@mcp.tool()
def get_weather(location: str) -> str:
'''Lấy thông tin thời tiết hiện tại cho một địa điểm.'''
# (Trong thực tế bạn sẽ gọi API thời tiết như OpenWeatherMap ở đây)
weather_data = {"Hanoi": "Nắng nhẹ, 28°C", "HCM": "Mưa rào, 25°C"}
return weather_data.get(location, "Không có dữ liệu cho địa điểm này.")
# 3. Chạy Server
if __name__ == "__main__":
mcp.run()
Chỉ với vài dòng code trên, bạn đã tạo ra một server. Khi cấu hình Claude Desktop (thêm vào file claude_desktop_config.json) để chạy script này, Claude sẽ tự động biết đến khả năng “kiểm tra thời tiết” và sử dụng nó khi bạn hỏi.
9. Use Cases thực tế: AI giúp tôi giải quyết vấn đề gì với MCP?
MCP không chỉ là lý thuyết, nó đang thay đổi cách chúng ta làm việc hàng ngày. Dưới đây là những ứng dụng thực tiễn:
9.1. Lập trình viên: Cặp bài trùng AI – Môi trường phát triển nội bộ
Nhà phát triển thường phải rời khỏi IDE để xem tài liệu API nội bộ, kiểm tra log lỗi từ container Docker, hoặc chạy truy vấn database để xem cấu trúc bảng.
Với MCP: Bạn cài đặt MCP Server cho PostgreSQL và Docker. Trong Cursor IDE hoặc Claude Desktop, bạn chỉ cần gõ: “Tại sao API đăng nhập bị lỗi lúc 9h sáng nay? Hãy xem log từ container ‘auth-service’ và đối chiếu với bảng ‘users’ trong DB.”. AI (đóng vai trò Client) sẽ tự động sử dụng MCP gọi Tool lấy log, sau đó gọi Tool truy vấn DB, đọc hiểu cả hai và trả lời nguyên nhân kèm cách fix bug cho bạn ngay trong chat.
9.2. Phân tích dữ liệu doanh nghiệp (BI – Business Intelligence)
Các nhà quản lý muốn có báo cáo nhanh nhưng không biết viết SQL hoặc dùng các tool BI phức tạp. Dữ liệu lại nằm rải rác trên Salesforce, Google Sheets, và DB nội bộ.
Với MCP: Xây dựng các MCP Server kết nối an toàn (Read-only mode) với các nguồn này. Giám đốc chỉ cần dùng giao diện chat AI và yêu cầu: “Tổng hợp doanh thu từ khu vực Châu Á trong Salesforce tháng trước và so sánh với target trong file Google Sheet ‘Target_2024′”. AI sẽ giao tiếp qua MCP để lấy chính xác các dữ liệu này về xử lý và vẽ biểu đồ ngay lập tức.
9.3. Tự động hóa quy trình làm việc nhân sự (HR Automation)
Khi có nhân sự mới, bộ phận IT và HR phải tạo tài khoản Slack, cấp quyền Notion, gửi email chào mừng, tạo tài khoản Jira.
Với MCP: Có thể tạo một MCP Server chứa các Tools như create_slack_user, invite_notion. Nhân viên HR chỉ cần bảo AI: “Onboard nhân viên mới tên Tuấn, email tuan@company.com vào team Marketing”. AI sẽ tuần tự dùng các Tools (qua giao thức MCP) để thực hiện hàng loạt thao tác cấu hình phức tạp này trong vài giây.
10. Câu hỏi thường gặp (FAQ)
- Q1: MCP có miễn phí không?
A1: Có. Model Context Protocol là một giao thức hoàn toàn mã nguồn mở, được cung cấp miễn phí để bất kỳ cá nhân hay tổ chức nào cũng có thể sử dụng và đóng góp. - Q2: Dữ liệu của tôi qua MCP có bị Anthropic (Claude) lấy đi train model không?
A2: Không. MCP chỉ là “đường ống” truyền dữ liệu. Dữ liệu từ Server được Client (ví dụ Claude Desktop) nhận về cục bộ để đưa vào ngữ cảnh (context window) của mô hình. Các chính sách bảo mật API tiêu chuẩn vẫn áp dụng, dữ liệu qua API không được sử dụng để huấn luyện mô hình. - Q3: Tôi có thể dùng MCP với OpenAI hay Gemini không?
A3: Có! Mặc dù do Anthropic thiết kế, MCP là chuẩn mở. Nếu một ứng dụng (Host) hỗ trợ MCP Client, nó hoàn toàn có thể dùng các LLM khác dưới nền tảng (như ứng dụng Cursor đang làm – cho phép chọn gpt-4o, claude-3-5-sonnet kết hợp với MCP Server). - Q4: Tôi có cần là Lập trình viên để sử dụng MCP không?
A4: Nếu chỉ sử dụng, bạn không cần code nhiều. Việc cài đặt các MCP Server có sẵn (như Github, Google Drive, SQLite) vào Claude Desktop chỉ cần copy-paste vài dòng JSON cấu hình. Tuy nhiên, để tự xây dựng server cho riêng hệ thống của công ty mình, bạn cần biết Python hoặc TypeScript. - Q5: Sự khác biệt giữa stdio và SSE trong MCP là gì?
A5:stdiodùng để kết nối với các ứng dụng, script chạy cục bộ ngay trên cùng một máy tính (an toàn, tốc độ cao, không cần mạng). Trong khi đó,SSE (HTTP)giúp bạn kết nối AI trên máy tính tới một hệ thống ở tận xa (như máy chủ server của công ty trên AWS). - Q6: MCP có an toàn để chạy Tool thay đổi dữ liệu thật không?
A6: MCP cung cấp công cụ, nhưng việc an toàn hay không phụ thuộc vào người xây dựng. Lời khuyên là: Các Tools liên quan đến sửa/xóa/ghi dữ liệu phải yêu cầu cơ chế “Human-in-the-loop” (HiTL – Yêu cầu người dùng bấm nút Approve trên giao diện Client trước khi thực thi).
Kết luận: Model Context Protocol đang định hình lại cách các ứng dụng phần mềm giao tiếp với thế giới AI. Việc hiểu và áp dụng MCP sẽ giúp bạn xây dựng được các Agent AI mạnh mẽ, an toàn và tối ưu hóa quy trình làm việc hiệu quả nhất. Bắt đầu ngay hôm nay bằng cách thử cài đặt một MCP Server cục bộ và cảm nhận sự khác biệt.
Để khám phá thêm nhiều bài viết hữu ích về cách ứng dụng AI trong công việc và cuộc sống, đừng quên ghé thăm chuyên mục Ứng dụng AI của chúng tôi nhé!
