Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when b
Claude mặc định không thể gọi API hay truy vấn database của bạn. Mỗi lần cần dữ liệu ngoài, bạn lại phải copy-paste thủ công vào prompt, làm gián đoạn workflow. Model Context Protocol (MCP) là giải pháp của Anthropic để phá vỡ giới hạn này, cho phép Claude tương tác với các tool bên ngoài. Bài viết này sẽ hướng dẫn bạn từ bước cài đặt server MCP, định nghĩa tool bằng XML, và các lưu ý quan trọng để tích hợp vào dự án thực tế.
Các mô hình ngôn ngữ lớn (LLM) như Claude thường hoạt động trong một môi trường cô lập. Chúng không có khả năng truy cập trực tiếp vào dữ liệu thời gian thực hay các hệ thống bên ngoài. Điều này tạo ra một rào cản đáng kể khi lập trình viên muốn Claude xử lý các tác vụ yêu cầu thông tin cập nhật từ database, API nội bộ, hoặc các dịch vụ khác.
Trong thực tế, mình thường phải copy-paste dữ liệu thủ công từ các nguồn này vào cửa sổ chat của Claude. Quá trình này tốn thời gian và dễ xảy ra lỗi. Nó cũng hạn chế khả năng tự động hóa của AI, biến Claude thành một công cụ hỗ trợ hơn là một tác nhân có thể tự thực hiện công việc.
Để giải quyết vấn đề này, Anthropic đã giới thiệu Model Context Protocol (MCP) vào ngày 25 tháng 11 năm 2024 [S2]. Đây là một tiêu chuẩn mã nguồn mở, cho phép các tác nhân AI giao tiếp an toàn với các dịch vụ bên ngoài. MCP server khác biệt đáng kể so với các API truyền thống: API được thiết kế chủ yếu cho lập trình viên sử dụng, trong khi MCP server được tạo ra để các tác nhân AI có thể hiểu và tương tác hiệu quả hơn với các hệ thống bên ngoài [S3].
Với MCP, thay vì phải hỏi nhân viên kho về tình trạng đơn hàng, bạn có thể hỏi thẳng Claude "tình trạng đơn hàng XYZ là gì?". Claude sẽ tự động gọi MCP server đã kết nối với hệ thống logistics của bạn để lấy thông tin và trả lời. Ví dụ, MCP server có thể giúp hiển thị các quy trình vận chuyển, cho phép AI tạo lô hàng, so sánh giá cước hoặc theo dõi gói hàng [S1].
Để bắt đầu với MCP server, bạn cần đảm bảo máy mình đã cài đặt Node.js phiên bản LTS (Long Term Support) và công cụ `npx`. Đây là những yêu cầu cơ bản để chạy các script Node.js và quản lý gói.
Bước đầu tiên là lấy mã nguồn của skill `mcp-builder` từ repository chính thức của Anthropic. Bạn có thể clone repository `anthropics/skills` từ GitHub về máy.
$ git clone https://github.com/anthropics/skills.git
$ cd skills/mcp-builder
$ npm installSau khi cài đặt xong các dependencies, bạn sẽ thấy cấu trúc thư mục cơ bản của một dự án MCP server. Thông thường, nó bao gồm các file định nghĩa tool dưới dạng XML, file logic được viết bằng TypeScript hoặc JavaScript, và các file cấu hình môi trường như `.env`.
File `.env` rất quan trọng vì nó dùng để lưu trữ các biến môi trường nhạy cảm, ví dụ như API key của các dịch vụ bên ngoài mà server MCP của bạn sẽ cần gọi tới. Hãy tạo một file `.env` trong thư mục gốc của dự án và thêm các biến cần thiết vào đó.
$ npm run devLệnh trên sẽ khởi chạy server MCP của bạn trên một cổng cục bộ (ví dụ: `http://localhost:3000`). Cuối cùng, để kết nối Claude với server này, bạn cần cấu hình ứng dụng Claude Desktop hoặc client tương tự để trỏ đến địa chỉ `localhost` và cổng mà server đang chạy. Điều này cho phép Claude giao tiếp với các công cụ mà bạn đã định nghĩa trong MCP server.
Trái tim của một MCP server chính là các tool được định nghĩa bằng file XML. Đây là cách mình "dạy" cho Claude biết nó có thể làm những hành động gì. Mỗi tool sẽ có một mô tả rõ ràng về chức năng và các tham số đầu vào cần thiết.
Mình bắt đầu với một ví dụ "hello world" đơn giản để bạn hình dung cấu trúc cơ bản của một tool XML. Tool này chỉ có nhiệm vụ trả về một lời chào.
<tool_description>
<tool_name>sayHello</tool_name>
<description>Says hello to the given name.</description>
<parameters>
<parameter>
<name>name</name>
<type>string</type>
<description>The name to say hello to.</description>
</parameter>
</parameters>
</tool_description>Trong ví dụ trên, thẻ `<tool_description>` bao bọc toàn bộ định nghĩa tool. `<tool_name>` là tên duy nhất của tool, và `<description>` giải thích mục đích của nó. Phần quan trọng là `<parameters>`, nơi bạn khai báo các tham số đầu vào mà tool cần, bao gồm `name`, `type` và `description` cho từng tham số.
Để thực tế hơn, mình sẽ xây dựng một tool để theo dõi đơn hàng, một use case phổ biến. MCP server có thể được dùng để hiển thị các quy trình vận chuyển cho AI, giúp trợ lý AI tạo lô hàng hoặc theo dõi gói hàng [S1]. Tool `trackShipment` này sẽ nhận vào một `tracking_id`.
<tool_description>
<tool_name>trackShipment</tool_name>
<description>Retrieves the current status and location of a shipment using its tracking ID.</description>
<parameters>
<parameter>
<name>tracking_id</name>
<type>string</type>
<description>The unique identifier for the shipment.</description>
</parameter>
</parameters>
</tool_description>Tool `trackShipment` này được định nghĩa với `<tool_name>` là `trackShipment` và một mô tả rõ ràng về chức năng của nó. Nó có một tham số bắt buộc là `tracking_id` với kiểu dữ liệu `string`. Khi Claude cần theo dõi một đơn hàng, nó sẽ gọi tool này và cung cấp `tracking_id` tương ứng.
MCP không chỉ là một giao thức lý thuyết mà còn có nhiều ứng dụng thực tế, giúp các tác nhân AI tương tác hiệu quả hơn với thế giới bên ngoài. Mình sẽ điểm qua một vài ví dụ cụ thể về cách MCP được triển khai trong các dự án.
Trong lĩnh vực logistics, MCP server có thể được dùng để hiển thị các quy trình làm việc vận chuyển cho hệ thống AI [S1]. Điều này cho phép trợ lý AI thực hiện các tác vụ như tạo lô hàng, so sánh giá cước, tạo nhãn, theo dõi gói hàng và xác thực địa chỉ [S1]. Thay vì chỉ chat, AI có thể thực sự làm việc và tự động hóa các bước trong quy trình vận chuyển.
Một ví dụ khác trong ngành chăm sóc sức khỏe là MCP Cohort Builder [S4]. Công cụ này giúp người dùng xác định và lọc các nhóm bệnh nhân dựa trên dữ liệu hồ sơ sức khỏe điện tử (EHR) có cấu trúc và phi cấu trúc [S4]. Nó cũng cho phép so sánh các đặc điểm giữa các nhóm bệnh nhân khác nhau, hỗ trợ nghiên cứu và phân tích y tế [S4].
Ngoài ra, MCP còn được dự đoán sẽ định hình công nghệ khách sạn và AI vào năm 2026 [S5]. Giao thức này giúp các công cụ AI kết nối an toàn với hệ thống và thông tin của khách sạn, mở ra nhiều khả năng tự động hóa và cá nhân hóa trải nghiệm khách hàng [S5].
Khi làm việc với MCP server, có vài điểm bạn cần lưu ý để tránh các vấn đề không mong muốn. Mặc dù MCP được thiết kế để AI tương tác hiệu quả với hệ thống bên ngoài [S3], việc triển khai vẫn cần sự cẩn trọng.
Tóm lại, MCP là một framework mạnh mẽ để “dạy” cho Claude cách tương tác với các hệ thống bên ngoài. Nắm vững cách cài đặt, định nghĩa tool bằng XML và các lưu ý trong bài là nền tảng vững chắc để bạn tự động hóa workflow của mình. Hãy xem thêm các server mẫu trong repo chính thức của Anthropic để có thêm ý tưởng.
Tham khảo: https://github.com/anthropics/skills/blob/HEAD/skills/mcp-builder/SKILL.md