describe_table
Show the schema for a specific table
Browse a MariaDB or MySQL server and run SQL against it from the conversation — read-only until you switch writes on, one statement class at a time.
LABSCO SUMMARY
The tool list is small; the defaults are the point. Nothing writes until a flag is set, and INSERT, UPDATE and DELETE each have their own, so you can permit inserts without permitting deletes. With a timeout and a row cap in front of every query, an agent exploring an unfamiliar schema cannot pull a million rows into the conversation by accident. The grants on the database user are still the real boundary; these flags are a second one you control from the client config.
A small server over a MariaDB or MySQL connection: list the databases the user can see, list a database's tables, describe a table's schema, and run a SQL statement — with writes disabled unless you enable them explicitly.
Published as mariadb-mcp-server and launched over stdio with npx, or installed globally. Connection details come from the environment: MARIADB_HOST, MARIADB_PORT — 3306 by default — MARIADB_USER, MARIADB_PASSWORD, and an optional MARIADB_DATABASE as the default. Writes are opt-in per statement class through MARIADB_ALLOW_INSERT, MARIADB_ALLOW_UPDATE and MARIADB_ALLOW_DELETE, and MARIADB_TIMEOUT_MS and MARIADB_ROW_LIMIT set the per-query bounds.
One command plus credentials — npx mariadb-mcp-server, then supply credentials
USE CASES
List what the user can see, then the tables inside it, then the columns and types of the one that matters.
Read the schema first so the column names are right, then run the SELECT and get the rows back under the row cap.
With the write flags left off, every statement that would change data is refused before it reaches the server.
Turn on only the statement class you need — inserts without deletes, for instance — and run it with the same call.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
describe_tableShow the schema for a specific table
execute_queryExecute a SQL query
list_databasesList all accessible databases on the MariaDB server
list_tablesList all tables in a specified database
BEFORE YOU INSTALL
4 tools when we connected. execute_query is read-only by default: INSERT, UPDATE and DELETE stay blocked until MARIADB_ALLOW_INSERT, MARIADB_ALLOW_UPDATE or MARIADB_ALLOW_DELETE is true. Results cap at 1000 rows and queries stop after 10 seconds.
Both documented clients run the server on your machine.
CONTEXT COST
Rated by the size of the 4 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
npx mariadb-mcp-server{
"mcpServers": {
"mariadb": {
"command": "npx",
"args": [
"mariadb-mcp-server"
],
"env": {
"MARIADB_HOST": "<YOUR_MARIADB_HOST>",
"MARIADB_PORT": "3306",
"MARIADB_USER": "<YOUR_MARIADB_USER>",
"MARIADB_PASSWORD": "<YOUR_MARIADB_PASSWORD>",
"MARIADB_DATABASE": "<YOUR_MARIADB_DATABASE>",
"MARIADB_ALLOW_INSERT": "false",
"MARIADB_ALLOW_UPDATE": "false",
"MARIADB_ALLOW_DELETE": "false",
"MARIADB_TIMEOUT_MS": "10000",
"MARIADB_ROW_LIMIT": "1000"
},
"disabled": false,
"autoApprove": []
}
}
}{
"mcpServers": {
"mariadb": {
"command": "node",
"args": [
"<YOUR_PATH_TO_MARIADB_MCP_SERVER>/dist/index.js"
],
"env": {
"MARIADB_HOST": "<YOUR_MARIADB_HOST>",
"MARIADB_PORT": "3306",
"MARIADB_USER": "<YOUR_MARIADB_USER>",
"MARIADB_PASSWORD": "<YOUR_MARIADB_PASSWORD>",
"MARIADB_DATABASE": "<YOUR_MARIADB_DATABASE>",
"MARIADB_ALLOW_INSERT": "false",
"MARIADB_ALLOW_UPDATE": "false",
"MARIADB_ALLOW_DELETE": "false",
"MARIADB_TIMEOUT_MS": "10000",
"MARIADB_ROW_LIMIT": "1000"
},
"disabled": false,
"autoApprove": []
}
}
}