MCP-rb: Khi Ruby Gặp Gỡ AI Agent – Giải Pháp Thần Tốc Cho Bạn!
Lê Lân
0
MCP-RB: Giải Pháp Ruby Cho Model Context Protocol Xây Dựng AI Agents Hiệu Quả
Mở Đầu
Trong kỷ nguyên bùng nổ trí tuệ nhân tạo (AI) và các mô hình ngôn ngữ lớn (LLM) như ChatGPT, việc phát triển các AI agents ngày càng trở nên quan trọng và phức tạp. Model Context Protocol (MCP) ra đời nhằm tiêu chuẩn hóa cách các LLM hoạt động với công cụ và tài nguyên bên ngoài, tạo nên một hệ sinh thái AI agent linh hoạt và hiệu quả.
MCP là một giao thức tập trung vào việc xây dựng các AI agents có khả năng tiếp cận và thao tác với các tài nguyên, công cụ bên ngoài một cách đồng nhất. Trong khi các SDK gốc dành cho MCP được cung cấp bằng TypeScript và Python, cộng đồng Ruby đã có thêm một lựa chọn mới với mcp-rb — một SDK Ruby thiết kế đặc biệt, tận dụng thế mạnh của ngôn ngữ Ruby trong phát triển và sử dụng AI agents dễ dàng hơn.
Bài viết này sẽ giúp bạn hiểu rõ về giao thức MCP, giới thiệu về SDK mcp-rb, hướng dẫn cách viết tool và resource trong Ruby, đồng thời so sánh với TypeScript SDK đi kèm.
Giới Thiệu Về Model Context Protocol (MCP)
MCP Là Gì?
MCP (Model Context Protocol) là giao thức nhằm chuẩn hóa cách các AI agents vận hành và sử dụng tài nguyên bên ngoài. Trong thời kỳ LLM trở thành xu hướng, MCP giúp trừu tượng hóa sự đa dạng trong cách tích hợp LLM với các công cụ, từ đó những AI agents hoạt động nhất quán trên nhiều nền tảng.
Các Thành Phần Cơ Bản Của MCP
Tool (Công cụ): Tương đương với thao tác thực thi, thường ở dạng POST trong web.
Resource (Tài nguyên): Tương tự thao tác truy vấn dữ liệu, thường ở dạng GET.
Hiểu theo cách đơn giản, các AI agents dùng MCP sẽ gọi các Tools để thực hiện hành động và truy cập Resource để lấy thông tin cần thiết, từ đó quản lý tương tác với môi trường bên ngoài hiệu quả hơn.
Giới Thiệu SDK MCP-RB Cho Ruby
Xu Hướng Ruby Trong Lĩnh Vực AI Agent
Ruby từ lâu đã nổi tiếng với sự linh hoạt và giản dị trong lập trình. Tuy nhiên, ở lĩnh vực AI agent và MCP, Ruby vẫn chưa được chú ý nhiều so với Python hay TypeScript. mcp-rb ra đời với mục tiêu giúp cộng đồng Ruby tham gia vào công cuộc phát triển AI agents một cách nhanh chóng và thuận tiện.
Các Tính Năng Nổi Bật Của mcp-rb
Cung cấp DSL (Domain Specific Language) thân thiện, dễ đọc, dựa trên cảm hứng từ Sinatra và graphql-ruby.
Cho phép định nghĩa tool và resource theo phong cách Ruby đặc trưng.
Tương tác trực tiếp dễ dàng với MCP server.
Hướng Dẫn Viết Code Với MCP-RB
1. Cách Định Nghĩa Tool
Dưới đây là ví dụ code định nghĩa một tool tính tổng hai số:
require"mcp"
name "demo"
tool "add"do
description "Add two numbers"
argument :a, Integer, required:true
argument :b, Integer, required:true
call { |args| args[:a] + args[:b] }
end
Ở đây:
tool "add": Tên công cụ
argument: Khai báo tham số đầu vào với kiểu dữ liệu rõ ràng
call { |args| ... }: Khối xử lý trả về kết quả
2. Định Nghĩa Resource
Resource đại diện cho dữ liệu hoặc thông tin mà AI agents có thể truy cập:
resource "greeting://hello"do
description "A greeting resource"
call { |args| "Hello, #{args[:name]}!" }
end
Hiện tại, mcp-rb đang trong quá trình hoàn thiện phần định nghĩa dynamic resource.
3. Cảm Hứng Từ Sinatra và Graphql-Ruby
Cú pháp DSL được mcp-rb thiết kế dựa trên sự đơn giản và rõ ràng tương tự như Sinatra trong web server và graphql-ruby trong định nghĩa mutation.
Cách khai báo tool và resource giúp cho developer Ruby dễ dàng làm quen và triển khai trong thời gian ngắn.
Lưu ý: Lệnh bundle add mcp-rb cho phép bạn cài đặt ngay SDK mcp-rb để bắt đầu viết code.
So Sánh MCP-RB Và MCP TypeScript SDK
Tiêu chí
MCP TypeScript SDK
MCP-RB SDK
Ngôn ngữ
TypeScript
Ruby
Tính năng
Hệ thống type mạnh mẽ, backend hoàn chỉnh
DSL thân thiện, dễ viết, một số tính năng chưa hoàn thiện
Độ phức tạp trong code
Trung bình đến cao
Thấp hơn, code ngắn gọn và trực quan
Mức độ linh hoạt
Cao, tận dụng sức mạnh của TypeScript và zod
Tối ưu cho người yêu Ruby, tiện lợi cho phát triển mới
Hỗ trợ dynamic resource
Hoàn chỉnh
Đang phát triển
Ví dụ định nghĩa tool cộng hai số (TypeScript):
server.tool("add", { a: z.number(), b: z.number() }, async ({ a, b }) => ({
content: [{ type: "text", text: String(a + b) }]
}));
Đối chiếu với Ruby (mcp-rb):
tool "add"do
argument :a, Integer, required:true
argument :b, Integer, required:true
call { |args| args[:a] + args[:b] }
end
Những Điều Còn Thiếu Và Hướng Phát Triển
Hệ thống kiểm tra kiểu dữ liệu trong Ruby chưa mạnh mẽ như TypeScript với zod.
Một số tính năng nâng cao trong SDK chính thức MCP đang chưa được hỗ trợ ở mcp-rb.
Định nghĩa dynamic resource và những tiện ích nâng cao khác vẫn trong quá trình phát triển.
Tuy vậy, mcp-rb đã được chứng minh vận hành ổn định qua ví dụ tích hợp với Cosense — một dịch vụ Wiki Nhật Bản, chạy tốt cùng Claude.
Đây là một dự án mã nguồn mở dưới giấy phép MIT. Rất hoan nghênh các đóng góp và cải tiến từ cộng đồng Ruby để hoàn thiện hơn trong tương lai.
Kết Luận
mcp-rb mở ra một con đường mới cho những người yêu thích Ruby có thể tiếp cận dễ dàng với các AI agents được xây dựng dựa trên giao thức MCP. Với DSL đơn giản, mã nguồn mở và khả năng mở rộng trong tương lai, mcp-rb là công cụ hữu ích trong bối cảnh AI agents ngày càng phát triển đa dạng và mạnh mẽ.
Đừng ngần ngại thử trải nghiệm và đóng góp vào dự án tại: