Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • MCP Server vs. REST API: Bình mới rượu cũ hay Cuộc cách mạng?

    MCP Server vs. REST API: Bình mới rượu cũ hay Cuộc cách mạng?

    Chào anh em,

    Ở bài trước chúng ta đã hiểu "MCP là cánh tay nối dài". Nhưng với các anh em Developer, chắc hẳn trong đầu vẫn còn lấn cấn:

    "Ủa, cái MCP này bản chất nó vẫn chạy code Python/Node, vẫn trả về dữ liệu. Vậy nó khác quái gì một cái REST API truyền thống mà mình vẫn viết bằng FastAPI/Express mỗi ngày?"
    Câu trả lời ngắn gọn: Về mặt kỹ thuật, nó giống nhau đến 90%. Nhưng về mặt "khách hàng", nó khác nhau hoàn toàn.

    Hôm nay hãy cùng mổ xẻ sự tương đồng và khác biệt này để thấy tại sao chúng ta cần một chuẩn mới như MCP.

    1. Điểm giống nhau (Cốt lõi không đổi)
    Đừng để cái tên mới hù dọa. Nếu bạn đã biết viết Backend (FastAPI, Flask, Django...), chúc mừng bạn, bạn đã biết viết MCP!
    • Code: Cả hai đều chạy trên nền tảng ngôn ngữ lập trình (Python, JS, Go...).
    • Logic: Cả hai đều theo quy trình: Nhận Input (Tham số) ➡️ Xử lý (Query DB, tính toán) ➡️ Trả về Output.
    • Mục đích: Chia sẻ dữ liệu và chức năng cho một bên khác sử dụng.

    2. Điểm khác nhau (Quy cách phục vụ)
    Sự khác biệt nằm ở việc ai là người gọigiao thức gọi như thế nào. Hãy tưởng tượng bạn mở một nhà hàng (Server):
    Tiêu chí API Truyền thống (REST) MCP Server
    Khách hàng (Client) Con người/App: Là Frontend Dev hoặc Mobile App. Họ gọi API để lấy dữ liệu hiển thị lên màn hình. AI (LLM): Là Claude, ChatGPT. Nó tự "hỏi" server xem server làm được gì để thực hiện task.
    Menu (Tài liệu) Swagger/Postman: Dev phải đọc tài liệu mới biết endpoint /get-stock cần tham số gì. Tự động (Dynamic Schema): MCP Server tự khai báo "Tools". AI đọc schema này và tự hiểu: "À, thằng này có tool lấy giá, cần tham số symbol".
    Giao thức Thường qua HTTP/HTTPS (http://localhost:8000). Mô hình Client-Server qua mạng. Đa dạng hơn. Với Local App (Claude Desktop), dùng Stdio (Standard Input/Output). Với Remote, dùng SSE (Server-Sent Events).
    Trọng tâm Output Trả về JSON cấu trúc để Frontend dễ dàng map vào UI (Button, Chart). Trả về Text/Context ngữ nghĩa để AI đọc hiểu, tổng hợp và "chém gió" tiếp với user bằng ngôn ngữ tự nhiên.
    👉 Tóm lại:
    • API: Thiết kế cho Con người (Frontend Dev) đọc và tích hợp. Tư duy hướng Tài nguyên (Resource-oriented).
    • MCP: Thiết kế cho AI (LLM) tự khám phá và sử dụng. Tư duy hướng Hành động (Action-oriented).

    3. Tại sao cấu hình MCP (Local) lại dùng "Command Line"?
    Đây là chỗ làm anh em bối rối nhất khi mới cấu hình claude_desktop_config.json.
    "Tại sao không điền http://localhost:3000 mà lại phải điền đường dẫn file python?"

    Lý do:
    1. Bảo mật & Tiện lợi (Local): Khi chạy trên máy cá nhân, việc mở một port HTTP (như 3000, 8080) có thể gây xung đột hoặc lỗ hổng bảo mật.
    2. Cơ chế Stdio (Standard I/O):
      • Claude Desktop (Client) sẽ tự khởi chạy file Python của bạn như một tiến trình con (subprocess).
      • Hai bên nói chuyện qua "đường ống" (pipe) trực tiếp: Claude gửi lệnh vào stdin của Python -> Python xử lý và print kết quả ra stdout -> Claude nhận hàng.

    Đó là lý do bạn cấu hình:
    HTML Code:
    JSON
    "command": "python",
    "args": ["my_script.py"]
    Nghĩa là: "Claude ơi, hãy chạy file script này lên và nói chuyện với nó qua đường ống nhé, đừng tìm HTTP port nào cả."


    4. Kết luận: Một lớp trừu tượng (Abstraction Layer) mới
    MCP không sinh ra để thay thế API, mà nó là một lớp giao thức nằm ĐÈ lên trên logic ứng dụng.
    • API là "cái miệng" (phương tiện truyền tải).
    • MCP là "ngôn ngữ chung" (quy ước giao tiếp).
    Trước đây, để tích hợp Tool vào AI, mỗi hãng (OpenAI, Anthropic) có một kiểu function calling riêng, dev phải hard-code rất khổ sở. MCP ra đời để chuẩn hóa việc này: Viết 1 lần, chạy mọi nơi (Claude, Cursor, Zed...).

    Anh em chuẩn bị sẵn VS Code nhé! 💻

    #MCP #RESTAPI #SystemDesign devops #LLM #TechDeepDive
Working...
X