Bài 10 · Nâng cao · 22 phút· Cập nhật 11/06/2026
MCP: kết nối công cụ ngoài
Biên soạn bởi Nguyễn Anh Tuấn
Model Context Protocol: thêm server (GitHub, CSDL, API…), transport stdio/HTTP, phạm vi & .mcp.json, OAuth, tool search.
Đến giờ Claude Code mới chỉ làm việc trong dự án của bạn (file, lệnh). MCP (Model Context Protocol) mở rộng tầm với đó ra hệ thống bên ngoài: GitHub, cơ sở dữ liệu, Sentry, Figma, Slack… MCP là một chuẩn mở; mỗi “MCP server” là một cầu nối tới một hệ thống.
- ▸MCP = chuẩn mở để nối Claude Code với công cụ & dữ liệu ngoài.
- ▸Có hàng trăm server sẵn (GitHub, Postgres, Sentry…); bạn cũng tự viết được.
- ▸Dấu hiệu nên dùng: bạn cứ copy dữ liệu từ công cụ khác dán vào chat.
MCP làm được gì - một ví dụ
Cách nhanh nhất là lệnh claude mcp add. Server từ xa (HTTP - khuyên dùng cho dịch vụ đám mây) chỉ cần một URL:
thêm server từ xa (HTTP) và server cục bộ (stdio)
# Server tu xa (HTTP) - khuyen dung cho dich vu dam may
claude mcp add --transport http notion https://mcp.notion.com/mcp
# Server cuc bo (stdio) - chay nhu mot tien trinh tren may ban
claude mcp add --env DB_URL=postgres://... postgres -- npx @some/postgres-mcp - ▸HTTP: claude mcp add --transport http <tên> <url> - cho server đám mây.
- ▸stdio: claude mcp add <tên> -- <lệnh chạy server> - server chạy cục bộ; -- ngăn cách lệnh.
- ▸Truyền khoá/cấu hình qua --env KEY=value.
Khi thêm server, bạn chọn nó sống ở đâu bằng --scope:
| Scope | Phạm vi | Chia sẻ nhóm? |
|---|---|---|
| local | Chỉ bạn, chỉ dự án này (mặc định) | không |
| project | Cả nhóm, qua .mcp.json trong dự án | có (commit git) |
| user | Mọi dự án của bạn | không |
Server cấp project ghi trong file .mcp.json để chia sẻ:
.mcp.json (gốc dự án - commit để cả nhóm dùng)
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
}
}
} An toàn khi chia sẻ
Nhiều server cần đăng nhập (OAuth). Gõ /mcp để xác thực và xem trạng thái từng server. Khi đã nối, công cụ của server xuất hiện với tên mcp__<server>__<tool> và Claude dùng như công cụ thường:
› Tạo issue trên GitHub: "Nút đăng xuất bị lệch trên mobile", gắn nhãn bug.
⏺ mcp__github__create_issue(title="Nút đăng xuất bị lệch trên mobile", labels=["bug"])
✓ Đã tạo issue #128
Xong - issue #128 đã tạo kèm nhãn bug. Cần tôi gán cho ai không?
- ▸/mcp: xác thực OAuth + xem server nào đang nối, mỗi server có bao nhiêu công cụ.
- ▸Tên công cụ: mcp__github__create_issue, mcp__postgres__query…
- ▸Quyền: đặt luật như công cụ thường, vd allow "mcp__github__*"; công cụ GHI nên để HỎI.
Mỗi công cụ tốn một ít ngữ cảnh để mô tả. Server lớn có hàng chục công cụ → để khỏi phình, Claude Code dùng tool search (mặc định): chỉ nạp định nghĩa công cụ khi cần.
Thử chọn server và bật/tắt tool search để thấy chênh lệch ngữ cảnh:
Chọn MCP server kết nối và bật/tắt tool search để xem ngữ cảnh khởi động thay đổi thế nào. (Số liệu là ước lượng minh hoạ.)
MCP Servers
Tiết kiệm 4,704 đv so với không dùng tool search (5,040 đv).
Ước lượng minh hoạ - đơn vị ngữ cảnh không phải token thật.
- ▸Tool search nạp công cụ MCP theo nhu cầu → thêm nhiều server vẫn nhẹ ngữ cảnh.
- ▸Chỉ thêm server bạn TIN: nó được cấp quyền đọc dữ liệu/hành động thật.
- ▸Server cộng đồng/của người khác: đọc kỹ nó làm gì trước khi nối.
Câu hỏi thường gặp
MCP (Model Context Protocol) là một CHUẨN MỞ để nối trợ lý AI với công cụ và dữ liệu bên ngoài. Một “MCP server” cấp cho Claude Code khả năng đọc/hành động trên một hệ thống: GitHub, cơ sở dữ liệu, Sentry, Figma, Slack… Thay vì bạn copy dữ liệu từ chỗ khác dán vào chat, Claude làm việc trực tiếp với hệ thống đó.
Khi bạn thấy mình cứ copy dữ liệu từ một công cụ khác vào chat - vd dán nội dung issue, kết quả truy vấn DB, log từ dashboard. Kết nối server tương ứng để Claude tự đọc và hành động, đỡ qua tay bạn.
Server từ xa (khuyên dùng): claude mcp add --transport http <tên> <url>. Server cục bộ (chạy như tiến trình trên máy): claude mcp add <tên> -- <lệnh chạy server>. Dấu -- ngăn cách tuỳ chọn của Claude với lệnh chạy server. Truyền biến môi trường bằng --env KEY=value.
local (mặc định): chỉ bạn, chỉ trong dự án này (lưu ở ~/.claude.json). project: chia sẻ cả nhóm qua file .mcp.json trong dự án (commit vào git). user: dùng cho MỌI dự án của bạn. Chọn bằng --scope. Server cấp project khi mở dự án sẽ chờ bạn DUYỆT trước khi chạy.
Mỗi công cụ MCP có tên dạng mcp__<server>__<tool> (vd mcp__github__create_issue). Bạn đặt luật quyền cho chúng như công cụ thường, vd allow "mcp__github__*" để tự cho phép cả nhóm công cụ GitHub, hoặc để Claude hỏi từng lần. Gõ /mcp để xác thực OAuth và xem trạng thái từng server.
Tick những điều em tự tin làm được. Càng lên cao, em càng hiểu sâu.
Trả lời vài câu để chắc rằng em đã nắm bài.
MCP (Model Context Protocol) là gì?
- 1
Khi nào cần MCP
Kể 2 việc bạn hay làm mà phải copy dữ liệu từ công cụ khác vào chat AI. Server MCP nào sẽ giúp?
Hoàn thành khi: Ví dụ: dán issue → GitHub/Jira MCP; dán kết quả truy vấn → Postgres MCP. Bạn liên hệ được nhu cầu ↔ server.
- 2
Thêm một server
Thêm một MCP server từ xa bằng
claude mcp add --transport http(chọn một server công khai an toàn), rồi gõ/mcpxem trạng thái.Hoàn thành khi: Server hiện trong
/mcp; nếu cần OAuth, bạn xác thực được; thấy số công cụ server cung cấp. - 3
Chọn phạm vi
Bằng lời: một server cả NHÓM cần (vd tra cứu issue dự án) nên thêm ở scope nào? Còn server thử nghiệm riêng bạn?
Hoàn thành khi: Cả nhóm → project (
.mcp.json, commit). Thử nghiệm riêng → local (mặc định). Dùng cho mọi dự án của bạn → user. - 4
Đặt luật quyền
Viết một luật allow cho toàn bộ công cụ chỉ-đọc của một server (vd
mcp__github__*) - và bằng lời, vì sao công cụ GHI nên để Claude hỏi.Hoàn thành khi: allow có
mcp__github__*(hoặc cụ thể hơn); bạn giải thích công cụ ghi (tạo/xoá) rủi ro hơn nên giữ ở mức HỎI. - 5
Dùng thử
Sau khi nối một server, nhờ Claude làm một việc dùng tới nó (vd “liệt kê 5 issue mới nhất”). Quan sát công cụ
mcp__…được gọi.Hoàn thành khi: Claude gọi đúng công cụ MCP và trả về dữ liệu thật từ hệ thống ngoài.