MariaDB MCP Server
MCP server cho MariaDB/MySQL, chạy qua stdio bằng Python để agent tương tác trực tiếp với database của người dùng.
Thiết kế hiện tại bám theo các nguyên tắc sau:
- Chạy cục bộ trên máy người dùng.
- Agent phải xin credentials từ user và gọi
configure_connectiontrong runtime. - Không khóa vào một IDE hay agent cụ thể.
Flow hoạt động
- MCP client chỉ cần khởi động process Python của server.
- Khi cần truy cập database, agent phải hỏi user các thông tin kết nối như
host,port,user,password,database. - Agent gọi tool
configure_connection. - Agent gọi
test_connectionđể xác nhận kết nối. - Các tool còn lại dùng cấu hình runtime đó cho tới khi process kết thúc hoặc được cấu hình lại.
Database credentials chỉ nằm trong memory của process hiện tại. Khi MCP server khởi động lại, agent phải cung cấp lại.
Yêu cầu
- Python 3.11+
- Một MariaDB/MySQL server mà máy của bạn truy cập được
- MCP client hỗ trợ giao tiếp qua
stdio
Cài đặt
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtChạy trực tiếp
Bạn có thể chạy thử server trong terminal mà không cần cấu hình database trước:
.venv/bin/python mariadb-mcp-server.pyNếu muốn tăng log:
LOG_LEVEL=DEBUG .venv/bin/python mariadb-mcp-server.pyCấu hình MCP client
Theo yêu cầu của project này, mcp_config chỉ nên chứa command và args.
Ví dụ:
{
"mcpServers": {
"mariadb": {
"command": "/path/to/MariaMCP/.venv/bin/python",
"args": [
"/absolute/path/to/MariaMCP/mariadb-mcp-server.py"
]
}
}
}Khuyến nghị dùng Python trong virtual environment thay vì python3 global để tránh lỗi thiếu package khi MCP client chạy bằng interpreter khác với terminal hiện tại của bạn.
Cách agent cung cấp credentials
Sau khi server đã được mount vào client, hãy đưa credentials cho agent trong cuộc hội thoại và yêu cầu agent cấu hình kết nối trước.
Ví dụ prompt:
Hãy cấu hình MariaDB MCP này bằng các thông tin sau rồi chạy test_connection:
host=127.0.0.1
port=3306
user=root
password=secret
database=app_dbTool configure_connection nhận các field sau:
{
"host": "127.0.0.1",
"port": 3306,
"user": "root",
"password": "secret",
"database": "app_db",
"charset": "utf8mb4",
"connect_timeout": 10
}host và user là bắt buộc để mở kết nối. database là tùy chọn, vì bạn vẫn có thể truyền database trực tiếp cho từng tool như list_tables hoặc describe_table.
Antigravity
Ưu tiên Antigravity theo yêu cầu dự án. Cấu hình nên gọi trực tiếp Python process này qua stdio.
Ví dụ:
{
"mcpServers": {
"mariadb": {
"command": "/path/to/MariaMCP/.venv/bin/python",
"args": [
"/path/to/MariaMCP/mariadb-mcp-server.py"
]
}
}
}Nếu Antigravity báo calling "initialize": EOF, nguyên nhân thường là process Python thoát ngay khi khởi động. Cần kiểm tra:
commandcó trỏ đúng tới Python interpreter mong muốn hay không- đường dẫn tới
mariadb-mcp-server.pycó đúng hay không - dependencies đã được cài bằng
pip install -r requirements.txthay chưa
Nếu agent báo kết nối chưa được cấu hình, đó là hành vi đúng của server mới. Hãy cung cấp credentials trong chat để agent gọi configure_connection.
Fix lỗi No module named 'mysql'
Nếu bạn thấy lỗi:
Traceback (most recent call last):
...
ModuleNotFoundError: No module named 'mysql'thì nghĩa là MCP client đang khởi động bằng một Python chưa cài dependency từ requirements.txt.
Cách fix an toàn:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtSau đó cấu hình MCP client dùng đúng interpreter trong .venv.
Tools được expose
| Tool | Mô tả |
|---|---|
get_connection_info | Xem cấu hình runtime hiện tại, không lộ password |
configure_connection | Cung cấp hoặc cập nhật credentials cho process hiện tại |
test_connection | Kiểm tra kết nối MariaDB |
list_databases | Liệt kê database khả dụng |
list_tables | Liệt kê table trong database |
describe_table | Xem cấu trúc cột |
get_table_indexes | Xem index của table |
execute_query | Chạy query đọc dữ liệu |
execute_command | Chạy lệnh ghi dữ liệu hoặc DDL |
create_database | Tạo database |
create_user | Tạo user |
grant_privileges | Cấp quyền cho user |
get_server_status | Xem trạng thái server |
get_process_list | Xem process MariaDB |
backup_table | Xuất dữ liệu table ra INSERT statements |
Lưu ý vận hành
- Đây là MCP server chạy qua
stdio, không phải web service chạy nền lâu dài. - Server chạy với quyền đúng bằng credentials mà agent đã cung cấp.
- Nếu agent có thể dùng
execute_command, agent có thể thay đổi dữ liệu thật. - Nên tạo riêng một user MariaDB với phạm vi quyền phù hợp thay vì dùng tài khoản admin cho production.
