
Giao thức Ngữ cảnh Mô hình (MCP) là một tiêu chuẩn mở cung cấp cho các mô hình AI một cách thức phổ quát để kết nối với các công cụ bên ngoài, nguồn dữ liệu và dịch vụ. Thay vì viết mã tích hợp tùy chỉnh cho từng tổ hợp mô hình-công cụ, bạn chỉ cần viết một máy chủ MCP duy nhất và mọi mô hình tương thích đều có thể sử dụng nó. Anthropic đã tạo ra MCP vào cuối năm 2024, hiện nay Quỹ Linux quản lý nó, và OpenAI, Google cùng phần còn lại của hệ sinh thái AI tác nhân đã áp dụng giao thức này. Dưới đây là mọi điều bạn cần biết để hiểu, xây dựng và triển khai MCP.
MCP Tóm tắt
Nếu bạn muốn phiên bản nhanh trước khi đi sâu vào chi tiết, thì đây chính là nó.
| Thuộc tính | Chi tiết |
|---|---|
| Tên đầy đủ | Giao thức Ngữ cảnh Mô hình (MCP) |
| Được tạo bởi | Anthropic (Tháng 11/2024), hiện do Quỹ Linux / AAIF quản lý (Tháng 12/2025) |
| Chức năng | Tiêu chuẩn phổ quát để kết nối các mô hình AI với công cụ, dữ liệu và dịch vụ |
| Vấn đề giải quyết | Loại bỏ các tích hợp tùy chỉnh M x N, giống như USB-C cho AI |
| Nguyên thủy cốt lõi | Công cụ (Tools), Tài nguyên (Resources), Lời nhắc (Prompts) và Lấy mẫu (Sampling) |
| Phương thức truyền tải | stdio (phát triển cục bộ), Streamable HTTP (sản xuất) |
| Xác thực | OAuth 2.1 (bắt buộc cho phương thức truyền tải HTTP) |
| SDK | Python (FastMCP), TypeScript, Java, Kotlin, C# |
| Quy mô hệ sinh thái | Hơn 10.000 máy chủ đang hoạt động (theo Quỹ Linux, Tháng 12/2025) |
| Các bên áp dụng lớn | Claude, ChatGPT, Gemini, Cursor, VS Code Copilot, Windsurf |
| Trạng thái đặc tả | Tiêu chuẩn mở, đang phát triển tích cực (lộ trình 2026 đang tiến hành) |
| Phù hợp nhất cho | Các tác nhân AI cần tương tác với công cụ và dữ liệu thực tế |
Bây giờ hãy cùng phân tích từng điểm, bắt đầu với định nghĩa thực sự của MCP và vấn đề khiến nó trở nên cần thiết.
Giao thức Ngữ cảnh Mô hình là gì?
Giao thức Ngữ cảnh Mô hình là một giao thức mở dựa trên JSON-RPC, chuẩn hóa cách các mô hình AI khám phá và tương tác với các công cụ và dữ liệu bên ngoài. Hãy coi nó như HTTP dành cho các tích hợp AI, một ngôn ngữ chung mà bất kỳ mô hình và công cụ nào cũng có thể giao tiếp.
Có lẽ bạn đã nghe đến phép ẩn dụ USB-C, và nó hữu ích ở một mức độ nào đó: trước khi có USB-C, mỗi thiết bị cần một loại cáp riêng. MCP làm điều tương tự cho AI, nhưng phép ẩn dụ này chưa nói hết được giá trị của nó. USB-C chỉ truyền dữ liệu và điện năng. MCP mang theo định nghĩa công cụ, các mẫu truy cập dữ liệu, các mẫu lời nhắc có thể tái sử dụng, và thậm chí cho phép các máy chủ yêu cầu hoàn thành văn bản từ mô hình. Đây là một giao thức phong phú hơn nhiều so với những gì một phép ẩn dụ về cáp gợi ý.
Vấn đề M x N mà MCP Giải quyết
Không có MCP, việc kết nối M mô hình với N công cụ đòi hỏi M x N tích hợp tùy chỉnh. Giả sử bạn hỗ trợ 5 LLM (Claude, GPT-4, Gemini, Llama, Mistral) và cần chúng truy cập 10 công cụ (GitHub, Postgres, Slack, Jira, v.v.). Điều đó đồng nghĩa với 50 lớp tích hợp riêng biệt, mỗi lớp có cơ chế xác thực, xử lý lỗi và định dạng dữ liệu riêng.
Với MCP, mỗi mô hình chỉ cần triển khai giao thức máy khách MCP một lần, và mỗi công cụ triển khai một máy chủ MCP một lần. Giờ đây, chúng ta chỉ có 5 + 10 = 15 lần triển khai thay vì 50. Thêm một mô hình mới? Nó lập tức hoạt động với tất cả 10 công cụ. Thêm một công cụ mới? Tất cả 5 mô hình đều có thể sử dụng nó.
Lịch sử Ngắn gọn của MCP
Anthropic đã mã nguồn mở MCP vào tháng 11 năm 2024 cùng với các SDK cho Python và TypeScript cũng như các bộ kết nối cho Claude Desktop. Việc áp dụng diễn ra rất nhanh. OpenAI đã thêm hỗ trợ MCP vào ChatGPT vào tháng 3 năm 2025. Google tiếp nối với Gemini vào tháng 4 năm 2025. Đến tháng 12 năm 2025, Anthropic đã trao tặng MCP cho Quỹ Agentic AI Foundation (AAIF) mới của Quỹ Linux, đồng sáng lập cùng Block và OpenAI, biến MCP thành một tiêu chuẩn trung lập về nhà cung cấp với sự quản trị xuyên ngành.
MCP KHÔNG PHẢI là:
- Không phải là một mô hình hay khung AI (nó là một giao thức, giống như HTTP)
- Không thay thế LangChain hay LlamaIndex (đó là các lớp điều phối; MCP nằm bên dưới chúng)
- Không giới hạn ở Anthropic hay Claude (nó được thiết kế để độc lập với mô hình)
- Không giống hệt với gọi hàm (sẽ nói rõ hơn trong phần so sánh)
MCP Hoạt động Như Thế Nào? Đi Sâu Vào Kiến Trúc
MCP có ba vai trò, và việc nhầm lẫn giữa chúng là sai lầm phổ biến nhất của người mới bắt đầu. Hãy làm rõ sự khác biệt.
<!-- IMAGE: Sơ đồ kiến trúc MCP hiển thị các vai trò host, client, server với các ví dụ thực tế như Claude Desktop, GitHub MCP Server, Postgres MCP Server -->Host, Client và Server, Sự Khác Biệt Là Gì?
| Thành phần | Vai trò | Ví dụ | Chức năng |
|---|---|---|---|
| Host | Ứng dụng mà người dùng tương tác | Claude Desktop, Cursor, VS Code | Cung cấp giao diện người dùng, quản lý các instance client |
| Client | Bộ xử lý giao thức bên trong host | Tích hợp sẵn trong ứng dụng host | Duy trì kết nối 1:1 với một máy chủ MCP |
| Server | Hiển thị công cụ và dữ liệu qua MCP | Máy chủ GitHub, máy chủ Postgres, máy chủ Slack | Bao bọc các API/dữ liệu bên ngoài trong các điểm cuối tương thích MCP |
Đây là một ví dụ cụ thể: bạn yêu cầu Claude Desktop kiểm tra các pull request đang mở trên GitHub của bạn. Claude Desktop đóng vai trò là host. MCP client tích hợp sẵn của nó mở một kết nối đến MCP server của GitHub. Máy chủ gọi API GitHub, lấy danh sách PR của bạn và trả kết quả về cho client, sau đó client chuyển chúng cho mô hình.
Một host duy nhất có thể chạy nhiều client, mỗi client kết nối với một máy chủ khác nhau. Đó là cách Claude Desktop có thể đồng thời truy cập GitHub, cơ sở dữ liệu Postgres của bạn và Slack — ba máy chủ MCP riêng biệt, ba kết nối client riêng biệt, nhưng chỉ một host.
Luồng Tin Nhắn (JSON-RPC 2.0)
Tất cả giao tiếp MCP sử dụng JSON-RPC 2.0, một giao thức yêu cầu/phản hồi nhẹ. Dưới đây là ví dụ về trao đổi tools/list trên đường truyền:
// Client request: "What tools do you have?"
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}
// Server response: one tool available
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"tools": [
{
"name": "get_weather",
"description": "Get current weather for a city",
"inputSchema": {
"type": "object",
"properties": {
"city": { "type": "string" }
},
"required": ["city"]
}
}
]
}
}Mô hình đọc các định nghĩa công cụ này, quyết định khi nào gọi chúng dựa trên yêu cầu của người dùng, và client gửi lại yêu cầu tools/call đến máy chủ với các đối số phù hợp.
Vòng đời Kết nối
Mọi phiên MCP đều tuân theo cùng một vòng đời:
- Khởi tạo, client gửi khả năng hỗ trợ, máy chủ phản hồi với khả năng của mình
- Thương lượng khả năng, hai bên thống nhất các tính năng được hỗ trợ (công cụ, tài nguyên, lời nhắc, lấy mẫu)
- Sẵn sàng, kết nối đang hoạt động; yêu cầu chảy theo cả hai chiều
- Yêu cầu/phản hồi,
tools/call,resources/read, v.v. - Tắt máy, ngắt kết nối sạch sẽ
Cái bắt tay này đảm bảo khả năng tương thích tiến về phía trước. Nếu một máy chủ thêm một nguyên thủy mới, các client cũ sẽ bỏ qua nó một cách êm ái thay vì bị sập.
Các Nguyên Thủy Của MCP: Công Cụ, Tài Nguyên, Lời Nhắc và Lấy Mẫu
MCP định nghĩa bốn nguyên thủy, và việc hiểu ai kiểm soát từng nguyên thủy là chìa khóa để thiết kế các máy chủ MCP tốt.
| Nguyên thủy | Ai Kiểm Soát | Hướng | Ví dụ | Trường hợp sử dụng |
|---|---|---|---|---|
| Công cụ (Tools) | Mô hình quyết định khi nào gọi | Client -> Server | create_github_issue | Hành động AI thực hiện tự động |
| Tài nguyên (Resources) | Ứng dụng/người dùng chọn | Client -> Server | file://project/README.md | Dữ liệu đính kèm vào ngữ cảnh |
| Lời nhắc (Prompts) | Người dùng kích hoạt | Client -> Server | Mẫu code_review | Các mẫu tương tác có thể tái sử dụng |
| Lấy mẫu (Sampling) | Máy chủ yêu cầu hoàn thành | Server -> Client | Máy chủ yêu cầu mô hình tóm tắt | Các vòng lặp tác nhân nơi máy chủ sử dụng LLM |
Công Cụ (Do Mô Hình Kiểm Soát)
Công cụ là các hàm mà mô hình có thể gọi. Máy chủ khai báo chúng với tên, mô tả và định nghĩa đầu vào JSON Schema. Mô hình đọc các định nghĩa này, và khi yêu cầu của người dùng cần thiết, mô hình sẽ quyết định gọi công cụ.
// Client sends tools/call request
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_weather",
"arguments": { "city": "Berlin" }
}
}Nếu bạn đã sử dụng gọi hàm của OpenAI, công cụ sẽ cảm thấy quen thuộc, nhưng chúng được chuẩn hóa trên mọi mô hình tương thích MCP.
Tài Nguyên (Do Ứng Dụng Kiểm Soát)
Tài nguyên là các điểm cuối dữ liệu chỉ đọc. Khác với công cụ, mô hình không tự quyết định tìm nạp tài nguyên; ứng dụng host hoặc người dùng phải đính kèm rõ ràng tài nguyên vào ngữ cảnh hội thoại. Hãy nghĩ về chúng như các điểm cuối GET: postgres://mydb/users/schema, file://docs/api-reference.md.
Tài nguyên hỗ trợ đăng ký qua resources/subscribe, giúp client có thể nhận thông báo khi dữ liệu thay đổi.
Lời Nhắc (Do Người Dùng Kiểm Soát)
Lời nhắc là các mẫu có thể tái sử dụng mà máy chủ MCP hiển thị. Một lời nhắc code_review có thể chấp nhận đường dẫn tệp và tạo ra một yêu cầu đánh giá có cấu trúc. Người dùng (hoặc giao diện host) kích hoạt lời nhắc một cách rõ ràng, chúng không được mô hình tự động gọi.
Lấy Mẫu (Do Máy Chủ Khởi Xướng), Nâng Cao
Đây là nguyên thủy mà hầu hết các hướng dẫn bỏ qua. Lấy mẫu cho phép máy chủ yêu cầu client tạo ra một phần hoàn thành văn bản bằng cách sử dụng LLM. Điều này đảo ngược luồng thông thường: thay vì mô hình gọi công cụ, công cụ gọi mô hình.
Tại sao? Vì các vòng lặp tác nhân. Hãy tưởng tượng một máy chủ MCP xử lý các vé hỗ trợ. Nó đọc vé (một tài nguyên), sử dụng sampling/createMessage để yêu cầu mô hình tóm tắt, sau đó sử dụng bản tóm tắt đó để định tuyến vé thông qua một công cụ. Máy chủ điều phối một quy trình nhiều bước bằng trí tuệ của mô hình.
Việc lấy mẫu bị kiểm soát bởi ứng dụng host, người dùng phải phê duyệt nó, và host kiểm soát những gì máy chủ có thể yêu cầu. Điều này ngăn chặn các vòng lặp mất kiểm soát và duy trì sự giám sát của con người.
Xây Dựng Máy Chủ MCP Đầu Tiên Của Bạn: Python và TypeScript Song Song
Đủ lý thuyết rồi. Hãy cùng xây dựng một máy chủ MCP hoạt động được, hiển thị một công cụ get_weather. Tôi sẽ trình bày cả Python và TypeScript để bạn có thể so sánh trải nghiệm phát triển và chọn ngăn xếp phù hợp với dự án của mình.
Python với FastMCP
FastMCP là SDK Python cấp cao chính thức. Nó xử lý tất cả các phần kỹ thuật của giao thức để bạn có thể tập trung vào logic công cụ.
# Install FastMCP
pip install fastmcp# weather_server.py
from fastmcp import FastMCP
mcp = FastMCP("Weather Server")
@mcp.tool()
def get_weather(city: str) -> str:
"""Get the current weather for a city."""
# In production, call a real weather API here
weather_data = {
"Berlin": "Cloudy, 12°C",
"Tokyo": "Sunny, 22°C",
"New York": "Rainy, 8°C",
}
return weather_data.get(city, f"No data for {city}")
if __name__ == "__main__":
mcp.run()Chỉ vậy thôi — 15 dòng. FastMCP suy luận lược đồ đầu vào của công cụ từ các gợi ý kiểu (type hints) và docstring của Python. Không cần boilerplate JSON Schema.
TypeScript với SDK Chính Thức
SDK TypeScript (@modelcontextprotocol/sdk) rõ ràng hơn một chút nhưng cho bạn toàn quyền kiểm soát các định nghĩa lược đồ.
# Install the SDK and Zod for schema validation
npm install @modelcontextprotocol/sdk zod// weather-server.ts
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: "Weather Server",
version: "1.0.0",
});
server.tool(
"get_weather",
"Get the current weather for a city",
{ city: z.string() },
async ({ city }) => {
const weatherData: Record<string, string> = {
Berlin: "Cloudy, 12°C",
Tokyo: "Sunny, 22°C",
"New York": "Rainy, 8°C",
};
return {
content: [
{ type: "text", text: weatherData[city] ?? `No data for ${city}` },
],
};
}
);
const transport = new StdioServerTransport();
await server.connect(transport);Phiên bản TypeScript sử dụng lược đồ Zod thay vì gợi ý kiểu, và trả về các khối nội dung có cấu trúc. Verbose hơn, nhưng độ an toàn kiểu rất tuyệt vời.
Kết Nối Với Claude Desktop
Để kết nối một trong hai máy chủ vào Claude Desktop, hãy thêm nó vào claude_desktop_config.json:
{
"mcpServers": {
"weather-python": {
"command": "python",
"args": ["weather_server.py"],
"cwd": "/path/to/your/project"
},
"weather-typescript": {
"command": "npx",
"args": ["tsx", "weather-server.ts"],
"cwd": "/path/to/your/project"
}
}
}Khởi động lại Claude Desktop, và cả hai máy chủ thời tiết sẽ xuất hiện trong danh sách công cụ. Hỏi "Thời tiết ở Berlin thế nào?" và mô hình sẽ tự động gọi công cụ get_weather của bạn.
Kiểm Tra Với MCP Inspector
Trước khi kết nối máy chủ của bạn với một host, hãy kiểm tra nó trong môi trường cô lập với MCP Inspector:
npx @modelcontextprotocol/inspector python weather_server.pyInspector mở ra một giao diện trình duyệt nơi bạn có thể xem các công cụ được phát hiện, gọi chúng thủ công và kiểm tra các tin nhắn JSON-RPC qua lại. Đây là công cụ gỡ lỗi tốt nhất trong hệ sinh thái MCP, hãy sử dụng nó sớm và thường xuyên.
Phương Thức Truyền Tải MCP: stdio Cho Phát Triển, Streamable HTTP Cho Sản Xuất
Tin nhắn MCP cần một cách để di chuyển giữa client và server. Đó là lớp truyền tải, và việc chọn đúng phương thức rất quan trọng.
| Phương thức | Trường hợp sử dụng | Ưu điểm | Nhược điểm | Trạng thái |
|---|---|---|---|---|
| stdio | Phát triển cục bộ, công cụ cá nhân | Không cần cấu hình, đơn giản, nhanh | Chỉ cùng máy | Đang hoạt động |
| Streamable HTTP | Sản xuất, máy chủ từ xa, đa người dùng | Hoạt động qua mạng, hỗ trợ streaming qua SSE, thân thiện với stateless | Cần máy chủ HTTP, cần xác thực | Đang hoạt động (đặc tả 2025) |
| HTTP+SSE (cũ) | Truyền tải từ xa kế thừa | Là tùy chọn từ xa ban đầu | Đã được thay thế bởi Streamable HTTP | Không còn dùng |
stdio hoạt động bằng cách sinh ra máy chủ MCP như một tiến trình con và giao tiếp qua stdin/stdout. Đó là những gì bạn đã sử dụng trong hướng dẫn trên, không cần cổng, không cần TLS, không cần xác thực. Hoàn hảo cho phát triển và các công cụ cục bộ đơn người dùng.
Streamable HTTP là phương thức truyền tải cho môi trường sản xuất, được thêm vào trong bản cập nhật đặc tả 2025. Client gửi các yêu cầu HTTP POST tiêu chuẩn đến máy chủ. Máy chủ có thể phản hồi đồng bộ hoặc mở một luồng SSE cho các thao tác dài hơn. Nó thân thiện với stateless, hoạt động đằng sau bộ cân bằng tải và hỗ trợ xác thực HTTP tiêu chuẩn.
Nếu bạn thấy các hướng dẫn cũ đề cập đến "HTTP+SSE" như hai phương thức truyền tải riêng biệt (một để gửi, một để nhận), đó là cách tiếp cận đã lỗi thời. Streamable HTTP hợp nhất cả hai thành một cơ chế duy nhất, sạch sẽ hơn.
Quyết định rất đơn giản: sử dụng stdio khi phát triển cục bộ, chuyển sang streamable-http khi triển khai cho người khác.
// Switching from stdio to Streamable HTTP in TypeScript
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
const transport = new StreamableHTTPServerTransport({ port: 3001 });
await server.connect(transport);MCP so với Gọi Hàm so với REST APIs, Khi Nào Sử Dụng Cái Nào
Đây là câu hỏi xuất hiện trong mọi cuộc thảo luận về MCP, vì vậy hãy giải quyết nó bằng một bảng so sánh trực tiếp.
| Tính năng | MCP | Gọi Hàm (Function Calling) | REST APIs |
|---|---|---|---|
| Chuẩn hóa | Giao thức mở, độc lập mô hình | Theo nhà cung cấp (OpenAI, Anthropic mỗi bên có chuẩn riêng) | Phổ quát |
| Khám phá công cụ | Tích hợp sẵn (tools/list) | Không có, bạn gửi lược đồ mỗi yêu cầu | Không có, cần tài liệu hoặc đặc tả OpenAPI |
| Truy cập dữ liệu | Nguyên thủy Tài nguyên | Không hỗ trợ | Điểm cuối tiêu chuẩn |
| Mẫu lời nhắc | Nguyên thủy Lời nhắc | Không hỗ trợ | Không áp dụng |
| Xác thực | OAuth 2.1 (cấp độ đặc tả) | Khóa API nhà cung cấp | Đa dạng (khóa API, OAuth, v.v.) |
| Streaming | SSE qua Streamable HTTP | Phụ thuộc nhà cung cấp | Đa dạng |
| Đa mô hình | Hoạt động với bất kỳ mô hình tương thích MCP nào | Bị khóa vào API của một nhà cung cấp | Độc lập mô hình (cần mã kết nối) |
| Hệ sinh thái máy chủ | Hơn 10.000 máy chủ dựng sẵn | N/A | Hàng triệu API |
| Độ phức tạp thiết lập | Chạy một máy chủ MCP | Gửi JSON trong lệnh gọi API | Client HTTP |
| Phù hợp nhất cho | Môi trường tác nhân đa mô hình, đa công cụ | Ứng dụng đơn mô hình đơn giản với vài công cụ | Giao tiếp dịch vụ-với-dịch vụ |
Khi Nào Gọi Hàm Là Đủ
Nếu bạn có dưới 5 công cụ và chỉ sử dụng một mô hình, gọi hàm đơn giản hơn. Bạn định nghĩa các lược đồ công cụ inline với mỗi lệnh gọi API, mô hình trả về tên hàm và đối số, và bạn thực thi chúng trong mã ứng dụng của mình. Không cần chạy máy chủ, không cần học giao thức. Đối với một chatbot kiểm tra trạng thái đơn hàng và tra cứu FAQ, gọi hàm là hoàn toàn ổn.
Khi Nào MCP Trở Nên Đáng Giá
MCP chứng minh được độ phức tạp của nó khi:
- Bạn hỗ trợ nhiều LLM và không muốn viết lại định nghĩa công cụ cho từng nhà cung cấp
- Bạn cần khám phá công cụ, mô hình có thể truy vấn những gì có sẵn thay vì bạn hardcode các lược đồ
- Bạn muốn tài nguyên và lời nhắc, không chỉ gọi công cụ
- Bạn đang xây dựng các tác nhân AI phối hợp tự động và cần một lớp tích hợp chuẩn hóa
- Đội ngũ của bạn đang phát triển và các kỹ sư khác nhau xây dựng các công cụ khác nhau, MCP cho phép họ làm việc độc lập
Kết luận: MCP thắng khi bạn cần truy cập công cụ chuẩn hóa, đa mô hình. Gọi hàm thắng cho các trường hợp sử dụng đơn giản, đơn mô hình. REST APIs vẫn là lựa chọn đúng cho giao tiếp dịch vụ-với-dịch vụ truyền thống không liên quan đến LLM.
Hệ Sinh Thái MCP Năm 2026: Ai Hỗ Trợ Và Có Những Gì
MCP đã chuyển từ một dự án phụ của Anthropic thành một tiêu chuẩn ngành trong chưa đầy 18 tháng. Dưới đây là tình hình hiện tại.
Những LLM Nào Hỗ Trợ MCP?
| LLM | Hỗ trợ MCP | Từ khi | Ghi chú |
|---|---|---|---|
| Claude | Native, hỗ trợ đầy đủ | Tháng 11/2024 | Tạo ra MCP; tích hợp sâu nhất |
| ChatGPT | Hỗ trợ chính thức | Tháng 3/2025 | Qua tích hợp MCP của OpenAI |
| Gemini | Hỗ trợ chính thức | Tháng 4/2025 | Máy chủ MCP Google Cloud cho các dịch vụ Google |
| Llama / Mã nguồn mở | Qua bộ chuyển đổi | 2025 | LangChain, LlamaIndex và các bộ chuyển đổi tùy chỉnh |
| Copilot (VS Code) | Native ở chế độ agent | 2025 | Microsoft phát hành hỗ trợ MCP trong VS Code |
Các Máy Chủ MCP Phổ Biến Đáng Biết
| Danh mục | Máy chủ | Chức năng |
|---|---|---|
| Code | GitHub | PR, issues, repos, tìm kiếm code |
| Code | GitLab | Merge requests, pipelines, quản lý dự án |
| Cơ sở dữ liệu | PostgreSQL | Kiểm tra lược đồ, thực thi truy vấn |
| Cơ sở dữ liệu | MySQL | Truy cập truy vấn và lược đồ |
| SaaS | Slack | Tin nhắn kênh, tìm kiếm, thông báo |
| SaaS | Google Drive | Truy cập tệp, tìm kiếm, đọc tài liệu |
| SaaS | Notion | Đọc trang, truy vấn cơ sở dữ liệu |
| Tìm kiếm | Brave Search | Kết quả tìm kiếm web |
| DevOps | Docker | Quản lý container |
| Hạ tầng | AWS | Quản lý tài nguyên đám mây |
Thông báo của AAIF thuộc Quỹ Linux đã trích dẫn hơn 10.000 máy chủ đang hoạt động và 97 triệu lượt tải xuống SDK hàng tháng tại thời điểm MCP được trao tặng vào tháng 12 năm 2025. Hệ sinh thái không còn là thử nghiệm nữa, nó đã đạt cấp độ sản xuất.
MCP Apps là một nguyên thủy mới được giới thiệu vào tháng 1 năm 2026. Nó cho phép các máy chủ cung cấp các thành phần giao diện người dùng tương tác hiển thị bên trong ứng dụng host. Vẫn còn sớm, nhưng nó báo hiệu sự tiến hóa của MCP từ một giao thức dữ liệu thành một khung tác nhân-ứng dụng đầy đủ. Đáng để theo dõi.
Quản Trị: Từ Anthropic Đến Quỹ Linux
MCP được quản lý bởi Agentic AI Foundation (AAIF) thuộc Quỹ Linux, đồng sáng lập bởi Anthropic, Block và OpenAI. Điều này quan trọng đối với việc áp dụng doanh nghiệp: MCP không bị ràng buộc với lộ trình của một nhà cung cấp duy nhất. Các ưu tiên trong lộ trình 2026 là tiến hóa phương thức truyền tải, giao tiếp tác nhân-với-tác nhân (một nguyên thủy "Tasks" mới), trưởng thành về quản trị và sẵn sàng cho doanh nghiệp.
Đối với các đội xây dựng hệ thống AI sản xuất, các khung như khung tác nhân AI tự động như OpenClaw đã tích hợp với các máy chủ MCP để cung cấp cho các tác nhân khả năng thực tế.
Bảo Mật MCP: OAuth 2.1, Mối Đe Dọa và Danh Sách Kiểm Tra Thực Tế
Bảo mật là nơi hệ sinh thái MCP còn nhiều việc phải làm. Và các con số vẽ nên một bức tranh stark.
Vấn Đề 88%: Tại Sao Hầu Hết Các Máy Chủ MCP Đều Không An Toàn
Astrix Security đã phân tích hơn 5.200 triển khai máy chủ MCP mã nguồn mở và phát hiện ra rằng 88% yêu cầu thông tin xác thực, nhưng 53% dựa vào các bí mật tĩnh tồn tại lâu dài không an toàn như khóa API và token truy cập cá nhân được hardcode trong các tệp cấu hình. Chỉ 8.5% triển khai OAuth.
Điều đó có nghĩa là đại đa số các máy chủ MCP ngoài kia đang sử dụng phương pháp xác thực tương đương với việc dán chìa khóa nhà lên cửa trước.
OAuth 2.1 Cho Máy Chủ MCP
Đặc tả MCP yêu cầu OAuth 2.1 cho tất cả các máy chủ dựa trên HTTP kể từ bản cập nhật tháng 6 năm 2025. Luồng hoạt động như sau: client MCP khởi tạo luồng ủy quyền OAuth 2.1 với máy chủ, nhận được token truy cập có phạm vi và bao gồm nó với mọi yêu cầu tiếp theo. PKCE (Proof Key for Code Exchange) là bắt buộc cho tất cả các client, không có ngoại lệ.
Nếu bạn đang xây dựng một máy chủ MCP chạy qua Streamable HTTP, OAuth 2.1 không phải là tùy chọn. Nó là bắt buộc theo đặc tả.
Mô Hình Đe Dọa: Những Gì Có Thể Sai
Bốn mối đe dọa đáng được chú ý trong bất kỳ triển khai MCP nào:
- Tiêm lời nhắc qua công cụ, Một nguồn dữ liệu độc hại hoặc bị xâm nhập trả về nội dung được thiết kế để thao túng mô hình. Nếu một công cụ tìm nạp một trang web và trang đó chứa các hướng dẫn ẩn, mô hình có thể thực thi chúng.
- Tấn công confused deputy, Mô hình gọi một công cụ với quyền hạn rộng hơn dự định của người dùng. Nếu máy chủ MCP có quyền admin đối với cơ sở dữ liệu, về lý thuyết mô hình có thể xóa một bảng.
- Rủi ro tập trung token, Một máy chủ MCP giữ các khóa API cho GitHub, Slack và cơ sở dữ liệu sản xuất của bạn là một mục tiêu giá trị cao duy nhất. Xâm nhập một máy chủ, xâm nhập mọi thứ nó kết nối.
- Truyền tải không an toàn, Chạy máy chủ MCP HTTP mà không có TLS sẽ phơi bày mọi yêu cầu, bao gồm cả token OAuth và dữ liệu nhạy cảm, dưới dạng văn bản thuần.
Danh Sách Kiểm Tra Bảo Mật Cho MCP Sản Xuất
- Triển khai OAuth 2.1 cho bất kỳ máy chủ nào được phơi bày qua HTTP. Không có khóa API tĩnh trong tệp cấu hình.
- Áp dụng nguyên tắc đặc quyền tối thiểu. Nếu công cụ của bạn chỉ đọc dữ liệu, thông tin xác thực của máy chủ phải là chỉ đọc. Đừng cấp quyền ghi cho một công cụ báo cáo.
- Cô lập thông tin xác thực. Mỗi máy chủ MCP nên có token có phạm vi riêng. Không chia sẻ một "token god" duy nhất across các máy chủ.
- Thực thi TLS ở mọi nơi. Streamable HTTP mà không có HTTPS là điều cấm kỵ tự động cho sản xuất.
- Xác thực và làm sạch đầu ra công cụ. Xử lý dữ liệu trả về bởi các công cụ giống như cách bạn xử lý đầu vào của người dùng, đừng tin tưởng nó mù quáng.
- Giới hạn tốc độ gọi công cụ. Một vòng lặp tác nhân mất kiểm soát gọi một công cụ hàng nghìn lần có thể làm cạn kiệt hạn ngạch API hoặc gây ra các tác dụng phụ không mong muốn.
- Kiểm toán và ghi log mọi lệnh gọi công cụ. Bao gồm ID yêu cầu, dấu thời gian, mô hình gọi và các đối số công cụ. Bạn cần điều này để gỡ lỗi và ứng phó sự cố bảo mật.
Gỡ Lỗi MCP: Inspector, Logging và Các Lỗi Thường Gặp
Bạn sẽ gặp lỗi. Mọi nhà phát triển đều vậy. Đây là cách sửa chúng nhanh chóng.
MCP Inspector là công cụ gỡ lỗi chính thức và là tuyến phòng thủ đầu tiên của bạn. Nó kết nối với bất kỳ máy chủ MCP nào, khám phá các công cụ/tài nguyên/lời nhắc của nó và cho phép bạn gọi chúng thủ công trong khi hiển thị lưu lượng JSON-RPC thô.
# Launch Inspector against your Python server
npx @modelcontextprotocol/inspector python weather_server.py
# Or against a TypeScript server
npx @modelcontextprotocol/inspector npx tsx weather-server.tsInspector mở ra một giao diện dựa trên trình duyệt với các tab cho Công cụ, Tài nguyên, Lời nhắc và bảng thông báo. Bạn có thể gọi bất kỳ công cụ nào với các đối số tùy chỉnh và xem chính xác JSON nào đi qua đường truyền. Sử dụng nó trước khi kết nối với ứng dụng host, việc gỡ lỗi máy chủ trong môi trường cô lập dễ dàng hơn nhiều.
Các Lỗi Thường Gặp và Cách Khắc Phục
- "Server not found" trong Claude Desktop, Hầu như luôn là vấn đề đường dẫn trong
claude_desktop_config.json. Kiểm tra kỹ xemcommandcó trỏ đến một binary thực tế không vàcwdtrỏ đến thư mục đúng. Trên macOS, sử dụng đường dẫn tuyệt đối. - Lỗi xác thực lược đồ công cụ, Nếu mô hình gửi các đối số không khớp với
inputSchemacủa công cụ, máy chủ sẽ từ chối lệnh gọi. Kiểm tra xem các loại lược đồ của bạn có khớp với những gì mô hình mong đợi không. Zod (TypeScript) và gợi ý kiểu (Python) bắt hầu hết các lỗi này tại thời điểm định nghĩa. - Mất kết nối truyền tải, Đối với
stdio, điều này thường có nghĩa là tiến trình máy chủ bị sập. Kiểm tra đầu ra stderr. Đối với Streamable HTTP, xác minh cài đặt timeout, các công cụ chạy lâu có thể vượt quá timeout HTTP mặc định. - Lỗi "Permission denied" hoặc 401, Phạm vi OAuth quá hẹp. Máy chủ đang từ chối token vì nó không có quyền cần thiết. Mở rộng phạm vi, nhưng chỉ nhiều như mức công cụ thực sự cần.
Thực Tốt Nhất Cho Logging
Cấu trúc log của bạn với ID yêu cầu để bạn có thể theo dõi một yêu cầu người dùng duy nhất across client MCP, máy chủ và bất kỳ API downstream nào. Ghi log mọi lệnh gọi tools/call với tên công cụ, đối số, thời gian phản hồi và trạng thái kết quả. Trong sản xuất, hãy gửi các log này đến nền tảng quan sát, khi có sự cố lúc 3 giờ sáng, bạn sẽ vui vì đã làm điều đó.
Cách Techsy Xây Dựng Với MCP
Chúng tôi đã tích hợp MCP vào các dự án khách hàng từ đầu năm 2025, và mô hình chúng tôi thấy thường xuyên nhất là: một đội có tính năng AI hoạt động với một mô hình và một vài công cụ, nhưng họ đang lên kế hoạch mở rộng, nhiều mô hình hơn, nhiều nguồn dữ liệu hơn, nhiều khả năng tác nhân hơn. Đó là điểm uốn nơi MCP bắt đầu phát huy giá trị.
Cách tiếp cận của chúng tôi tuân theo ba bước:
- Đánh giá sự phù hợp. Không phải dự án nào cũng cần MCP. Nếu bạn chỉ gọi hai công cụ từ một mô hình duy nhất, gọi hàm đơn giản hơn và chúng tôi sẽ nói với bạn điều đó. MCP có ý nghĩa khi bạn kết nối 3+ nguồn dữ liệu, hỗ trợ nhiều mô hình hoặc xây dựng các quy trình tác nhân nơi các công cụ cần được khám phá.
- Xây dựng và kiểm tra máy chủ trong môi trường cô lập. Chúng tôi phát triển các máy chủ MCP tùy chỉnh cho từng nguồn dữ liệu, cơ sở dữ liệu nội bộ, API SaaS, dịch vụ độc quyền và xác thực chúng với MCP Inspector trước khi kết nối với bất kỳ host nào.
- Triển khai với Streamable HTTP và OAuth 2.1. Cho sản xuất, chúng tôi chạy các máy chủ MCP dưới dạng dịch vụ containerized đằng sau TLS, với token OAuth có phạm vi và logging có cấu trúc ngay từ ngày đầu tiên. Không có bí mật tĩnh.
Các tích hợp phổ biến nhất chúng tôi xây dựng: kết nối trợ lý AI với cơ sở dữ liệu Postgres nội bộ, xây dựng các máy chủ MCP tùy chỉnh cho các nền tảng SaaS của khách hàng và di chuyển các đội từ các thiết lập gọi hàm rời rạc sang kiến trúc MCP chuẩn hóa.
Đang xây dựng các công cụ hỗ trợ AI cần kết nối với hạ tầng của bạn? Chúng tôi giúp các đội kiến trúc và triển khai tích hợp MCP. Nhận tư vấn miễn phí
Câu Hỏi Thường Gặp Về MCP
Giao thức Ngữ cảnh Mô hình (MCP) là gì?
MCP là một tiêu chuẩn mở, ban đầu được tạo ra bởi Anthropic và hiện do Quỹ Linux quản lý, định nghĩa cách các mô hình AI kết nối với các công cụ bên ngoài, nguồn dữ liệu và dịch vụ. Nó chuẩn hóa lớp tích hợp để một máy chủ MCP hoạt động với bất kỳ mô hình tương thích nào, giống như một phích cắm phổ quát cho AI.
MCP hoạt động như thế nào?
MCP sử dụng kiến trúc ba phần: một ứng dụng host (như Claude Desktop hoặc Cursor), một MCP client bên trong host quản lý kết nối và các MCP server hiển thị công cụ và dữ liệu. Tất cả giao tiếp sử dụng tin nhắn JSON-RPC 2.0 qua either stdio (cục bộ) hoặc Streamable HTTP (từ xa).
MCP được sử dụng để làm gì?
Các trường hợp sử dụng phổ biến bao gồm kết nối trợ lý AI với cơ sở dữ liệu (Postgres, MySQL), tích hợp với các nền tảng code (GitHub, GitLab), truy cập các công cụ SaaS (Slack, Notion, Google Drive) và xây dựng các tác nhân AI tự động cần tương tác với các dịch vụ thực tế.
MCP có giống với gọi hàm không?
Không. Gọi hàm là đặc thù cho mô hình (định dạng của OpenAI khác với Anthropic) và theo yêu cầu, bạn gửi lược đồ công cụ với mỗi lệnh gọi API. MCP là một giao thức chuẩn hóa hoạt động cross các mô hình, hỗ trợ khám phá công cụ và bao gồm tài nguyên và lời nhắc ngoài việc thực thi hàm.
Máy chủ MCP là gì?
Máy chủ MCP là các chương trình hiển thị công cụ, tài nguyên và lời nhắc cho các mô hình AI thông qua giao thức MCP. Chúng bao bọc các API và nguồn dữ liệu bên ngoài trong một giao diện chuẩn hóa. Ví dụ bao gồm máy chủ MCP GitHub (để quản lý PR và issue) và máy chủ MCP Postgres (để truy vấn cơ sở dữ liệu).
Làm thế nào để xây dựng một máy chủ MCP?
Sử dụng Python với FastMCP (pip install fastmcp) hoặc TypeScript với SDK chính thức (npm install @modelcontextprotocol/sdk). Định nghĩa các công cụ của bạn dưới dạng các hàm được trang trí (Python) hoặc các handler đã đăng ký (TypeScript), sau đó chạy máy chủ. Xem phần hướng dẫn ở trên để có mã hoạt động đầy đủ, hoặc làm theo hướng dẫn từng bước để xây dựng máy chủ MCP từ đầu để có bài walkthrough đầy đủ.
MCP có an toàn không?
Bản thân giao thức hỗ trợ OAuth 2.1 để xác thực và phân quyền theo phạm vi. Tuy nhiên, nghiên cứu của Astrix Security phát hiện ra rằng 88% các triển khai máy chủ MCP hiện có dựa vào bí mật tĩnh thay vì OAuth. Giao thức được thiết kế an toàn, nhưng hầu hết các triển khai thực tế chưa bắt kịp.
Những LLM nào hỗ trợ MCP?
Claude có hỗ trợ MCP native kể từ khi nó được tạo ra vào tháng 11 năm 2024. ChatGPT đã thêm hỗ trợ vào tháng 3 năm 2025, và Gemini tiếp nối vào tháng 4 năm 2025. Các mô hình mã nguồn mở có thể sử dụng MCP thông qua các bộ chuyển đổi trong LangChain và LlamaIndex.
Sự khác biệt giữa MCP và REST API là gì?
REST APIs được thiết kế cho giao tiếp dịch vụ-với-dịch vụ chung. MCP được thiết kế đặc biệt cho tương tác mô hình AI, nó bao gồm khám phá công cụ, thương lượng lược đồ, truy cập tài nguyên và các mẫu lời nhắc mà REST không có. Bạn sẽ không thay thế REST APIs của mình bằng MCP; chúng phục vụ các lớp khác nhau.
Ai đang duy trì MCP hiện nay?
Agentic AI Foundation (AAIF) của Quỹ Linux, được thành lập vào tháng 12 năm 2025, quản lý MCP. Nó được đồng sáng lập bởi Anthropic, Block và OpenAI. Sự quản trị trung lập nhà cung cấp này là một lý do chính khiến các doanh nghiệp áp dụng MCP.
Streamable HTTP trong MCP là gì?
Streamable HTTP là cơ chế truyền tải sản xuất được thêm vào trong bản cập nhật đặc tả MCP 2025. Nó thay thế phương thức truyền tải HTTP+SSE cũ hơn bằng một thiết kế sạch sẽ hơn: client gửi yêu cầu HTTP POST và máy chủ có thể phản hồi đồng bộ hoặc qua streaming SSE. Nó hoạt động đằng sau bộ cân bằng tải và hỗ trợ xác thực HTTP tiêu chuẩn.
Có bao nhiêu máy chủ MCP tồn tại?
Quỹ Linux đã trích dẫn hơn 10.000 máy chủ đang hoạt động và 97 triệu lượt tải xuống SDK hàng tháng khi MCP được trao tặng cho AAIF vào tháng 12 năm 2025. Hệ sinh thái bao gồm cơ sở dữ liệu, công cụ code, tích hợp SaaS, công cụ tìm kiếm và các nhà cung cấp hạ tầng đám mây.
Kết Luận
MCP đã chuyển từ thí nghiệm mã nguồn mở của Anthropic thành giao thức tiêu chuẩn ngành để kết nối các mô hình AI với công cụ chỉ trong hơn một năm. Dưới đây là những điểm quan trọng:
- MCP giải quyết vấn đề M x N, một máy chủ hoạt động với mọi mô hình tương thích, một client hoạt động với mọi máy chủ
- Bạn có thể xây dựng một máy chủ MCP hoạt động được trong dưới 50 dòng mã Python (FastMCP) hoặc TypeScript
- Sử dụng stdio cho phát triển, Streamable HTTP cho sản xuất, lựa chọn phương thức truyền tải rất đơn giản
- Bảo mật máy chủ của bạn với OAuth 2.1 -- 88% các triển khai hiện tại không làm điều này, và đó là một rủi ro thực sự
- Hệ sinh thái đã sẵn sàng cho sản xuất -- hơn 10.000 máy chủ, tất cả các LLM lớn, quản trị trung lập nhà cung cấp dưới Quỹ Linux
Nhìn về phía trước, lộ trình 2026 tập trung vào giao tiếp tác nhân-với-tác nhân thông qua nguyên thủy Tasks mới, bảo mật doanh nghiệp nâng cao và MCP Apps cho giao diện người dùng tương tác do máy chủ điều khiển. MCP không còn chỉ là một giao thức để truy cập công cụ nữa, nó đang trở thành lớp hạ tầng cho AI tác nhân.
Bắt đầu với mã hướng dẫn ở trên, kiểm tra nó trong MCP Inspector và kết nối nó với Claude Desktop. Bạn sẽ có một tích hợp MCP hoạt động được trong chưa đầy một giờ.
Nguồn
- Đặc tả MCP (2025-11-25)
- Đặc tả Ủy quyền MCP
- Đặc tả Truyền tải MCP
- Tài liệu MCP Inspector
- Giới thiệu Giao thức Ngữ cảnh Mô hình, Anthropic
- Trao tặng MCP cho Quỹ Linux, Anthropic
- Thông báo AAIF của Quỹ Linux
- Hỗ trợ MCP của Google Cloud
- SDK Python FastMCP
- SDK TypeScript MCP
- Astrix Security: Tình trạng Bảo mật Máy chủ MCP 2025
- Lộ trình MCP 2026