MCP - Model Context Protocol là gì?
Dạo gần đây dần dần trên các nền tảng đều đề cập đến một khái niệm khá mới mẻ trong AI đó là MCP hay Model Context Protocol, MCP cho phép người sử dụng có thể trao nhiều quyền hơn cho các mô hình AI để trực tiếp giao tiếp với các công cụ bên ngoài hệ thống AI như (Browser, Google Sheets, Database Engines, Note apps,...). Cơ bản thì MCP sẽ biên dịch từ ngôn ngữ con người sang các chức năng đã được cấu hình sẵn trong MCP Server để giao tiếp với các công cụ khác. Phương thức này đang góp phần giúp AI có thể làm được nhiều công việc hơn và có ích hơn cho chúng ta, mình nghĩ đó chính là lý do vì sao mà MCP lại đang rất HOT ngay bây giờ.
Mô hình kiến trúc MCP
Hiện tại ở thời điểm đầu của giao thức này thì hệ thống sẽ gồm 3 phần:
MCP Hosts => MCP Servers => External Services
-
Host với MCP Client (MCP Hosts) có thể là các công cụ như: Claude Desktop, Cursor,... MCP Hosts sẽ giao tiếp với các MCP Servers thông qua MCP Protocol để gửi các yêu cầu từ người dùng với chức năng tương ứng. Ví dụ: Người dùng hỏi "Độ ẩm hiện tại tại Hà Nội" thì MCP Hosts sẽ chuyển yêu cầu đến MCP Server chịu trách nhiệm truy xuất thời tiết.
-
MCP Server là các dịch vụ được cấu hình sẵn để tương tác với một nguồn dữ liệu riêng, MCP Server có thể cấu hình để kết nối với bất cứ dịch vụ nào (Web APIs, Databases, Excel files,...). Thường các MCP Server chỉ phụ trách cho một nhóm chức năng duy nhất.
-
External Services là các dịch vụ, công cụ mà MCP Server sẽ kết nối đến. Hiện tại đã có cả hàng nghìn MCP Servers để có thể kết nối đến các công cụ khác nhau phục vụ cho đa dạng mục đích. Bạn có thể tìm kiếm với keyword: Tên công cụ + MCP. Ví dụ: Notion MCP. Khả năng cao đã công cụ đó đã có người code MCP server.
Database MCP Servers để làm gì? Usecases thực tế
Vậy cơ bản chúng ta đã hiểu được đại khái MCP Servers hoạt động thế nào, vậy cụ thể trong thực tế các database MCP Server có thể được ứng dụng để làm gì?
- Phân tích dữ liệu không cần BI tool: Nhân viên không chuyên kỹ thuật, nhà quản lý, nhà phân tích có thể đặt các câu hỏi như “Doanh thu tháng 4 là bao nhiêu?”, “Top 5 sản phẩm bán chạy nhất hôm nay?” để lấy ngay insight trực tiếp từ dữ liệu trong database mà không cần nhờ đến team data thu thập và tính toán số liệu.
- Tạo dữ liệu test nhanh chóng: Không ít trường hợp QA, dev backend, product engineer cần tạo nhanh chóng các dữ liệu test để phục vụ việc kiểm thử. AI sẽ có thể dễ dàng giúp chúng ta thực hiện việc này thông qua MCP.
- Hỗ trợ kiểm tra nhanh database không cần truy cập trực tiếp: DevOps, SRE hay DBA Engineer thường xuyên phải kiểm tra các sai sót hay lỗi trong dữ liệu, Database MCP server hỗ trợ truy xuất nhanh dữ liệu thông qua ngôn ngữ tự nhiên. Ví dụ: “Tìm tất cả các hàng có lỗi ‘duplicate entry’ trong bảng logs.”
- Tạo dashboard hoặc báo cáo định kỳ: Là một Data Analyst hay Business Owner việc tạo báo cáo hay dashboard là một công việc định kỳ hàng tuần, hàng tháng. Với MCP Server ta hoàn toàn có thể tự động hóa việc này bằng prompt “Tạo bảng tổng hợp số lượng đơn hàng theo từng ngày trong tuần này và xuất ra file dạng csv”
- ...
Trong bài viết này mình sẽ hướng dẫn cách thức sử dụng Claude Desktop (MCP Host) kết hợp với MySQL MCP Server (MCP Server) để thực hiện truy xuất, sửa đổi dữ liệu với database MySQL (External Service). Từ đó các bạn có thể nắm được cách để kết nối bất cứ MCP Servers nào khác phục vụ cho công việc bản thân.
Tích hợp MySQL MCP với Claude Desktop
Cài đặt Claude Desktop
Claude Desktop miễn phí và bạn có thể tải trực tiếp tại trang chủ nếu sử dụng Windows hoặc MacOS https://claude.ai/download
Nếu bạn sử dụng Linux - Ubuntu như mình thì có thể tải ở đây https://github.com/aaddrick/claude-desktop-debian (Unofficial)
Cài đặt & Cấu hình MySQL Server
Mình sử dụng Ubuntu nên sẽ hướng dẫn cài đặt MySQL Server trên Ubuntu, trong trường hợp bạn sử dụng hệ điều hành khác thì hãy tìm cách cài đặt MySQL trên Internet cho phù hợp nhé.
Cài đặt MySQL Server
sudo apt update
sudo apt install mysql-server -y
systemctl status mysql
Đặt mật khẩu cho root user
sudo mysql # Truy cập vào database với user root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
Tạo database my_database
để nghịch
CREATE DATABASE my_database;
Thử thoát khỏi database bằng câu lệnh exit
và kiểm thử truy cập lại với user root
và mật khẩu 123456
. Nếu bạn có thể truy cập và list được ra database đã tạo phía trên thì setup cho MySQL database đã hoàn tất.
mysql -uroot -p123456 SHOW DATABASES;
Cấu hình MCP Server cho Claude Desktop
Hiện tại có nhiều MCP Server được code bởi cộng đồng nên cũng có những rủi ro nhất định khi sử dụng. Bạn chỉ nên sử dụng nhưng MCP Server được tin tưởng hoặc có thể đọc source code để hiểu được MCP Server đó làm gì.
Trong bài này mình sẽ sử dụng MySQL MCP Server có nhiều "sao" nhất để demo https://github.com/benborla/mcp-server-mysql
Máy tính của bạn cần có Node.js v18 hoặc version cao hơn (Chi tiết yêu cầu cho MCP Server này). Nếu chưa có bạn có thể cài đặt ở đây: https://nodejs.org/en/download
Chúng ta có thể chạy MCP Server thủ công hoặc cấu hình để Claude Desktop tự động khởi chạy MCP Servers. Mình sẽ chọn cách đơn giản hơn là để Claude Desktop tự động khởi chạy MCP Server. Đối với Linux, file cấu hình MCP Servers sẽ nằm ở đường dẫn ~/.config/Claude/claude_desktop_config.json
. Nếu file này chưa tồn tại, bạn hãy tạo mới file này, nội dung trong file sẽ như sau:
{ "mcpServers": { "mcp_server_mysql": { "command": "npx", "args": [ "-y", "@benborla29/mcp-server-mysql" ], "env": { "MYSQL_HOST": "127.0.0.1", "MYSQL_PORT": "3306", "MYSQL_USER": "root", "MYSQL_PASS": "112233", "MYSQL_DB": "my_database", "ALLOW_INSERT_OPERATION": "true", "ALLOW_UPDATE_OPERATION": "true", "ALLOW_DELETE_OPERATION": "true", "SCHEMA_DDL_PERMISSIONS": "my_database:true", "PATH": "/usr/bin", "NODE_PATH": "/lib/node_modules" } } }
}
MYSQL_HOST
,MYSQL_PORT
,MYSQL_USER
,MYSQL_PASS
,MYSQL_DB
là các thông tin để kết nối đến MySQL database ta đã tạo ở trênALLOW_INSERT_OPERATION
,ALLOW_UPDATE_OPERATION
,ALLOW_DELETE_OPERATION
cho phép người dùng có thể ra lệnh thực hiện các câu lệnh INSERT, UPDATE, DELETE. Mặc định người dùng chỉ có thểSELECT
.SCHEMA_DDL_PERMISSIONS: "my_database:true"
là cấu hình cho phép thay đổi schema trên databasemy_database
. Mặc định không thể thay đổi schema hay chạy các DDL query.
Sau khi cấu hình xong bạn có thể chạy Claude Desktop lên để kiểm tra kết nối. Truy cập Files => Settings => Developer => mcp_server_sql. Trạng thái hiển thị running
như hình là cấu hình kết nối đã thành công.
Trong khung chat chúng ta cũng có thể thấy MCP server mcp_server_mysql
được kích hoạt mặc định
Cùng thử thực hiện một vài câu lệnh để xem AI kết hợp MCP Server này có thể làm được những gì nhé.
Demo chức năng
Tìm kiếm dữ liệu
Đầu tiên mình sẽ thử hỏi xem có nhưng tables nào trong database hiện tại. Với lần đầu khi chạy query sẽ có 1 pop-up cho bạn lựa chọn duyệt query trước khi chạy (Allow Once) hoặc có thể mặc định cho phép model chạy query luôn không cần hỏi lại (Allow always)
Kết quả trả về không có table nào trong database hiện tại. Model mình đang sử dụng là Claude 3.7 Sonnet
khá thông minh khi query không ra dữ liệu nào nó liền nghi ngờ và tự động kiểm tra lại 1 lần nữa các thông tin đầu vào.
Thay đổi schema database
Mình sẽ thử tạo một table để lưu trữ thông tin người dùng
Bạn có thể thấy trong phần Response
message trả về là đã thực hiện DDL Operation thành công trong database my_database
. Thử kiểm tra lại trong database với command
USE my_database;
SHOW TABLES;
Table users
đã được tạo thành công
Tạo dữ liệu
Tiếp theo thử generate 200 users ngẫu nhiên xem sao
Kiểm thử lại trong database xem user đã được import vào chưa
Mô hình AI đã trích xuất schema hiện tại của table và import vào dữ liệu theo đúng cấu trúc. Quá tuyệt vời!
Lưu ý khi sử dụng Database MCP Servers
Tuy hữu dụng là vậy nhưng chúng ta cũng cần vô cùng lưu ý khi sử dụng AI Model để tương tác trực tiếp với database.
- Chỉ sử dụng các MCP Server uy tín, đã được kiểm chứng hoặc tự code MCP Server riêng.
- Chỉ nên sử dụng các quyền chỉnh sửa dữ liệu cho database test (Non-production)
- Bảo mật kết nối giữa Local machine và databases. Có thể sử dụng proxy hoặc MCP Hosts chung.
- ...
Kết
Cám ơn các bạn đã đọc đến tận đây, hy vọng bài viết có đem lại giá trị cho bạn.
Nếu thấy bài viết hay hãy Upvote và Follow mình để theo dõi thêm các bài viết khác nữa nhé 😄
Nếu như bạn đang gặp khó khăn trong vấn đề chuyên môn, cần người hỗ trợ về mặt hệ thống, DevOps tools hay cần định hướng trong công việc thì mình tự tin có thể hỗ trợ được bạn. Liên hệ với mình để trao đổi thêm nhé https://hoangviet.io.vn/