Hãy thành thật một chút. Nếu bạn đang xây dựng bất kỳ ứng dụng AI nào nghiêm túc, mỗi tuần bạn dành bao nhiêu giờ cho những việc sau?
Tại sao bạn nên học khóa này?
- Viết tool schemas JSON bằng tay cho từng API (GitHub, Slack, Gmail, Jira, Notion...) rồi debug chỗ nào model gọi sai
- Copy-paste giữa các ứng dụng AI (Claude Desktop, Cursor, ChatGPT, Gemini, v.v.) vì mỗi cái có hệ thống integration riêng
- Viết lại logic kết nối API mỗi khi đổi mô hình hoặc đổi framework
- Duy trì tool code cho team khi nghiệp vụ thay đổi — thêm
get_*, sửa error handling, cập nhật auth token hết hạn - Không biết làm thế nào để cho model truy cập file hệ thống thật, database nội bộ, hay thiết bị vật lý mà vẫn an toàn
Nếu bạn dành hơn 3-4 giờ mỗi tuần cho những việc trên, bạn đang ở đúng chỗ.
Model Context Protocol (MCP) là lớp giao tiếp chuẩn do Anthropic mở mã nguồn vào tháng 11/2024 và trao tặng cho Linux Foundation vào tháng 12/2025 (dưới tên Agentic AI Foundation). MCP giải quyết chính xác một vấn đề: chuẩn hóa cách mô hình AI nhận context và gọi tool từ thế giới bên ngoài — giống như USB-C chuẩn hóa cách các thiết bị kết nối với nhau.
Khóa học này sẽ đưa bạn từ con số 0 lên tự tay xây dựng một MCP server + MCP client hoàn chỉnh bằng Python trong vòng ~3-4 giờ học, với 14 bài được tinh chế dày đặc diagram, ví dụ thực chiến, case studies theo ngành, và anti-patterns từ cộng đồng.
Bạn sẽ học được gì?
Sau khi hoàn thành khóa học này, bạn sẽ có thể:
Về tư duy
- Giải thích MCP là gì, tại sao nó quan trọng, và vị trí của nó trong ngăn xếp AI agent hiện đại
- Phân biệt rõ ràng giữa MCP Client, MCP Server, và mô hình tool use truyền thống — ba khái niệm thường bị nhầm
- Chọn đúng primitive cho từng use case: Tool (model-controlled), Resource (app-controlled), hay Prompt (user-controlled)
Về kỹ năng
- Thiết lập một dự án Python với
uvpackage manager và MCP SDK - Xây dựng MCP Server với FastMCP: định nghĩa tools qua decorator, resources qua URI template, và prompts qua message list
- Xây dựng MCP Client tự viết để giao tiếp với server qua stdio transport
- Test và debug server bằng MCP Inspector chính thức
- Hiểu kiến trúc message-passing:
ListToolsRequest,CallToolResult,ReadResourceRequest,GetPromptRequest
Về thực hành
- Tự tay viết ra một document management server có: 2 tools (read/edit), 2 resources (list/fetch), 1 prompt (format)
- Tích hợp server này vào một CLI chat app nối với Claude qua Anthropic API
- Debug flow đầu-cuối từ user query → Claude → tool call → MCP → external data → trả lời
Lộ trình 14 bài học
┌─────────────────────────────────────────────────────────────┐
│ │
│ MODULE 1: NỀN TẢNG (Bài 7.0 → 7.3) │
│ ├── 7.1 Tổng quan khóa học │
│ ├── 7.2 MCP là gì — Vấn đề và kiến trúc │
│ └── 7.3 MCP Client — Cầu nối giao tiếp │
│ │
│ MODULE 2: XÂY DỰNG SERVER (Bài 7.3 → 7.6) │
│ ├── 7.4 Thiết lập dự án với uv + Python SDK │
│ ├── 7.5 Định nghĩa Tools bằng decorator │
│ └── 7.6 Test server với MCP Inspector │
│ │
│ MODULE 3: XÂY DỰNG CLIENT & MỞ RỘNG (Bài 7.6 → 7.11) │
│ ├── 7.7 Triển khai MCP Client đầu tay │
│ ├── 7.8 Định nghĩa Resources trên server │
│ ├── 7.9 Truy cập Resources từ client │
│ ├── 7.10 Định nghĩa Prompts trên server │
│ └── 7.11 Prompts trong client │
│ │
│ MODULE 4: TỔNG KẾT & KIỂM TRA (Bài 7.11 → 7.13) │
│ ├── 7.12 Tổng kết — 3 primitive và khi nào dùng cái nào │
│ ├── 7.13 Bài kiểm tra cuối khóa │
│ └── 7.13 Khảo sát phản hồi │
│ │
└─────────────────────────────────────────────────────────────┘
Tổng thời gian ước tính: 3-4 giờ đọc + 3-4 giờ thực hành code = ~7 giờ để đi từ 0 tới một MCP stack hoàn chỉnh.
Cách học tập hiệu quả nhất
Quy tắc 70/20/10 áp dụng cho khóa này
- 70% thực hành — Mở terminal, viết code, chạy
mcp dev, click Inspector, sửa lỗi. Không cách nào khác để nắm MCP ngoài việc build nó. - 20% học từ người khác — Đọc các MCP server open-source nổi tiếng (GitHub, Playwright, Linear, Context7) và xem họ tổ chức code thế nào.
- 10% lý thuyết — Đọc spec MCP chính thức tại modelcontextprotocol.io để nắm các field message và transport chi tiết.
Lời khuyên từ David Soria Parra (đồng tác giả MCP): "The most important part is build. Build clients, build servers, build it into your products."
Ba nhóm người đọc — Ba cách tiếp cận
Nếu bạn là developer Python quen Flask/FastAPI:
- Lướt nhanh Bài 7.0-7.3 (concept), tập trung vào Bài 7.3-7.11 (code)
- Coi FastMCP như một framework web "cho AI" — decorator pattern y như
@app.route() - Ngay sau khóa học: thử wrap một API bạn đã quen (internal tool, Jira instance, Postgres) thành MCP server
Nếu bạn là AI engineer / prompt engineer chưa rành backend:
- Đọc kỹ Bài 7.0-7.3 trước khi động vào code
- Mỗi khi gặp code Python, copy chạy thử, chỉnh sửa 1-2 giá trị để thấy hiệu ứng
- Đặc biệt chú ý Bài 7.4 (mô tả tool tốt/tệ) — đây là nơi kiến thức prompt engineering giúp bạn nhất
Nếu bạn là technical lead / architect cần đánh giá MCP cho team:
- Tập trung Bài 7.0-7.3 và Bài 7.11 (review + quyết định khi nào dùng primitive nào)
- Đọc qua code để hiểu surface area nhưng không cần tự viết lại
- Quan tâm đặc biệt tới phần security considerations trong Bài 7.2 và Bài 7.11
Những gì bạn cần chuẩn bị
Bắt buộc
- Python 3.10+ đã cài đặt
uvpackage manager — nhanh hơn pip nhiều lần, MCP SDK recommend. Cài tại docs.astral.sh/uv- Anthropic API key — đăng ký tại console.anthropic.com. Budget ~$2-3 cho toàn bộ bài thực hành.
- Một editor có Python support: VS Code, PyCharm, Cursor, hoặc Zed
Nên có
- Đã từng làm việc với REST API cơ bản (hiểu request/response)
- Quen với async/await trong Python (khóa học dùng
asyncionhiều) - Đã thử qua Claude tool use ít nhất một lần (không bắt buộc nhưng giúp nắm Bài 7.1 nhanh hơn)
- Terminal cơ bản (chạy command, cd, activate venv)
Không cần
- Không cần biết machine learning hay transformer architecture — MCP là giao thức giao tiếp, không phải ML
- Không cần kinh nghiệm frontend — toàn bộ khóa học là CLI
- Không cần Kubernetes/Docker ở mức sản xuất — các ví dụ đều chạy local
Triết lý xuyên suốt khóa học
Có 5 nguyên tắc sẽ lặp lại nhiều lần trong các bài học. Hãy ghi nhớ từ đầu:
1. "MCP là USB-C cho AI — kết nối bằng một ngôn ngữ chung"
Trước MCP, mỗi ứng dụng AI có cách tích hợp tool riêng: Cursor có extension, Claude Desktop có integration, ChatGPT có plugin. Developer muốn support n ứng dụng × m tool phải viết n×m adapter. MCP biến bài toán này thành n+m: bạn viết một MCP server, nó chạy được với mọi MCP client.
2. "Giving the brain limbs"
David Soria Parra (đồng tác giả MCP) ví mô hình AI là "một bộ não": "What MCP tries to accomplish is giving this brain that you have, we do the limbs into the world." MCP biến một mô hình từ chỗ chỉ biết xuất text thành một tác nhân có tay chân tương tác với file, API, thiết bị vật lý, và con người.
3. "Three primitives, three controllers"
MCP server expose 3 thứ chính: Tools do model điều khiển, Resources do app điều khiển, và Prompts do user điều khiển. Nếu bạn nhầm 3 cái này với nhau, kiến trúc sẽ sai ngay từ ngày đầu. Bài 7.11 sẽ đào sâu decision tree chọn primitive đúng.
4. "Descriptions are prompts"
Michael Cohen (Anthropic) nói: "MCP servers and tools are really a discipline of prompting." Một tool có description rỗng hoặc lười sẽ khiến model đoán sai. Đầu tư công sức vào mô tả tool/resource/prompt của bạn giống như đầu tư vào system prompt — đó là nơi phần lớn chất lượng được quyết định.
5. "Build for remote first"
David Soria Parra tự thừa nhận: nếu làm lại MCP, ông sẽ thiết kế cho remote HTTP trước thay vì local stdio trước. Stdio đơn giản để thử, nhưng tương lai MCP nằm ở remote servers sau OAuth/SSO. Khóa học này bắt đầu với stdio cho dễ, nhưng phần "đi sâu hơn" ở cuối sẽ chỉ bạn đường chuyển sang remote.
Một lời khuyên từ kinh nghiệm thực tế
Có 3 sai lầm phổ biến người mới MCP mắc phải. Tránh ngay từ đầu sẽ tiết kiệm bạn nhiều giờ.
Sai lầm 1: Nhầm MCP với tool use
- Hiểu hiện
- "Ồ, MCP là cách viết tool use cho Claude à?"
- Thực tế
- MCP và tool use là complementary, không thay thế. Tool use là cách Claude gọi tool (qua API message
tool_use). MCP là cách phân phối tool — bạn không còn phải tự viết schema, chỉ việc connect đến MCP server đã có sẵn. - Cách đúng
- Dùng Bài 7.1 để khắc sâu sự khác biệt. Tool use là "Claude gọi tool". MCP là "Claude được cung cấp tool sẵn bởi ai đó".
Sai lầm 2: Nhồi 50 tool vào một server
- Hiểu hiện
- Wrap toàn bộ GitHub REST API (hàng trăm endpoint) thành 150 tool và expose hết qua một MCP server.
- Thực tế
- Model bị bội thực context. Description của 150 tool × ~200 token = ~30,000 token chỉ để liệt kê chưa gọi. Michael Cohen gọi đây là anti-pattern #1: "Stuffing your MCP servers with tons of tools."
- Cách đúng
- Thiết kế 1-5 tool broader với mô tả tốt thay vì 50 tool granular. Model xử lý fuzziness tốt, API thì không. Ví dụ:
search_githubthay cho 12 endpoint search riêng lẻ.
Sai lầm 3: Design tool như REST endpoint
- Hiểu hiện
get_projects,get_posts,get_users,get_tasks— 1:1 mapping với REST.- Thực tế
- Model không phải front-end app cần endpoint chính xác. Nó là một "fuzzy reasoner" ưa một tool
get_info(query)mà nó có thể mô tả ý đồ bằng natural language. - Cách đúng
- Thiết kế API cho model, không cho JavaScript. Thử nghiệm: nếu bạn đưa description tool cho một người không biết API, họ có hiểu nên gọi thế nào không?
Bạn sẵn sàng chưa?
Hãy dành 5 phút ngay bây giờ để viết ra:
- Một API/dịch vụ bạn muốn Claude truy cập được — có thể là công ty nội bộ (Jira, Confluence), personal (Notion, Todoist), hoặc thiết bị (home automation, Raspberry Pi)
- Use case cụ thể — bạn muốn nói với Claude câu gì, để nó làm gì với dịch vụ đó? (Ví dụ: "Tóm tắt các bug P0 trong sprint này từ Jira")
- Một câu hỏi kỹ thuật bạn đang mắc — bạn đã thử build integration này chưa? Chỗ nào tắc?
Giữ 3 thứ này trong đầu. Chúng sẽ là "sân tập" của bạn xuyên suốt khóa học. Đến Bài 7.4 (Defining Tools), bạn sẽ thực sự build cái số 1. Đến Bài 7.6 (Implementing a Client), bạn sẽ chạy use case số 2. Câu hỏi số 3 là thước đo bạn tiến bộ.
Phản hồi và hỗ trợ
- Tài liệu chính thức MCP: modelcontextprotocol.io/introduction
- Hướng dẫn cài
uv: docs.astral.sh/uv/ - Anthropic Console (API key): console.anthropic.com
- MCP SDK (Python): github.com/modelcontextprotocol/python-sdk
- Registry các MCP server: truy cập registry mới của Linux Foundation qua link trong repo chính thức
Khóa học này được tinh chế sang tiếng Việt từ "Introduction to Model Context Protocol" của Anthropic Academy, có bổ sung case studies, analogies, và anti-patterns từ các bài phỏng vấn với đội ngũ Anthropic 2025-2026.