MCP là gì? Model Context Protocol — Giải thích

Tiêu chuẩn mở kết nối các mô hình AI với công cụ, tập tin và dịch vụ — giống như USB-C cho tích hợp AI

Đọc trong 8 phút Cập nhật: Tháng 4 năm 2026

🔌 MCP là gì?

The Model Context Protocol (MCP) là một chuẩn mở được xuất bản bởi Anthropic vào tháng 12 năm 2024 định nghĩa một giao diện chung để kết nối các mô hình AI với công cụ bên ngoài, nguồn dữ liệu và dịch vụ. Trước MCP, mỗi tích hợp AI là một triển khai tùy chỉnh, riêng lẻ. MCP tiêu chuẩn hóa cách các AI clients giao tiếp với các khả năng bên ngoài — vì vậy một lần tích hợp hoạt động với bất kỳ hệ thống AI tương thích nào.

MCP là một giao thức client-server: MCP clients là các hệ thống AI (như Claude, Cursor, VS Code với Copilot) muốn sử dụng các khả năng bên ngoài. MCP servers là các dịch vụ phơi bày những khả năng đó (GitHub, cơ sở dữ liệu, hệ thống tệp, trình duyệt web) thông qua một API tiêu chuẩn mà bất kỳ MCP client nào cũng có thể tiêu thụ.

💡 Cái nhìn chính: MCP không làm AI thông minh hơn — nó khiến AI kết nối tốt hơn. Trí tuệ vẫn nằm trong mô hình; MCP cung cấp cơ sở hạ tầng để trí tuệ đó tác động tới dữ liệu và dịch vụ trong thế giới thực.

🔋 Ẩn dụ USB-C

Trước USB-C, mỗi thiết bị có kết nối độc quyền riêng — bộ sạc điện thoại không dùng được cho laptop, cáp hiển thị không hoạt động với thiết bị lưu trữ. USB-C giải quyết điều này bằng một chuẩn chung: một cổng, một cáp, vô số thiết bị.

Các tích hợp AI trước MCP cũng hỗn loạn như vậy. Kết nối Claude với GitHub yêu cầu mã tùy chỉnh. Kết nối GPT-4 với cùng API GitHub lại cần mã tùy chỉnh khác. Thêm một công cụ mới có nghĩa là xây lại tích hợp từ đầu cho mỗi nền tảng AI.

MCP là USB-C cho AI. Một chuẩn duy nhất:

  • Xây dựng một MCP server một lần — bất kỳ MCP client nào cũng có thể sử dụng nó
  • Chấp nhận một mô hình AI mới — các MCP server hiện có của bạn hoạt động ngay lập tức
  • Hệ sinh thái các MCP server phát triển độc lập với việc phát triển mô hình AI

⚙️ Cách MCP hoạt động

MCP sử dụng giao thức JSON-RPC 2.0 trên một lớp vận chuyển (stdio cho server cục bộ, HTTP/SSE cho server từ xa). Giao tiếp tuân theo vòng đời khởi tạo, khám phá khả năng, và xử lý yêu cầu.

Ba nguyên mẫu cốt lõi

PrimitiveNhững gì nó phơi bàyExample
Tools Các hàm mà AI có thể gọi (do mô hình điều khiển) search_github_issues, run_sql_query, send_email
Resources Dữ liệu mà AI có thể đọc (do ứng dụng kiểm soát) file:///workspace/src, db://customers/schema
Prompts Mẫu prompt có thể tái sử dụng (do người dùng kiểm soát) code-review, summarize-pr, explain-error

Luồng giao tiếp

  1. Khởi tạo: Client kết nối tới server, trao đổi phiên bản giao thức và khả năng
  2. Khám phá: Client yêu cầu danh sách công cụ, tài nguyên và prompt có sẵn
  3. Gọi: Mô hình AI quyết định gọi một công cụ; client gửi yêu cầu tới server
  4. Trả về: Server thực thi hành động và trả về kết quả có cấu trúc cho client
  5. Tiếp tục: Mô hình AI kết hợp kết quả và tiếp tục suy luận

Tùy chọn vận chuyển

TransportPhù hợp nhất choNotes
stdio Công cụ cục bộ, tích hợp CLI Client khởi chạy server như subprocess; thiết lập đơn giản nhất
HTTP + SSE Dịch vụ đám mây/từ xa, đội nhóm chia sẻ Server chạy độc lập; hỗ trợ header auth
WebSocket Theo thời gian thực hai chiều (bản nháp) Đề xuất cho các trường hợp streaming

🔄 MCP vs Function Calling

Function calling (sử dụng công cụ) là một tính năng tích hợp trong các API AI cụ thể — OpenAI, Anthropic, Google — cho phép bạn định nghĩa các hàm tùy chỉnh mà mô hình có thể gọi. MCP là một lớp phủ lên trên hoặc song song với function calling giúp tiêu chuẩn hóa cách các hàm đó được phát hiện và kết nối.

Function CallingMCP
Scope API-specific, per-request Đa nền tảng, tiêu chuẩn hóa
Discovery Hardcoded in your API call Dynamic — server advertises capabilities
Portability Tied to one AI provider Works with any MCP-compatible client
Resources Not standardized First-class primitive (files, DBs, URIs)
Phù hợp nhất cho Các trường hợp đơn giản, chỉ dùng một nhà cung cấp Hệ thống production đa-công cụ, đa-mô hình

Trong thực tế, các MCP server thường dùng function calling bên trong — MCP cung cấp lớp khám phá và kết nối, trong khi function calling xử lý việc gọi công cụ từ LLM.

🏢 Ai hỗ trợ MCP

Việc chấp nhận MCP đã tăng nhanh kể từ khi ra mắt vào tháng 12 năm 2024. Tính đến tháng 4 năm 2026, hệ sinh thái bao gồm:

Các client AI hỗ trợ MCP

  • Claude (Anthropic) — hỗ trợ MCP gốc trên Claude.ai và Claude Code
  • Cursor — MCP servers cho trợ giúp AI hiểu mã
  • VS Code (GitHub Copilot) — tích hợp MCP ở chế độ agent
  • Windsurf (Codeium) — hỗ trợ MCP server
  • Continue.dev — trợ lý IDE mã nguồn mở với MCP

Các MCP server phổ biến

  • Filesystem — đọc/ghi tệp cục bộ (official Anthropic)
  • GitHub — repos, PRs, issues, tìm kiếm mã
  • PostgreSQL / SQLite — truy vấn cơ sở dữ liệu và khám phá schema
  • Brave Search / Exa — tìm kiếm web không cần API keys
  • Puppeteer / Playwright — tự động hóa trình duyệt
  • Slack / Linear / Notion — tích hợp công cụ năng suất
📦 Tìm MCP servers: The official MCP servers repository và các registry cộng đồng như mcp.so liệt kê hàng trăm server có sẵn.

🚀 Bắt đầu với MCP

Tùy chọn 1: Sử dụng các MCP server hiện có (5 phút)

Cách nhanh nhất để trải nghiệm MCP là dùng Claude Desktop với các server có sẵn. Chỉnh cấu hình Claude Desktop của bạn tại ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Documents"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..." }
    }
  }
}

Tùy chọn 2: Xây dựng một MCP server (30 phút)

SDK chính thức có sẵn cho TypeScript, Python và Kotlin:

// TypeScript MCP server example
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new Server({ name: "my-server", version: "1.0.0" });

server.setRequestHandler("tools/list", async () => ({
  tools: [{
    name: "get_weather",
    description: "Get current weather for a city",
    inputSchema: {
      type: "object",
      properties: { city: { type: "string" } },
      required: ["city"]
    }
  }]
}));

server.setRequestHandler("tools/call", async (request) => {
  const { city } = request.params.arguments;
  // ... fetch weather data
  return { content: [{ type: "text", text: `Weather in ${city}: sunny, 22°C` }] };
});

const transport = new StdioServerTransport();
await server.connect(transport);

🔐 Cân nhắc bảo mật MCP

Sức mạnh của MCP — cho phép các mô hình AI truy cập công cụ, tệp và dịch vụ — cũng đem lại các rủi ro bảo mật mà các nhà phát triển phải thiết kế để phòng chống.

RiskDescriptionMitigation
Chèn prompt (prompt injection) thông qua MCP Nội dung độc hại trong kết quả công cụ thao túng AI Làm sạch đầu ra công cụ; sử dụng mô hình suy luận và mô hình hành động tách biệt
Server có quyền vượt mức MCP server có nhiều quyền hơn mức cần thiết Nguyên tắc ít quyền nhất; ưu tiên read-only khi có thể
Confused deputy AI hành động nhân danh kẻ tấn công mà người dùng không biết Xác nhận HITL cho các hành động phá hủy/không thể đảo ngược
Chuỗi cung ứng server MCP server bên thứ ba độc hại rút trộm dữ liệu Chỉ sử dụng server đáng tin cậy, đã được kiểm toán; xem lại mã server
⚠️ Tuyệt đối không cấp cho MCP servers quyền bạn sẽ không cấp cho một thực tập sinh phát triển. Nếu bạn không cho phép người mới chạy các truy vấn cơ sở dữ liệu tùy ý, đừng cấp cho MCP server quyền cơ sở dữ liệu không giới hạn. Thiết kế quyền cho MCP server cẩn thận như khi thiết kế bất kỳ API nào.

Để tìm hiểu sâu hơn về các lỗ hổng bảo mật AI — bao gồm cách prompt injection có thể được vũ khí hóa thông qua kết quả công cụ MCP — xem hướng dẫn của chúng tôi: Giải thích Prompt Injection.