GEARVN
MCP là gì: Giao thức nối AI với công cụ

MCP là gì: Giao thức nối AI với công cụ

Ngày cập nhật: 28/08/2026Marketing & SEO

MCP (Model Context Protocol) là giao thức mở giúp một AI agent gọi ra công cụ, đọc tài nguyên và nhận ngữ cảnh từ bên ngoài mô hình, thay vì phải nhồi hết dữ liệu vào prompt. Nếu bạn mới đọc qua bài AI Agent là gì? Khác chatbot ở đâu và thì có thể hiểu MCP chính là lớp giao tiếp đứng giữa agent và các công cụ mà nó dùng. Bài này tóm tắt MCP hoạt động ra sao, đồng thời khoanh vùng rõ những gì bản sửa đổi đặc tả ngày 2026-07-28 đã đổi — vì phần lõi giao thức vừa trải qua một đợt tinh giản khá lớn.

Mục lục bài viết
1.Bản sửa đổi 2026-07-28 bỏ handshake và session, chuyển sang mô hình theo từng request
2. Những thay đổi khác trong lõi: Subscribe, log, kết quả nhiều vòng, cache
3. Vòng đời tính năng và extension: Cái gì đang được thêm, cái gì sắp bị gỡ
4. Gọi tool trên model chạy cục bộ: Một ví dụ với Ollama
5. Agent có quyền gọi tool đi kèm rủi ro riêng, không chỉ là chuyện chatbot trả lời sai

1.Bản sửa đổi 2026-07-28 bỏ handshake và session, chuyển sang mô hình theo từng request

Trước đây MCP cần một bước handshake mở đầu (initialize/notifications/initialized) rồi mới giữ session xuyên suốt kết nối. Bản sửa đổi 2026-07-28 bỏ cả hai. Giờ mỗi request tự mang theo phiên bản giao thức và capability của client trong trường _meta; nếu client và server lệch phiên bản, server trả về lỗi UnsupportedProtocolVersionError. Header Mcp-Session-Id cũng bị gỡ khỏi transport Streamable HTTP — server nào cần giữ trạng thái xuyên nhiều lời gọi phải tự phát ra một handle tường minh và nhận lại nó như một tham số tool bình thường, không còn dựa vào session ở tầng giao thức.

MCP là giao thức nối AI với công cụ

Để bù lại phần handshake đã mất, đặc tả thêm RPC mới là server/discover: server bắt buộc phải hiện thực để công bố phiên bản giao thức hỗ trợ, capability và danh tính; client có thể gọi trước để chọn phiên bản phù hợp, kể cả trên STDIO.

2. Những thay đổi khác trong lõi: Subscribe, log, kết quả nhiều vòng, cache

  • HTTP GET endpoint cùng resources/subscribe/resources/unsubscribe được thay bằng một RPC duy nhất là subscriptions/listen — một luồng POST-response dài cho mọi thông báo đổi trạng thái, client tự chọn nhận loại nào.
  • ping, logging/setLevel và thông báo đổi danh sách roots bị gỡ; mức log nay đặt theo từng request qua _meta.
  • Mẫu Multi Round-Trip Requests (MRTR) thay cho việc server tự khởi xướng request như lấy roots hay sampling: server trả kết quả trung gian có resultType: "input_required", client trả lời rồi phát lại đúng request gốc. Mọi result giờ đều mang trường resultType, và client phải hiểu result không có trường này (từ server đời cũ) là loại "complete".
  • Khả năng resume luồng SSE bị gỡ hoàn toàn — luồng response đứt giữa chừng là mất request đang bay, phải phát lại như request mới.
  • Kết quả liệt kê tool, prompt, resource giờ mang thêm ttlMscacheScope để client biết cache được bao lâu và có cache dùng chung được không.
  • Request Streamable HTTP POST bắt buộc kèm header Mcp-MethodMcp-Name, giúp gateway route và đo lường mà không cần parse thân JSON.
  • Mã lỗi được chia lại vùng: server tự định nghĩa dùng -32000 đến -32019, còn -32020 đến -32099 dành riêng cho đặc tả MCP; lỗi resource not found đổi từ -32002 sang -32602 cho khớp chuẩn JSON-RPC.

Ba tính năng Roots, Sampling và Logging chuyển sang trạng thái deprecated chứ chưa bị gỡ — chúng vẫn chạy trong cửa sổ deprecation. Hướng di trú được gợi ý: truyền thư mục/tệp qua tham số tool, resource URI hoặc cấu hình server thay cho Roots; gọi thẳng API của nhà cung cấp LLM thay cho Sampling; ghi log ra stderr hoặc dùng OpenTelemetry thay cho Logging. Toàn bộ SDK Tier 1 — TypeScript, Python, Go, C# — đã cập nhật theo bản này, riêng SDK Rust còn ở bản beta.

3. Vòng đời tính năng và extension: Cái gì đang được thêm, cái gì sắp bị gỡ

MCP có chính sách vòng đời rõ ràng với ba trạng thái Active, Deprecated, Removed. Một tính năng bị đánh dấu Deprecated còn tối thiểu mười hai tháng trước khi có thể gỡ, tính từ khi bản revision đánh dấu nó Deprecated được phát hành chính thức. Mốc này chỉ được rút ngắn khi tính năng có rủi ro bảo mật đang hoạt động, và ngay cả khi rút ngắn vẫn phải giữ tối thiểu chín mươi ngày. Nói cách khác, Roots, Sampling, Logging ở trên còn dùng được ít nhất một năm nữa, không phải "đã gỡ".

Tính năng mới không còn được nhét thẳng vào lõi giao thức mà đi qua cơ chế extension, định danh theo dạng vendor-prefix/extension-name (extension chính thức dùng tiền tố io.modelcontextprotocol) và luôn tắt theo mặc định — client phải bật tường minh qua capability trong từng request. Ví dụ rõ nhất là Tasks: tính năng thực thi bất đồng bộ này vừa được chuyển từ trạng thái thử nghiệm trong lõi sang hẳn một extension riêng, đổi từ cơ chế chặn chờ kết quả sang polling. Ba nhóm extension chính thức hiện có là xác thực (OAuth machine-to-machine và authorization quản lý tập trung), MCP Apps (hiển thị giao diện tương tác ngay trong hội thoại) và MCP Tasks (tác vụ chạy dài, polling, có handle bền). Nếu đội của bạn đang cân nhắc Cách tạo AI Agent dùng MCP, đây là phần đáng nắm trước khi thiết kế phần tool.

4. Gọi tool trên model chạy cục bộ: Một ví dụ với Ollama

MCP định nghĩa giao thức nối agent với tool, nhưng bản thân việc model quyết định gọi tool nào lại nằm ở tầng API của runtime chạy model. Với Ollama — runtime phổ biến để chạy model cục bộ — quy trình khá dễ hình dung: client gửi kèm một mảng tools tới endpoint /api/chat, mỗi tool mô tả bằng tên, mô tả và schema tham số. Khi model quyết định cần dùng tool, nó trả về mảng tool_calls gồm tên hàm và tham số; kết quả chạy tool sau đó được đưa lại vào hội thoại bằng một message có vai trò "tool". Ollama hỗ trợ bốn kiểu gọi: single-shot (một lượt hỏi — một lượt gọi tool — một lượt trả kết quả), parallel (nhiều tool call cùng lúc), agent loop (model tự lặp gọi tool đến khi xong) và streaming (ghép dần từng mảnh phản hồi). SDK Python còn cho phép truyền thẳng function Python vào tham số tools mà không cần tự viết schema.

Muốn chạy ổn định kiểu agent loop hay parallel tool calling cục bộ, phần cứng là yếu tố quyết định tốc độ phản hồi — đây là lúc một chiếc Laptop AI chính hãng - Cấu hình trí tuệ đủ mạnh giúp vòng lặp gọi tool không bị nghẽn.

5. Agent có quyền gọi tool đi kèm rủi ro riêng, không chỉ là chuyện chatbot trả lời sai

Bản OWASP GenAI LLM Top 10 công bố tháng 8/2026 xếp hạng mười rủi ro theo thứ tự: Prompt Injection, Sensitive Information Disclosure, Excessive Agency, Supply Chain, Data and Model Poisoning, Unbounded Consumption, Misinformation, Hidden Context Exposure, Vector and Embedding Weaknesses, Improper Output Handling. Đáng chú ý là Excessive Agency — rủi ro trao quá nhiều quyền hành động cho agent — nhảy từ vị trí thứ 6 (bản 2025) lên thứ 3, phản ánh đúng xu hướng agent giờ được gắn quyền gọi tool thật thay vì chỉ trả lời văn bản.

Nguồn: OWASP GenAI LLM Top 10 2026

Tài liệu bảo mật của MCP nêu một loạt quy tắc bắt buộc liên quan trực tiếp đến việc lõi giao thức bỏ session, gồm:

  • Token passthrough: MCP server không được nhận rồi chuyển tiếp nguyên vẹn một token xuống API phía dưới nếu token đó không được phát hành tường minh cho chính server.
  • State handle hijacking: Vì giao thức không còn session, server cần state phải tự sinh handle bằng bộ sinh số ngẫu nhiên an toàn, không dùng ID tuần tự đoán được, và phải buộc handle với người dùng đã xác thực ở phía server — không được coi việc sở hữu handle là bằng chứng xác thực.
  • Local server một-cú-nhấp: Nếu client cho phép cấu hình local server chỉ bằng một cú nhấp, nó phải hiện nguyên văn không cắt bớt lệnh sẽ chạy, cảnh báo đây là thao tác thực thi mã trên máy người dùng, và cho phép huỷ.
  • Sandbox cho local server: Local MCP server chạy cùng mức quyền với client, nên nên chạy trong sandbox quyền tối thiểu, ưu tiên transport stdio để giới hạn truy cập chỉ cho client thay vì mở HTTP không kiểm soát.
  • Confused deputy: Một proxy MCP dùng static client ID với authorization server bên thứ ba, cho phép đăng ký client động và không kiểm consent theo từng client trước khi chuyển tiếp có thể bị lợi dụng để lấy authorization code mà người dùng chưa từng đồng ý.
  • Chỉ mở scheme http/https cho authorization URL do server cung cấp, từ chối javascript:, data:, file: và các scheme nguy hiểm khác; không dùng shell để mở URL.
  • Scope tối thiểu: Bắt đầu với scope đọc/khám phá rủi ro thấp, chỉ nâng quyền khi thao tác đặc quyền được thử lần đầu — tránh công bố toàn bộ scope hay dùng scope bao trùm kiểu "full-access".

Đặc tả 2026-07-28 còn bổ sung: response cấp quyền nên kèm tham số iss để client đối chiếu đúng issuer trước khi đổi authorization code, đồng thời cơ chế đăng ký client động (Dynamic Client Registration) bị xem là lỗi thời, chỉ còn giữ để tương thích ngược. Nếu bạn đang tìm thêm hướng để chọn nền tảng chạy model phù hợp cho agent nội bộ, có thể tham khảo thêm Cách chọn model AI năm 2026.