Bỏ qua tới nội dung chính
Quay lại tin tức

Mọi hướng dẫn về MCP từ năm 2024 đều đã lỗi thời. Dưới đây là cách xây dựng một MCP an toàn vào năm 2026.

Medium Towards AI· Vinamra Yadav· 28/5/2026general

Vào tháng 1/2026, các nhà nghiên cứu bảo mật tại Knostic đã quét internet để tìm kiếm các máy chủ MCP. Họ phát hiện 1.862 máy chủ đang hoạt động công khai. Khi kiểm tra ngẫu nhiên 119 máy chủ, tất cả đều cho phép truy cập mà không cần thông tin xác thực. Không phải một số, mà là tất cả. Các máy chủ này không bị lỗi. Chúng được xây dựng chính xác theo các hướng dẫn – những hướng dẫn được viết trước khi tính năng xác thực tồn tại trong đặc tả kỹ thuật của MCP. Giao thức này được phát hành vào tháng 11/2024 mà không có xác thực bắt buộc. OAuth chỉ được bổ sung vào tháng 3/2025. Giao thức truyền tải HTTP+SSE đã bị loại bỏ và thay thế bằng Streamable HTTP trong cùng thời kỳ cập nhật.

Vào tháng 1/2026, các nhà nghiên cứu bảo mật tại Knostic đã quét internet để tìm kiếm các máy chủ MCP. Họ phát hiện 1.862 máy chủ đang hoạt động công khai và khi họ kiểm tra thủ công ngẫu nhiên 119 máy chủ, tất cả đều cho phép truy cập mà không cần thông tin xác thực. Không phải một số, mà là tất cả. Các máy chủ này không bị lỗi. Chúng được xây dựng chính xác như mô tả trong các hướng dẫn – những hướng dẫn được viết trước khi xác thực tồn tại trong đặc tả kỹ thuật của MCP. Giao thức này được phát hành vào tháng 11/2024 mà không có xác thực bắt buộc. OAuth chỉ được thêm vào tháng 3/2025. Giao thức truyền tải HTTP+SSE đã bị loại bỏ và được thay thế bằng Streamable HTTP trong cùng thời kỳ cập nhật. Hầu hết các hướng dẫn đứng đầu trên Google hiện nay đều được viết trước khi những thay đổi này diễn ra. Nếu bạn đã làm theo một trong những hướng dẫn đó, bạn không hề bất cẩn. Các hướng dẫn đó là chính xác đối với thời điểm chúng được viết. Thế giới đã thay đổi. Bài viết này là bài viết lẽ ra phải tồn tại. MCP là gì – và tại sao những thay đổi trong đặc tả kỹ thuật lại quan trọng Model Context Protocol (MCP) là tiêu chuẩn cho phép các công cụ AI – Claude, Cursor, Windsurf, Warp, GitHub Copilot, VS Code – kết nối với các máy chủ bên ngoài để truy cập các công cụ, dữ liệu và hệ thống của bạn. Đây là USB-C cho các tích hợp AI: thay vì mỗi công cụ cần một trình kết nối tùy chỉnh, tất cả đều sử dụng một giao thức duy nhất. Đến giữa năm 2026, hơn 9.400 máy chủ MCP riêng biệt đã được theo dõi trên các kho lưu trữ công khai. Claude, Cursor, Windsurf, Warp, Copilot, VS Code Agent Mode, Replit – tất cả đều hỗ trợ giao thức này một cách tự nhiên. Nó đã chuyển từ "đặc tả kỹ thuật thú vị" thành "tiêu chuẩn hoạt động" trong khoảng 18 tháng. Nếu bạn đang xây dựng bất cứ thứ gì kết nối các công cụ AI với các hệ thống thực, bạn sẽ xây dựng một máy chủ MCP. Câu hỏi duy nhất là liệu bạn có xây dựng nó một cách chính xác hay không. Những gì thực sự đã thay đổi kể từ các hướng dẫn năm 2024 Ba điều. Tất cả đều quan trọng. 1. Giao thức truyền tải đã thay đổi Đặc tả kỹ thuật ban đầu sử dụng SSE (Server-Sent Events) – một giao thức truyền tải một chiều với những hạn chế thực tế ở quy mô lớn: chi phí kết nối, không tương thích với bộ cân bằng tải, các mẫu yêu cầu-phản hồi không hiệu quả. Trong quá trình cập nhật đặc tả kỹ thuật năm 2025, HTTP+SSE đã bị loại bỏ đối với các máy chủ mới và được thay thế bằng Streamable HTTP – HTTP POST và GET tiêu chuẩn đến một điểm cuối duy nhất, với tùy chọn truyền tải SSE chỉ dành cho các hoạt động kéo dài. Bộ cân bằng tải xử lý nó một cách sạch sẽ, không cần cấu hình proxy đặc biệt. Đến năm 2026, các máy chủ MCP từ xa mới nên sử dụng Streamable HTTP. Nếu cấu hình máy chủ của bạn vẫn có transport: sse, bạn đang chạy một giao thức đã lỗi thời. 2. Xác thực không phải là tùy chọn – với một sắc thái MCP ra mắt mà không có xác thực vì trường hợp sử dụng đầu tiên là cục bộ: các công cụ của nhà phát triển trên máy tính của chính họ. Cục bộ không cần xác thực. Nhưng đặc tả kỹ thuật không phân định rõ ràng ranh giới đó, và các nhóm sản xuất đã bỏ qua. OAuth đã được thêm vào tháng 3/2025. Đặc tả kỹ thuật ủy quyền sau đó đã được thắt chặt xung quanh các luồng kiểu OAuth 2.1 và Resource Indicators (RFC 8707) bắt buộc – các token hiện được ràng buộc với một tài nguyên MCP cụ thể và không thể được sử dụng lại một cách âm thầm trên các điểm cuối khác nhau. Đó là điều ngăn chặn các cuộc tấn công chuyển tiếp token, nơi một máy chủ bị xâm nhập sử dụng lại một token hợp lệ để truy cập một máy chủ khác thay mặt bạn. Quy tắc thực tế: bất kỳ máy chủ MCP nào được phơi bày qua HTTP bên ngoài môi trường hoàn toàn cục bộ đều cần xác thực phù hợp – OAuth 2.1, Protected Resource Metadata, Resource Indicators. Các máy chủ stdio cục bộ trên máy tính của bạn không cần OAuth. Ngay khi bạn phơi bày một máy chủ qua HTTP cho các máy khách khác, xác thực không phải là tùy chọn. 3. Tấn công đầu độc công cụ là một loại tấn công thực tế Ngoài việc thiếu xác thực, còn có một yếu tố thứ hai mà hầu hết các hướng dẫn không đề cập: tấn công đầu độc công cụ. Một cuộc tấn công kẻ tấn công nhúng các chỉ thị độc hại vào phần mô tả hoặc lược đồ của công cụ – không phải đầu ra của công cụ, mà là siêu dữ liệu mà LLM đọc để quyết định cách sử dụng công cụ. Điểm chuẩn MCPTox – được trình bày tại AAAI 2026, thử nghiệm 45 máy chủ MCP đang hoạt động và 353 công cụ xác thực – cho thấy tỷ lệ thành công của cuộc tấn công trên 60% đối với các LLM hiện đại. Các mô hình có năng lực cao hơn thường dễ bị tấn công hơn vì cuộc tấn công khai thác khả năng tuân thủ chỉ thị, chứ không phải điểm yếu của mô hình. Điều này quan trọng khi kết nối với các máy chủ của bên thứ ba. Máy chủ của riêng bạn, nếu được xây dựng đúng cách, sẽ không gặp vấn đề này – nhưng việc biết nó tồn tại sẽ quyết định bạn tin tưởng máy chủ bên ngoài nào. Xây dựng đúng cách: Một máy chủ MCP sẵn sàng sản xuất bằng Python Chúng tôi sẽ xây dựng một trợ lý đánh giá mã phân tích các tệp Python để tìm lỗi và các vấn đề bảo mật. Đến cuối cùng: một máy chủ chạy cục bộ trong Claude Desktop và Cursor, và triển khai từ xa với Streamable HTTP và xác thực mã thông báo kiểu OAuth. Điều kiện tiên quyết: Python 3.12+ FastMCP 3.0 – framework cung cấp năng lượng cho khoảng 70% tổng số máy chủ MCP trên tất cả các ngôn ngữ pip install "fastmcp>=3.0" FastMCP xử lý vận chuyển, tạo lược đồ, OAuth và lớp JSON-RPC. Bạn viết các hàm Python. Bước 1: Cấu trúc máy chủ # server.py from fastmcp import FastMCP from pathlib import Path import os mcp = FastMCP( name="code-review-assistant", instructions=( "Bạn là trợ lý đánh giá mã. Hãy xác định lỗi, vấn đề bảo mật và " "các vấn đề về chất lượng mã trong các tệp Python. Hãy cụ thể. Tham chiếu số dòng. " "Ưu tiên các phát hiện bảo mật. Sử dụng analyze_file để xem xét một tệp. " "Đọc config://review-settings trước để hiểu các tiêu chuẩn áp dụng." ) )Trường hướng dẫn (instructions) thường bị bỏ qua trong các hướng dẫn. Đây là phần mà LLM đọc để hiểu mục đích của máy chủ và cách sử dụng các công cụ của nó. Hãy viết nó như khi bạn hướng dẫn một đồng nghiệp – cụ thể và trực tiếp. Hướng dẫn mơ hồ sẽ tạo ra hành vi mơ hồ. Bước 2: Công cụ – tài liệu xác định liệu chúng có được sử dụng hay không Lỗi phổ biến nhất là coi một công cụ như một chữ ký hàm thư viện. LLM đọc docstring của bạn để quyết định khi nào gọi công cụ và truyền gì vào. Mô tả mơ hồ có nghĩa là đầu vào sai, thời gian sai hoặc công cụ bị bỏ qua. @mcp.tool def analyze_file(file_path: str, focus: str = "all") -> dict: """ Phân tích một tệp Python để tìm lỗi, vấn đề bảo mật và các vấn đề về chất lượng mã. Sử dụng công cụ này khi người dùng muốn xem xét một tệp cụ thể. Đối số: file_path: Đường dẫn tuyệt đối đến tệp Python. Ví dụ: /home/user/project/auth.py focus:

Nguồn tin: Medium Towards AI — Tác giả: Vinamra Yadav. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.