Thời đại viết SQL Query đã kết thúc? Hướng dẫn sử dụng MySQL MCP Server kết hợp Claude Desktop

0 0 0

Người đăng: Hoàng Việt

Theo Viblo Asia

image.png

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

image.png

Ảnh nguồn: https://www.whatismcp.com/
  • 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

image.png

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 

Screenshot from 2025-05-02 18-01-13.png

Đặ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ên
  • ALLOW_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 database my_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.

Screenshot from 2025-05-02 18-02-20.png

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

image_2025-05-02_18-05-40.png

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)

Screenshot from 2025-05-02 16-20-59.png

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.

image_2025-05-02_18-15-23.png

Thay đổi schema database

Mình sẽ thử tạo một table để lưu trữ thông tin người dùng

image_2025-05-02_18-19-25.png

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

image_2025-05-02_18-22-24.png

Tạo dữ liệu

Tiếp theo thử generate 200 users ngẫu nhiên xem sao

image_2025-05-02_18-25-36.png

Kiểm thử lại trong database xem user đã được import vào chưa

image_2025-05-02_18-27-06.png

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/

Bình luận

Bài viết tương tự

- vừa được xem lúc

Mô hình quan hệ - thực thể (Entity – Relationship Model)

Mô hình quan hệ thực thể (Entity Relationship model - E-R) được CHEN giới thiệu vào năm 1976 là một mô hình được sử dụng rộng rãi trong các bản thiết kế cơ sở dữ liệu ở mức khái niệm, được xây dựng dựa trên việc nhận thức thế giới thực thông qua tập các đối tượng được gọi là các thực thể và các mối

0 0 138

- vừa được xem lúc

[Embulk #1] Công cụ giúp giảm nỗi đau chuyển đổi dữ liệu

Embulk là gì. Embulk là một công cụ open source có chức năng cơ bản là load các record từ database này và import sang database khác.

0 0 67

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần II).

Chào mọi người, lại là mình đây, ở phần trước mình đã giới thiệu với mọi người về Window Functions Phần I. Nếu chưa rõ nó là gì thì mọi người nên đọc lại trước nha, để nắm được định nghĩa và các key words, tránh mắt chữ O mồm chứ A vì phần này mình chủ yếu sẽ thực hành với các Window Functions.

0 0 116

- vừa được xem lúc

Window Functions trong MySQL, Nâng cao và cực kì hữu dụng (Phần I).

Chào mọi người, mình mới tìm hiểu đc topic Window Functions cá nhân mình cảm thấy khá là hay và mình đánh giá nó là phần nâng cao. Vì ít người biết nên Window Functions thấy rất ít khi sử dụng, thay vì đó là những câu subquery dài dằng dặc như tin nhắn nhắn cho crush, và người khác đọc hiểu được câu

0 0 987

- vừa được xem lúc

Disable và Enable trigger trong Oracle

Origin post: https://www.tranthanhdeveloper.com/2020/12/disable-va-enable-trigger-trong-oracle.html.

0 0 51

- vừa được xem lúc

Lưu trữ dữ liệu với Data Store

. Data Store là một trong những componet của bộ thư viện Android JetPack, nó là một sự lựa chọn hoàn hảo để thay thế cho SharedPreferences để lưu trữ dữ liệu đơn giản dưới dạng key-value. Chúng ta cùng làm một so sánh nhỏ để thấy sự tối ưu của Data Store với SharedPreferences nhé.

0 0 78