Trong hệ sinh thái ứng dụng trí tuệ nhân tạo ngày càng phức tạp, việc kết nối mô hình ngôn ngữ lớn (LLM) với các công cụ và dữ liệu bên ngoài đang trở thành thách thức kỹ thuật then chốt. MCP (Model Context Protocol) ra đời như một giải pháp chuẩn hóa cho vấn đề này.
Lý do tồn tại của MCP
Mô hình ngôn ngữ lớn hoạt động như một công cụ dự đoán xác suất dựa trên văn bản — chúng hiểu ý định người dùng nhưng không thể trực tiếp tương tác với thế giới thực. Cơ chế Function Calling truyền thống cho phép mô hình "gọi" các hàm được định nghĩa trước thông qua JSON Schema, nhưng cách tiếp cận này bộc lộ nhiều hạn chế:
- Chi phí tích hợp cao: Mỗi công cụ mới đều yêu cầu định nghĩa schema thủ công.
- Thiếu tính tái sử dụng: Các nhà phát triển phải viết lại logic tích hợp cho từng ứng dụng.
- Không có chuẩn chung: Người cung cấp công cụ không thể tự mô tả khả năng của mình theo cách mà LLM có thể hiểu được.
MCP giải quyết triệt để những vấn đề trên bằng cách thiết lập một giao thức mở, thống nhất cho việc trao đổi giữa AI và các dịch vụ bên ngoài.
Kiến trúc MCP
MCP áp dụng mô hình client-server với ba thành phần chính:
| Vai trò | Mô tả |
|---|---|
| MCP Host | Ứng dụng AI khởi tạo yêu cầu (ví dụ: Claude Desktop, Cursor IDE) |
| MCP Client | Thành phần trong Host, xử lý giao tiếp theo chuẩn MCP |
| MCP Server | Dịch vụ cung cấp chức năng thực tế (truy vấn CSDL, gọi API, v.v.) |
Giao thức hỗ trợ hai kênh truyền dẫn:
| Kênh | Môi trường | Đặc điểm |
|---|---|---|
| Stdio | Ứng dụng desktop, IDE cục bộ | Nhẹ, hiệu suất cao, không cần cổng mạng |
| Streamable HTTP | Triển khai trên đám mây | Hỗ trợ serverless, đàm phán giao thức động qua một endpoint duy nhất |
Tầng ứng dụng của MCP sử dụng JSON-RPC 2.0 thay vì REST, nhờ vào:
- Bản chất phù hợp với mô hình gọi hàm từ xa (RPC).
- Hỗ trợ thông báo bất đồng bộ từ server đến client.
- Cấu trúc tin nhắn tối giản: chỉ cần
method,paramsvàid.
Ứng dụng thực tế
MCP có thể được dùng để:
- Truy cập hệ thống tập tin một cách an toàn.
- Thực thi truy vấn SQL trên cơ sở dữ liệu.
- Tích hợp với các API bên thứ ba như GitHub, Slack.
- Chạy mã trong môi trường sandbox (Python, R, Java...).
- Lấy thông tin thời gian thực như thời tiết, tỷ giá.
MCP không phải là Function Calling nâng cao
Một hiểu lầm phổ biến là xem MCP như phiên bản cao cấp của Function Calling. Thực tế, hai khái niệm này giải quyết các lớp vấn đề khác nhau:
| Khía cạnh | Function Calling | MCP |
|---|---|---|
| Mục tiêu | Giao tiếp giữa LLM và ứng dụng chủ | Giao tiếp giữa ứng dụng chủ và công cụ bên ngoài |
| Bản chất | Cơ chế để LLM trả về lệnh gọi hàm | Chuẩn kỹ thuật cho việc tích hợp công cụ |
| Mối quan hệ | MCP chuẩn hóa cách triển khai Function Calling ở tầng ứng dụng | |
Ví dụ triển khai bằng Python
Cài đặt SDK:
pip install mcp[cli]
Tạo MCP Server đơn giản:
from mcp.server.fastmcp import FastMCP
app = FastMCP("weather-service")
@app.tool()
def fetch_weather(location: str) -> str:
"""Lấy thông tin thời tiết hiện tại"""
return f"Nhiệt độ tại {location}: 25°C, trời nắng"
if __name__ == "__main__":
app.run(transport="stdio") # hoặc "streamable-http"
SDK tự động:
- Phân tích chữ ký hàm và type hints.
- Trích xuất docstring làm mô tả công cụ.
- Sinh JSON Schema tuân thủ đặc tả MCP.
Nhờ MCP, các nhà cung cấp công cụ chỉ cần triển khai một lần — mọi ứng dụng hỗ trợ MCP đều có thể sử dụng ngay lập tức, không cần tích hợp thủ công.