Mỗi khi một tiêu chuẩn mới ra đời, ngành công nghệ lại phủ lên nó hàng tá mỹ từ to tát. Với Model Context Protocol (MCP), người ta gọi nó là 'cổng USB-C của thế giới AI'. Nhưng nếu bạn mở mã nguồn của SDK ra xem, không có bất kỳ phép thuật trí tuệ nhân tạo nào bên trong giao thức này cả.
Dưới nắp máy (Under the hood), MCP đơn giản là một quy ước giao tiếp client-server sử dụng chuẩn JSON-RPC 2.0 đã có từ năm 2010, truyền dữ liệu qua hai luồng cơ bản: stdio (nhập xuất chuẩn của tiến trình hệ điều hành) cho công cụ chạy cục bộ, hoặc SSE / Streamable HTTP cho dịch vụ từ xa. Giá trị thật sự của nó tương tự như LSP (Language Server Protocol) trước đây: thay vì viết $M \times N$ bộ tích hợp rời rạc giữa từng ứng dụng AI và từng cơ sở dữ liệu, bạn chỉ cần viết đúng 1 MCP Server.
1. Giải phẫu gói tin JSON-RPC giữa Host, Client và Server
Khi Claude Desktop hoặc Cursor khởi động một MCP Server cục bộ, hệ điều hành chỉ đơn giản spawn một tiến trình con (Node.js hoặc Python) và nối ống stdin/stdout. Toàn bộ vòng đời chỉ xoay quanh 3 nguyên hàm: Resources (dữ liệu đọc tĩnh), Prompts (mẫu lệnh định sẵn) và Tools (hàm thực thi có tác dụng phụ).
Đừng trả tiền thừa cho SaaS AI — Nhận lộ trình công cụ & chi phí tối ưu trong 10 giây
Mô tả bài toán của doanh nghiệp bạn (CSKH Zalo OA, Coding, RAG tài liệu nội bộ, Báo cáo P&L). Hệ thống cố vấn của 3A sẽ đề xuất bộ công cụ đã qua kiểm thử thực chiến.
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({ name: "3a-postgres-readonly", version: "1.0.0" });
server.tool(
"query_order_status",
{ orderId: z.string().regex(/^ORD-[0-9]{6}$/) },
async ({ orderId }) => {
// Luôn dùng Read-Only DB Role & Prepared Statement
const row = await dbReadOnly.query("SELECT status, updated_at FROM orders WHERE code = $1", [orderId]);
return { content: [{ type: "text", text: JSON.stringify(row.rows[0] ?? null) }] };
}
);
await server.connect(new StdioServerTransport());2. Ba lỗ hổng bảo mật chết người khi bê nguyên MCP mẫu lên Production
| Rủi ro kỹ thuật | Cơ chế phát sinh lỗi | Biện pháp khóa cứng bắt buộc |
|---|---|---|
| SQL Injection qua Tool tự do | Cho phép Agent truyền thẳng chuỗi câu lệnh SELECT bất kỳ vào MCP Server | Không bao giờ mở tool chạy raw SQL; chỉ mở các hàm nghiệp vụ có schema đầu vào kiểm tra bằng zod |
| Lộ khóa bí mật (Secret Leakage) | Lưu cứng DATABASE_URL quyền Admin trong file cấu hình JSON trên máy nhân viên | Cấp tài khoản Database Read-Only giới hạn theo đúng View được phép truy cập |
| Tool Poisoning (Đầu độc mô tả) | Kẻ tấn công chèn chỉ thị ẩn vào phần description của một MCP Server bên thứ ba | Chỉ nạp các MCP Server nội bộ đã qua kiểm tra mã nguồn (Code Audit) |
Cảnh báo kỹ thuật
Đừng biến MCP thành một cửa hậu (Backdoor) hợp pháp vào cơ sở dữ liệu của công ty. Mọi lệnh ghi, xóa hoặc xuất dữ liệu hàng loạt qua MCP bắt buộc phải có bước xác nhận của con người (Human-in-the-loop).


