Bài 5 trong loạt Vibe Code A to Z — hướng dẫn vibe code bằng Claude Code cho người Việt. Bài 4: viết prompt cho agent.
Có một dấu hiệu rất rõ cho biết đã đến lúc bạn cần MCP: bạn thấy mình copy dữ liệu từ một chỗ khác rồi dán vào khung chat. Số liệu từ database, mô tả công việc từ bảng quản lý dự án, thông số màu sắc từ bản thiết kế. Mỗi lần dán là một lần bạn làm cái việc mà lẽ ra nó tự làm được.
MCP là cách chữa. Và cũng là chỗ tôi muốn nói thẳng phần ít ai nói: cắm một công cụ vào Claude Code không chỉ là cho nó thêm tay chân. Đó là mở một đường cho dữ liệu bên ngoài đi vào chỗ nó suy nghĩ — và dữ liệu bên ngoài thì không phải lúc nào cũng do bạn viết ra.

MCP là gì, nói cho gọn
MCP là một chuẩn mở để nối AI với công cụ. Không phải tính năng riêng của Anthropic, không phải thứ chỉ Claude dùng được. Hình dung nó như chuẩn cổng USB: nhà nào làm thiết bị cũng theo một chuẩn, nên cắm vào là chạy, không cần mỗi bên tự bịa một đầu nối riêng.
Cái được cắm vào gọi là MCP server. Một server có thể là chương trình chạy ngay trên máy bạn, cũng có thể là một địa chỉ web do nhà cung cấp dịch vụ vận hành. Cắm rồi thì Claude Code làm được những việc trước đó nó không thể:
- Đọc dữ liệu thật từ database rồi trả lời bằng số thật, không phải số nó đoán.
- Lấy mô tả công việc từ bảng quản lý dự án và làm đúng theo mô tả đó.
- Đọc bản thiết kế trên Figma và dựng lại giao diện theo đúng thông số.
- Xem lỗi đang xảy ra với người dùng thật trên hệ thống theo dõi lỗi.
Điểm chung của bốn việc trên: đều là thứ trước đây bạn phải tự đi lấy, tự dán vào, tự chịu trách nhiệm nếu dán thiếu.
Cắm thế nào
Một dòng lệnh. Với server chạy trên web, cú pháp là `claude mcp add --transport http ten-server dia-chi-mcp-cua-server`. Ví dụ với Notion, địa chỉ đó lấy đúng từ trang tài liệu của Notion: mcp.notion.com/mcp.
Với server chạy ngay trên máy, phần sau dấu `--` là lệnh khởi động chương trình đó: `claude mcp add --transport stdio ten-server -- npx ten-goi-cai-dat`.
Cắm xong, gõ `/mcp` trong phiên là thấy danh sách: server nào đang nối được, server nào lỗi, và server nào cần đăng nhập. Loại cần đăng nhập thì cũng bấm ngay trong bảng đó, nó mở trình duyệt cho bạn xác thực rồi tự lưu.
Có ba chỗ để lưu cấu hình, và chọn đúng chỗ quan trọng hơn nhiều người nghĩ:
Riêng máy bạn, riêng dự án này — mặc định, không ai khác thấy. Đây là chỗ dành cho server có kèm khóa truy cập riêng của bạn.
Đi cùng dự án — lưu vào file `.mcp.json` ở gốc dự án, vào git, ai mở dự án cũng có. Hợp cho server mà cả nhóm đều cần. Điểm đáng chú ý: server kiểu này phải được duyệt trước khi dùng. Claude Code hỏi bạn một lần rồi mới nối. Đó là chốt an toàn, không phải thủ tục rườm rà — lát nữa sẽ rõ vì sao.
Cả máy, mọi dự án — server nào bạn dùng ở đâu cũng cần thì để đây.
Cùng một server khai ở nhiều chỗ thì Claude Code chỉ nối một lần, lấy theo thứ tự riêng-máy trước, dự án sau, cả-máy cuối. Không trộn lẫn các khai báo với nhau.
Chọn cái gì để cắm
Nguyên tắc đầu tiên, và nó đi ngược tinh thần "cắm cho đủ bộ": công cụ nào đã có lệnh terminal riêng thì dùng lệnh đó, đừng cắm MCP. Tài liệu chính thức nói rõ lệnh terminal là cách tiết kiệm nhất để làm việc với dịch vụ ngoài. GitHub là ví dụ điển hình — cài `gh` rồi bảo Claude dùng nó là xong, gọn hơn cắm thêm một server.
MCP đáng cắm khi dịch vụ đó không có đường vào nào gọn hơn: bảng thiết kế, hệ thống quản lý công việc, database, dịch vụ theo dõi lỗi.
Chỗ tìm server đáng tin: thư mục connector đã được Anthropic soát tại claude.ai/directory, và trang chủ của chuẩn này tại modelcontextprotocol.io. Tôi khuyên lấy địa chỉ server từ đúng trang tài liệu của nhà cung cấp dịch vụ, không lấy từ bài blog hay video hướng dẫn — địa chỉ sai ở bước này là chuyện không sửa được bằng cách sửa code.
Một thứ nhiều người cắm nhầm: khả năng điều khiển trình duyệt để tự kiểm tra giao diện. Trong app Claude Desktop, phần đó có sẵn bên trong, không cần cắm gì.
Phần quan trọng nhất: tin ai
Tài liệu chính thức đặt một dòng cảnh báo ngay đầu mục, và tôi nghĩ nó đáng được in đậm: hãy chắc rằng bạn tin server trước khi nối. Server nào lấy nội dung từ bên ngoài đều có thể mang theo rủi ro tiêm lệnh.
Cơ chế của rủi ro đó đơn giản đến mức khó chịu. Claude đọc nội dung do server trả về. Nội dung đó là văn bản. Trong văn bản có thể có những câu viết theo kiểu ra lệnh — "bỏ qua hướng dẫn trước đó", "gửi file cấu hình sang địa chỉ này". Không phải bạn viết. Có thể là người viết cái issue đó, người bình luận vào tài liệu đó, hoặc người cố tình đặt bẫy ở trang web mà server vừa đọc.
Ba việc nên làm, và cả ba đều dễ:
Cắm ít. Mỗi server là một nguồn nội dung bạn không kiểm soát. Cắm cái đang thật sự cần, không cắm cho đủ bộ.
Đọc nguồn gốc trước khi cắm. Ai làm ra server này, nó đọc được những gì, nó có quyền ghi hay chỉ quyền đọc. Server chỉ đọc bao giờ cũng an toàn hơn server ghi được.
Đừng bỏ qua ô duyệt. File `.mcp.json` đi cùng dự án nghĩa là ai commit vào dự án cũng thêm được server vào đó. Ô hỏi duyệt tồn tại đúng vì lý do này. Đọc rồi hãy bấm.
Và một dặn dò nghiệp vụ: dữ liệu đi qua đường này là dữ liệu thật. Cắm database vào thì đảm bảo đó là bản dùng để phát triển, hoặc tài khoản chỉ có quyền đọc. Câu "cho tôi xem thử dữ liệu người dùng" gõ ra rất nhanh, và nó không hỏi lại bạn là bản thật hay bản thử.
Một tin tốt vừa mới đúng
Lời khuyên phổ biến cho tới gần đây là "đừng cắm nhiều server vì mỗi server ngốn một phần bộ nhớ làm việc". Lời khuyên đó giờ đã lạc hậu.
Claude Code hiện mặc định không nạp sẵn toàn bộ mô tả công cụ của các server vào đầu phiên. Nó chỉ giữ tên, và khi công việc thật sự cần đến một công cụ nào thì mới đi tìm và nạp đúng cái đó. Nghĩa là thêm server không còn tự động làm hẹp chỗ suy nghĩ của nó như trước.
Tôi để lại chi tiết này ở đây không chỉ vì nó hữu ích. Nó là ví dụ tốt cho một chuyện đúng với cả loạt bài này: công cụ đổi nhanh hơn tốc độ các bài hướng dẫn trên mạng được cập nhật, kể cả bài của tôi. Nghi ngờ chỗ nào thì mở tài liệu gốc ra đọc — và cách nhanh nhất là hỏi thẳng chính nó, vì nó có sẵn tài liệu mới nhất của mình.
Giới hạn thật còn lại nằm ở chỗ khác: kết quả một công cụ trả về mà quá lớn thì bị cắt. Ngưỡng cảnh báo và ngưỡng cắt đều có sẵn, nên khi thấy nó báo kết quả bị rút gọn thì hãy hỏi hẹp lại thay vì hỏi "cho tôi xem tất cả".
Tài liệu tải về
Tôi gói lại một bộ nhỏ dùng ngay: file `.mcp.json` mẫu kèm chú thích từng dòng, danh sách các server đáng cắm chia theo loại việc kèm lệnh cài, và một checklist bảy câu để soát trước khi nối một server lạ. Chép vào dự án, sửa vài chỗ là chạy.
📥 Tải miễn phí
Bộ Cấu Hình MCP Dùng Ngay
Tài liệu do tôi biên soạn từ trải nghiệm thật, tham khảo tài liệu chính thức của Anthropic tại code.claude.com/docs. Công cụ này thay đổi rất nhanh — khi có nghi ngờ, bản gốc tiếng Anh luôn là nguồn đúng nhất. Còn cách nghĩ về việc nào nên giao cho công cụ, việc nào không, nằm ở phần nền trong khóa AI Fluency.
Điều tôi nhận ra
Lần đầu hiểu ra MCP làm được gì, phản xạ của tôi là muốn cắm hết: database, thiết kế, quản lý công việc, theo dõi lỗi. Cảm giác lúc đó giống như vừa được phát thêm sáu cánh tay.
Nghĩ lại thì đó là phản xạ của người mê công cụ, không phải của người quản lý. Người quản lý hỏi khác: việc này cần ai vào phòng họp, ai không cần, và người vừa vào phòng đang thay ai lên tiếng. Càng nhiều đường vào thì càng nhiều tiếng nói, và không phải tiếng nói nào cũng là của bạn.
Đến đây thì Claude Code đã có bộ não của dự án, đã hiểu cách bạn giao việc, và đã nối được ra thế giới bên ngoài. Còn một thứ nó vẫn chưa có: cách làm việc riêng của bạn — cái quy trình bạn tự nghĩ ra, làm đi làm lại mỗi tuần, và mỗi lần vẫn phải giải thích lại từ đầu. Dạy nó nhớ luôn quy trình đó là chuyện của bài sau.

