Hướng Dẫn Thiết Lập Model Context Protocol (MCP)
Từ Cơ Bản (Zero-Code) Đến Nâng Cao (VPS & Docker)
Biến Claude Desktop, Cursor IDE và AI Agents thành siêu trợ lý kết nối trực tiếp với Ổ cứng máy tính, CSDL PostgreSQL, Google Drive, GitHub và API nội bộ thông qua chuẩn mở Anthropic.
Bản Chất MCP: 'Cổng USB-C' Chuẩn Hóa Của Thế Giới AI
Trước đây, mỗi ứng dụng AI phải tự viết code kết nối riêng cho từng loại CSDL hoặc phần mềm. Nếu có 5 ứng dụng AI và 10 kho dữ liệu, các kỹ sư phải xây dựng tới 50 bộ connector độc lập.
Model Context Protocol (MCP) do Anthropic khởi xướng là một chuẩn giao thức mở (Open Standard) hoạt động như cổng cắm USB-C: Chỉ cần nguồn dữ liệu (Postgres, File, GitHub, ERP) cung cấp 1 MCP Server, bất kỳ ứng dụng AI nào hỗ trợ MCP (Claude Desktop, Cursor IDE, Windsurf, Roo Code) đều có thể cắm vào và gọi công cụ ngay lập tức!
Thiết Lập Cơ Bản (Zero-Code): Cấu Hình Claude Desktop & Cursor
Bạn không cần phải biết lập trình để sử dụng MCP. Việc thiết lập chỉ bao gồm việc dán một đoạn cấu hình JSON vào đúng vị trí file trên máy tính của bạn:
%APPDATA%\Claude\claude_desktop_config.json
Cách mở nhanh: Bấm Win + R, dán %APPDATA%\Claude rồi Enter.
~/Library/Application Support/Claude/claude_desktop_config.json
Cách mở nhanh: Mở Terminal, gõ open ~/Library/Application\ Support/Claude/
Quy Trình 3 Bước Kích Hoạt MCP Trên Claude Desktop:
- Cài đặt Node.js LTS (tải miễn phí từ
nodejs.org) để máy tính có lệnhnpx. - Mở file
claude_desktop_config.jsonbằng Notepad hoặc VS Code, dán nội dung cấu hình JSON vào và lưu lại. - Tắt hoàn toàn Claude Desktop (chuột phải vào icon Claude ở góc phải thanh Taskbar $\rightarrow$ chọn Exit), sau đó mở lại. Khi mở khung chat, nếu thấy Biểu tượng chiếc búa (Hammer) 🔨 ở góc dưới bên phải là đã thành công!
Top 8 MCP Server 'Quốc Dân' Phổ Biến Nhất (Copy-Paste Dùng Ngay)
Dưới đây là file cấu hình tổng hợp 8 server ổn định và hữu ích nhất thế giới. Bạn có thể copy toàn bộ đoạn mã dưới đây vào file claude_desktop_config.json:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"D:\\Projects_GitHub",
"C:\\Users\\Admin\\Desktop"
]
},
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "YOUR_BRAVE_API_KEY_HERE"
}
},
"sqlite": {
"command": "uvx",
"args": ["mcp-server-sqlite", "--db-path", "D:\\database.db"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxxxxxx"
}
},
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
},
"sequential-thinking": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
}
}
}D:\\Thu_Muc\\Du_An) để tránh lỗi cú pháp Escape Character của JSON.
Thiết Lập Nâng Cao: Tự Lập Trình Custom FastMCP Python
Khi doanh nghiệp của bạn có những bài toán đặc thù (kết nối phần mềm ERP nội bộ, gọi API cước vận chuyển, tra cứu bảng giá đại lý riêng), bạn có thể tự viết một Custom MCP Server chỉ với 15 dòng mã Python bằng thư viện chính thức FastMCP:
# custom_mcp_server.py
# Cài đặt thư viện: pip install "mcp[cli]" requests
from mcp.server.fastmcp import FastMCP
# Khởi tạo MCP Server với tên định danh
mcp = FastMCP("Doanh Nghiep ERP Gateway")
@mcp.tool()
def tra_cuu_ton_kho(ma_san_pham: str) -> dict:
"""Tra cứu tồn kho thực tế và vị trí kệ hàng của sản phẩm theo mã SKU.
Args:
ma_san_pham: Mã SKU sản phẩm (ví dụ: 'IP16-PRO', 'MACBOOK-M3')
"""
mock_db = {
"IP16-PRO": {"ten": "iPhone 16 Pro 128GB", "ton_kho": 38, "kho": "Kệ A-02"},
"MACBOOK-M3": {"ten": "MacBook Air M3", "ton_kho": 12, "kho": "Kệ B-05"}
}
sku = ma_san_pham.strip().upper()
return mock_db.get(sku, {"error": "Không tìm thấy mã sản phẩm này"})
@mcp.tool()
def tinh_phi_giao_hang(tinh_thanh: str, can_nang_kg: float) -> dict:
"""Tính cước vận chuyển giao hàng nhanh dựa trên tỉnh thành và cân nặng."""
gia_co_ban = 25000 if tinh_thanh.lower() in ["hà nội", "tp.hcm"] else 40000
phi = gia_co_ban + max(0, can_nang_kg - 1) * 6000
return {"tinh_thanh": tinh_thanh, "can_nang": can_nang_kg, "cuoc_phi_vnd": round(phi)}
if __name__ == "__main__":
mcp.run(transport="stdio")
Đăng ký vào claude_desktop_config.json bằng cách khai báo:
{
"mcpServers": {
"noi-bo-erp": {
"command": "python",
"args": ["D:\\Projects\\custom_mcp_server.py"]
}
}
}Triển Khai Remote MCP Server Trên Cloud VPS & Docker
Nếu chạy qua Stdio (cục bộ), MCP Server chỉ phục vụ được cho 1 máy tính duy nhất. Để phục vụ cho toàn bộ đội ngũ 50–100 nhân sự trong công ty, bạn cần chuyển đổi sang mô hình Remote MCP Server qua mạng (SSE Transport) đặt trên Cloud VPS:
# server_sse.py - Chạy trên Cloud VPS
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Enterprise Cloud MCP Gateway")
@mcp.tool()
def he_thong_status() -> dict:
"""Kiểm tra tình trạng sức khỏe máy chủ production."""
return {"status": "healthy", "nodes": 4, "uptime": "99.98%"}
if __name__ == "__main__":
# Lắng nghe kết nối mạng qua giao thức SSE trên cổng 8080
mcp.run(transport="sse", host="0.0.0.0", port=8080)Cấu hình Docker Compose để chạy nền 24/7 trên VPS:
# docker-compose.yml
version: '3.8'
services:
mcp-gateway:
build: .
container_name: mcp-remote-gateway
restart: always
ports:
- "8080:8080"
environment:
- PYTHONUNBUFFERED=1Khi đó, nhân viên chỉ cần cấu hình Cursor hoặc Claude kết nối trực tiếp qua đường dẫn mạng an toàn:
{
"mcpServers": {
"cloud-gateway": {
"url": "https://mcp.tencongty.com/sse"
}
}
}Bảng Xử Lý Sự Cố Thường Gặp (Troubleshooting FAQ)
❌ Lỗi 1: Không hiện biểu tượng chiếc búa (Hammer) hoặc đèn báo đỏ
Nguyên nhân: File JSON bị sai cú pháp (thừa dấu phẩy, thiếu dấu ngoặc nhọn) hoặc đường dẫn file không tồn tại.
Cách sửa: Mở trang web jsonlint.com, dán toàn bộ file config vào để kiểm tra cú pháp hợp lệ. Đảm bảo đã tắt hoàn toàn Claude từ Task Manager/System Tray rồi mở lại.
❌ Lỗi 2: spawn npx ENOENT hoặc spawn python ENOENT
Nguyên nhân: Hệ điều hành không tìm thấy lệnh npx hoặc python trong biến môi trường System PATH.
Cách sửa: Khai báo đường dẫn tuyệt đối tới file thực thi. Ví dụ trên Windows thay vì "command": "npx", hãy dùng "command": "C:\\Program Files\\nodejs\\npx.cmd".
❌ Lỗi 3: Quyền truy cập file bị từ chối (EPERM / Access Denied)
Nguyên nhân: Server filesystem cố đọc một thư mục nằm ngoài danh sách được cấp quyền trong args.
Cách sửa: Bổ sung đường dẫn thư mục đó vào mảng args của server filesystem trong file JSON.
❌ Lỗi 4: Tool bị Timeout sau 60 giây khi truy vấn CSDL lớn
Nguyên nhân: Câu lệnh SQL quá nặng hoặc kết nối mạng chập chờn.
Cách sửa: Thêm mệnh đề LIMIT 50 vào câu truy vấn và đánh chỉ mục (Index) cho các cột lọc dữ liệu trong PostgreSQL.
Bạn Muốn Trở Thành Chuyên Gia Thiết Lập & Lập Trình MCP?
Khám phá khóa đào tạo chuyên sâu 8 bài học có đầy đủ code mẫu, bài tập thực hành và hướng dẫn đóng gói bàn giao hệ sinh thái Multi-MCP Server cho doanh nghiệp.