DATABASE DEVELOPMENT / MariaDB
MCP MariaDB Server
Python MCP server from the MariaDB organisation that lists databases and schemas, runs statements through a default read-only gate, and can register vector-store tools when an embedding provider is set.
“The MCP MariaDB Server provides a Model Context Protocol (MCP) interface for managing and querying MariaDB databases, supporting both standard SQL operations and advanced vector/embedding-based search.”
01 / THE REASONING
Why this made the selection.
- MariaDB publishes this server in MariaDB/mcp. At 64876fb1a4cb81bf51564c46eb60401097c067cc, pyproject.toml names the package mariadb-server version 0.2.6, requires Python >=3.11, and describes it as MariaDB MCP Server. The LICENSE file is the MIT License and its copyright line is Copyright (c) 2025 MariaDB.
- The README lists list_databases, list_tables, get_table_schema, get_table_schema_with_relations, execute_sql, and create_database, plus optional vector-store tools. src/server.py defines methods with those names.
02 / THE REVIEW RECORD
What we actually inspected.
Source review has boundaries.
A clear record is more useful than a “safe” badge.
Material inspected
- README.md at 64876fb1a4cb81bf51564c46eb60401097c067cc: opening sentence, tool list, environment table, run commands, stdio and Docker JSON.
- LICENSE at the same revision: MIT License, Copyright (c) 2025 MariaDB.
- pyproject.toml at the same revision: name mariadb-server, version 0.2.6, requires-python >=3.11. No project.scripts table.
- src/config.py at the same revision: MCP_READ_ONLY and MCP_BLOCK_SENSITIVE_SHOW default to the string true.
- src/server.py at the same revision: allowed statement prefixes, the read-only PermissionError, create_database SQL, and the stdio, sse, and http branches in run_async_server.
Our findings
- The README bullet for execute_sql names SELECT, SHOW, and DESCRIBE. The code prefix tuple also includes DESC and USE, and rejects every other prefix while MCP_READ_ONLY is true.
- create_database is registered and builds CREATE DATABASE IF NOT EXISTS. That statement does not pass the default prefix gate.
- The stdio JSON and the root-level uv run server.py line do not match the path src/server.py that is in the tree. The Docker JSON does use src/server.py.
- The HTTP client example sets type to streamable-http. The server run line for that mode passes --transport http.
Not established by this review
- Not executed: it was not installed or run.
- No MariaDB connection was opened and no embedding provider was called.
The review applies to the material and revision named here. A newer upstream release can change its behavior.
03 / PUT IT TO WORK
Connect a server deliberately.
- The README says to clone the repository, install uv, run uv lock and uv sync, create a .env file, and start the process. Those commands are in separate fenced blocks, so none is copied into install.command.
- The printed stdio line is uv run server.py. The file in this tree is src/server.py.
- Set DB_HOST, DB_USER, and DB_PASSWORD. Leave MCP_READ_ONLY unset to keep the default true.
Before you start
- Python 3.11 and uv.
- A MariaDB server and a database user.
Documented configuration example
Use the client and authentication context described in the setup guidance. Configuration formats vary between hosts.
{
"mcpServers": {
"MariaDB_Server": {
"command": "uv",
"args": [
"--directory",
"path/to/mariadb-mcp-server/",
"run",
"server.py"
],
"envFile": "path/to/mcp-server-mariadb-vector/.env"
}
}
} 04 / FOLLOW THE EVIDENCE
The source trail.
Our notes are separate from the original resource.
Check upstream before adopting a new version.
https://github.com/MariaDB/mcp/blob/64876fb1a4cb81bf51564c46eb60401097c067cc/README.md
Supports: upstreamDescription, install, configExample, transports, bestFor, limitations, access
- MIT License at 64876fb1 ↗Checked
https://github.com/MariaDB/mcp/blob/64876fb1a4cb81bf51564c46eb60401097c067cc/LICENSE
Supports: license
- pyproject.toml at 64876fb1 ↗Checked
https://github.com/MariaDB/mcp/blob/64876fb1a4cb81bf51564c46eb60401097c067cc/pyproject.toml
Supports: language, compatibility, whySelected
- src/server.py at 64876fb1 ↗Checked
https://github.com/MariaDB/mcp/blob/64876fb1a4cb81bf51564c46eb60401097c067cc/src/server.py
Supports: limitations, access, review.findings
- src/config.py at 64876fb1 ↗Checked
https://github.com/MariaDB/mcp/blob/64876fb1a4cb81bf51564c46eb60401097c067cc/src/config.py
Supports: limitations, access