MCP, viết tắt của Model Context Protocol, là một giao thức mở cho phép trợ lý AI gọi công cụ và đọc dữ liệu từ nguồn bên ngoài theo một cách thống nhất: trợ lý đóng vai máy khách, còn mỗi nguồn như cơ sở dữ liệu, hệ thống quản lý công việc hay kho tài liệu được nối vào qua một máy chủ MCP. Giao thức được Anthropic công bố cuối năm 2024 và từ đó được nhiều trợ lý viết mã, trình soạn thảo và tác tử hỗ trợ.
Với lập trình viên, MCP giúp trợ lý biết những thứ nằm ngoài kho mã: lược đồ thật của cơ sở dữ liệu, nội dung phiếu việc đang làm, tài liệu đúng phiên bản thư viện. Đổi lại, mỗi máy chủ MCP là một đoạn mã chạy với quyền của bạn và là một đường mới để dữ liệu đi vào ngữ cảnh của trợ lý. Bài này giải thích khi nào nên dùng, cài thế nào và giữ an toàn ra sao. Cú pháp tệp cấu hình khác nhau giữa các công cụ, nên bạn đối chiếu với tài liệu của công cụ đang dùng.
MCP giải quyết vấn đề gì
Trước khi có giao thức chung, mỗi trợ lý tự làm cách kết nối riêng với từng dịch vụ, hoặc bạn phải chép dữ liệu từ nơi khác dán vào khung chat. Muốn trợ lý biết bảng nào có cột gì, bạn chạy lệnh mô tả bảng rồi dán kết quả. Muốn nó đọc yêu cầu trong phiếu việc, bạn chép nội dung phiếu sang. Cách làm đó tốn công và dễ dán thiếu.
MCP chuẩn hoá chỗ nối. Một máy chủ MCP cho cơ sở dữ liệu khai báo những công cụ nó cung cấp, ví dụ liệt kê bảng, mô tả bảng, chạy truy vấn chỉ đọc. Trợ lý nào hỗ trợ MCP cũng thấy được các công cụ này và tự gọi khi cần. Viết một máy chủ một lần, dùng được với nhiều trợ lý khác nhau.
Nói cách khác, MCP biến trợ lý từ chỗ chỉ biết những gì bạn đưa cho thành chỗ tự đi lấy được thông tin. Đây là điểm mạnh và cũng là điểm phải cẩn thận: trợ lý tự đi lấy thì nó cũng có thể lấy nhầm, lấy quá nhiều, hoặc mang về những nội dung có chứa chỉ dẫn mà bạn không mong muốn.
Khi nào đáng cài một máy chủ MCP
Không phải dự án nào cũng cần MCP. Những tình huống dưới đây thường đáng công cài đặt:
- Trợ lý thường xuyên viết sai tên bảng, tên cột vì không thấy lược đồ cơ sở dữ liệu thật, và bạn mệt vì phải dán lược đồ mỗi lần.
- Nhóm quản lý công việc trong một hệ thống phiếu việc, và bạn muốn trợ lý đọc yêu cầu, tiêu chí nghiệm thu trực tiếp từ phiếu.
- Dự án dùng thư viện đổi nhanh, trợ lý hay viết theo phiên bản cũ; một máy chủ tra tài liệu đúng phiên bản giúp giảm lỗi này.
- Bạn làm giao diện web và muốn trợ lý mở trình duyệt, xem trang, chụp lại để tự kiểm kết quả sau khi sửa.
- Có hệ thống nội bộ, như kho tài liệu kỹ thuật của công ty, mà trợ lý cần tra cứu thường xuyên.
Ngược lại, nếu một lệnh dòng lệnh đơn giản đã cho trợ lý đủ thông tin, và tác tử của bạn chạy được lệnh đó, thì chưa cần thêm máy chủ MCP. Mỗi máy chủ thêm vào là thêm một thứ phải cập nhật, phải tin tưởng và phải chia phần ngữ cảnh cho mô tả công cụ của nó.
Hai kiểu chạy máy chủ MCP
Máy chủ MCP chạy theo hai kiểu chính. Khi cài, bạn sẽ thấy tài liệu ghi rõ máy chủ đó thuộc kiểu nào.
| Kiểu | Cách hoạt động | Hợp với | Cần để ý |
|---|---|---|---|
| Chạy cục bộ | Trợ lý khởi động máy chủ như một tiến trình con trên máy bạn, trao đổi qua đầu vào và đầu ra chuẩn | Công cụ đọc tệp, cơ sở dữ liệu trên máy, trình duyệt | Mã máy chủ chạy với quyền người dùng của bạn trên máy |
| Chạy từ xa | Máy chủ đặt ở nơi khác, trợ lý kết nối qua HTTP | Dịch vụ trên mây, hệ thống dùng chung cho cả nhóm | Xác thực, phạm vi quyền của mã truy cập, dữ liệu đi qua mạng |
Với kiểu chạy cục bộ, điều quan trọng nhất là bạn đang chạy mã của người khác trên máy mình. Với kiểu chạy từ xa, điều quan trọng nhất là mã truy cập bạn cấp cho máy chủ có phạm vi rộng tới đâu.
Cài một máy chủ MCP theo từng bước
Các bước dưới đây áp dụng cho phần lớn trợ lý hỗ trợ MCP. Tên tệp cấu hình và tên khoá trong tệp khác nhau theo công cụ, nên luôn đối chiếu tài liệu.
- Chọn máy chủ từ nguồn tin cậy: do chính nhà cung cấp dịch vụ phát hành, hoặc mã nguồn mở có người duy trì rõ ràng, nhiều người dùng, cập nhật gần đây.
- Đọc tài liệu của máy chủ: nó cung cấp những công cụ nào, công cụ nào chỉ đọc, công cụ nào ghi hay xoá dữ liệu, cần những biến môi trường gì.
- Chuẩn bị thông tin xác thực với quyền hẹp nhất có thể, ví dụ tài khoản cơ sở dữ liệu chỉ đọc trên cơ sở dữ liệu thử nghiệm.
- Khai báo máy chủ trong tệp cấu hình của trợ lý. Thường là một tệp JSON liệt kê từng máy chủ với tên, lệnh khởi chạy, tham số và biến môi trường; máy chủ từ xa thì khai địa chỉ thay cho lệnh.
- Khởi động lại trợ lý, mở danh sách công cụ MCP để chắc máy chủ đã được nhận và chỉ có những công cụ bạn mong đợi.
- Thử bằng một yêu cầu chỉ đọc, ví dụ nhờ trợ lý liệt kê các bảng và mô tả một bảng, rồi đối chiếu với kết quả bạn tự tra.
Trong tệp cấu hình, giá trị bí mật nên lấy từ biến môi trường của máy thay vì ghi thẳng vào tệp, nhất là khi tệp cấu hình nằm trong thư mục dự án và có thể bị đưa vào git.
Rủi ro cần hiểu trước khi bật
Máy chủ là mã chạy trên máy bạn. Một máy chủ MCP cục bộ có quyền như mọi chương trình bạn chạy: đọc tệp, gọi mạng, chạy lệnh. Máy chủ độc hại hoặc bị chèn mã qua bản cập nhật có thể lấy cắp khoá, mã nguồn. Đối xử với nó như mọi phần mềm cài từ bên ngoài.
Chèn lệnh qua dữ liệu. Dữ liệu máy chủ mang về, như nội dung phiếu việc, trang tài liệu hay bản ghi trong cơ sở dữ liệu, được đưa vào ngữ cảnh của trợ lý. Nếu ai đó cài sẵn trong dữ liệu một câu dạng chỉ dẫn, trợ lý có thể làm theo, ví dụ gọi một công cụ khác để gửi dữ liệu ra ngoài. Đây là rủi ro thật, chưa có cách chặn hoàn toàn.
Mô tả công cụ cũng là chữ đưa vào ngữ cảnh. Trợ lý đọc mô tả công cụ do máy chủ khai báo để biết khi nào gọi. Một máy chủ có ý xấu có thể viết mô tả nhằm điều khiển trợ lý. Đây là lý do chỉ cài máy chủ từ nguồn tin cậy.
Quá nhiều máy chủ làm trợ lý kém đi. Mỗi công cụ chiếm một phần ngữ cảnh cho mô tả của nó. Bật hàng chục máy chủ cùng lúc làm trợ lý chậm, tốn hơn và dễ chọn nhầm công cụ. Chỉ bật những máy chủ cần cho dự án đang làm.
Máy chủ MCP không hiện hoặc không chạy: kiểm theo thứ tự
Lỗi hay gặp nhất khi mới cài là trợ lý không nhận máy chủ hoặc nhận mà gọi công cụ thì lỗi. Đi lần lượt các chỗ dưới đây trước khi gỡ ra cài lại:
- Cú pháp tệp cấu hình: một dấu phẩy thừa ở cuối danh sách hay thiếu dấu ngoặc là đủ làm hỏng cả tệp JSON; kiểm bằng trình soạn thảo có tô lỗi JSON.
- Đường dẫn tới lệnh khởi chạy: ứng dụng có giao diện đồ hoạ đôi khi không thấy cùng biến PATH với cửa sổ dòng lệnh, nên lệnh chạy được khi gõ tay mà trợ lý không tìm thấy; thử ghi đường dẫn đầy đủ của lệnh.
- Biến môi trường: máy chủ cần chuỗi kết nối hay mã truy cập mà biến chưa được đặt, hoặc đặt trong cửa sổ dòng lệnh nhưng trợ lý không đọc được.
- Nhật ký của trợ lý: phần lớn trợ lý ghi lỗi khởi động máy chủ MCP vào nhật ký riêng; đọc dòng lỗi đầu tiên thay vì dòng cuối.
- Chạy thử máy chủ độc lập: dự án MCP có công cụ kiểm tra chính thức cho phép mở máy chủ, xem danh sách công cụ và gọi thử từng công cụ mà không cần trợ lý.
- Phiên bản: trợ lý hoặc máy chủ quá cũ có thể không cùng phiên bản giao thức; cập nhật cả hai rồi thử lại.
Khi hỏi trên diễn đàn hay báo lỗi cho người duy trì máy chủ, dán đoạn nhật ký và tệp cấu hình đã xoá hết giá trị bí mật. Chuỗi kết nối cơ sở dữ liệu thường chứa mật khẩu ngay bên trong, rất dễ bị dán nhầm.
Quyền tối thiểu và chia sẻ cấu hình cho nhóm
Nguyên tắc chung cho mọi máy chủ MCP là quyền tối thiểu. Với cơ sở dữ liệu, tạo tài khoản riêng chỉ có quyền đọc và chỉ trên cơ sở dữ liệu thử nghiệm hoặc bản sao đã che dữ liệu cá nhân, tuyệt đối không dùng tài khoản quản trị của cơ sở dữ liệu thật. Với hệ thống phiếu việc hay kho mã, tạo mã truy cập phạm vi hẹp, chỉ đọc nếu không cần ghi, có thời hạn. Với công cụ có thao tác ghi hay xoá, giữ chế độ trợ lý hỏi trước mỗi lần gọi.
Khi chia sẻ cho nhóm, nhiều trợ lý cho phép đặt tệp cấu hình MCP ở cấp dự án và đưa vào git, để ai mở dự án cũng có cùng bộ máy chủ. Tệp đó chỉ được chứa tên máy chủ, lệnh khởi chạy và tên biến môi trường cần có, không chứa giá trị bí mật. Mỗi người tự đặt giá trị trên máy mình. Ghi trong tệp hướng dẫn dự án danh sách máy chủ được dùng và lý do, để người mới hiểu vì sao chúng có mặt.
Ví dụ giả định: một nhóm làm ứng dụng bán hàng cài máy chủ MCP cho cơ sở dữ liệu, trỏ vào bản sao thử nghiệm với dữ liệu khách hàng đã thay bằng dữ liệu giả, dùng tài khoản chỉ đọc. Trợ lý nhờ đó viết truy vấn đúng tên cột ngay từ lần đầu, mà kể cả khi bị chèn lệnh qua dữ liệu, nó cũng không có quyền sửa hay chạm vào dữ liệu thật.
Câu hỏi thường gặp
MCP có phải là sản phẩm của riêng một hãng không?
Không. MCP là giao thức mở do Anthropic công bố cuối năm 2024, đặc tả và nhiều thư viện mã nguồn mở được công khai, và nhiều trợ lý, trình soạn thảo của các hãng khác nhau đã hỗ trợ. Mức hỗ trợ từng tính năng của giao thức khác nhau giữa các công cụ, nên vẫn cần đọc tài liệu.
Có cần biết lập trình nâng cao mới cài được máy chủ MCP không?
Không cần nếu dùng máy chủ có sẵn: bạn chỉ khai báo trong tệp cấu hình theo tài liệu. Viết máy chủ MCP riêng cho hệ thống nội bộ thì cần lập trình, và có thư viện chính thức cho một số ngôn ngữ phổ biến giúp việc này đơn giản hơn.
Máy chủ MCP cho cơ sở dữ liệu có nên trỏ vào dữ liệu thật không?
Không nên. Trỏ vào cơ sở dữ liệu thử nghiệm hoặc bản sao đã che dữ liệu cá nhân, dùng tài khoản chỉ đọc. Như vậy kể cả khi trợ lý làm sai hoặc bị chèn lệnh qua dữ liệu, nó cũng không sửa được dữ liệu thật và không đọc được thông tin khách hàng.
Chèn lệnh qua MCP là gì và tránh thế nào?
Là khi dữ liệu máy chủ mang về chứa câu dạng chỉ dẫn khiến trợ lý làm việc bạn không yêu cầu. Chưa có cách chặn tuyệt đối; cách giảm rủi ro là quyền tối thiểu cho mỗi máy chủ, giữ chế độ hỏi trước với công cụ ghi hoặc gửi dữ liệu ra ngoài, và không bật cùng lúc máy chủ đọc dữ liệu lạ với máy chủ có quyền gửi đi.
Bật nhiều máy chủ MCP cùng lúc có sao không?
Có ảnh hưởng. Mô tả của mỗi công cụ chiếm một phần ngữ cảnh, làm trợ lý chậm hơn, tốn hơn và dễ chọn nhầm công cụ. Nhiều máy chủ cũng là nhiều mã bên ngoài chạy trên máy. Chỉ bật những máy chủ cần cho dự án đang làm.
Tệp cấu hình MCP có được đưa vào git không?
Được nếu chỉ chứa tên máy chủ, lệnh khởi chạy và tên biến môi trường. Không được chứa mật khẩu, mã truy cập hay chuỗi kết nối có mật khẩu. Mỗi thành viên tự đặt giá trị bí mật trên máy mình qua biến môi trường.