Giải thích cách MCP hoạt động và cách cấu hình để Claude Code kết nối với database, GitHub, Slack và các hệ thống bên ngoài khác qua MCP Server.
Claude Code mặc định có giới hạn nhất định: đọc/ghi file cục bộ, chạy lệnh terminal, gọi các công cụ tích hợp sẵn. Nhưng trong dự án thực tế, bạn thường cần nó truy vấn database, đọc tài liệu Notion, tìm kiếm tin nhắn Slack, gọi API nội bộ.
MCP chính là để giải quyết vấn đề đó.
MCP (Model Context Protocol) là một giao thức mở do Anthropic đề xuất, định nghĩa cách mô hình AI giao tiếp với các công cụ bên ngoài và nguồn dữ liệu. Hãy hiểu nó như cài plugin cho Claude Code — mỗi MCP Server là một dịch vụ độc lập, cung cấp một tập công cụ, Claude có thể gọi trực tiếp trong phiên làm việc.
Khác với Hooks (kích hoạt script khi Claude thực hiện hành động), MCP chủ động mở rộng giới hạn khả năng của Claude: bạn kết nối gì, Claude có thể vận hành thứ đó.
Kiến trúc rất đơn giản:
Claude Code (Client) ←→ MCP Server ←→ Hệ thống bên ngoài
Toàn bộ quá trình minh bạch với người dùng. Bạn thấy Claude nói "tôi sẽ kiểm tra database" rồi trả về kết quả — MCP đang chuyển tiếp yêu cầu ở phía sau.
MCP Server có thể cung cấp ba thứ:
Tools (công cụ)
Các hàm Claude có thể chủ động gọi — "truy vấn bảng users", "tìm kiếm tài liệu", "gửi tin nhắn Slack". Đây là loại được dùng nhiều nhất, chiếm 90% tình huống thực tế.
Resources (tài nguyên)
Dữ liệu có cấu trúc Claude có thể đọc làm ngữ cảnh — schema database, tài liệu API, file cấu hình.
Prompts (mẫu prompt)
Các đoạn prompt được định nghĩa trước, người dùng có thể tham chiếu trực tiếp.
Trong thực tế, bạn sẽ gần như luôn làm việc với Tools.
Lấy Filesystem MCP chính thức làm ví dụ — Server này cho phép Claude truy cập hệ thống file ngoài thư mục làm việc.
Cài đặt
npm install -g @modelcontextprotocol/server-filesystem
Cấu hình
Sửa ~/.claude/settings.json:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/yourname/Documents"
]
}
}
}
Xác nhận
Khởi động lại Claude Code và thử:
Liệt kê tất cả file PDF trong /Users/yourname/Documents
Nếu Claude trả về kết quả thay vì nói "tôi không thể truy cập hệ thống file", MCP đã hoạt động.
{
"mcpServers": {
"tên-dịch-vụ": {
"command": "lệnh khởi động",
"args": ["danh sách tham số"],
"env": {
"API_KEY": "xxx"
}
}
}
}
command + args: Claude Code dùng lệnh này để khởi động tiến trình MCP Serverenv dùng để truyền API key và cấu hình nhạy cảm; không hardcode trong codeCấu hình MCP có thể đặt ở ba vị trí, theo thứ tự ưu tiên từ thấp đến cao:
| Vị trí | File | Khi nào dùng |
|---|---|---|
| Toàn cục | ~/.claude/settings.json |
Công cụ dùng cho mọi dự án |
| Cấp dự án | .claude/settings.json |
Dành riêng cho dự án này |
| Override cục bộ | .claude/settings.local.json |
Cấu hình cá nhân, không commit git |
Với kết nối database, API nội bộ — đặt ở cấu hình dự án và commit cùng code. Thành viên team clone về là dùng được ngay.
Anthropic cung cấp một bộ server chính thức:
Cộng đồng còn có nhiều triển khai bên thứ ba bao phủ Notion, Linear, Jira, và các database khác nhau.
| Hooks | MCP | |
|---|---|---|
| Kích hoạt bởi | Claude thực hiện hành động cụ thể | Claude chủ động gọi |
| Mục đích | Chặn/tăng cường hành vi hiện có | Mở rộng khả năng mới |
| Tình huống điển hình | Format khi lưu, kiểm tra trước commit | Truy vấn DB, gọi API ngoài |
| Độ phức tạp cấu hình | Thấp | Trung bình |
Hai cái bổ sung cho nhau. Hooks kiểm soát cách Claude làm việc; MCP kiểm soát Claude có thể làm gì.
Bài này là phần nhập môn khái niệm MCP. Các bài tiếp theo sẽ bao gồm:
Nếu bạn đã có hệ thống muốn kết nối, hãy xem danh sách MCP Server trước — khả năng cao đã có người viết sẵn.