原始内容
MariaDB / MySQL MCP Server
This MCP server exposes MariaDB and MySQL databases to MCP clients such as Claude Desktop, VS Code, and other compatible tools.
It provides tools to:
- list available databases
- list tables in a database
- describe table schemas
- execute SQL queries
Features
- Safe-by-default behavior: read-only access is enabled by default
- Query validation to block disallowed statements and reduce injection risk
- Configurable write permissions through environment variables
- Timeout and row-limit protection
- Numeric safety for insert IDs and BIGINT values returned by the MariaDB driver
Installation
Option 1: Install from npm
npm install -g mariadb-mcp-server
Option 2: Install locally
npm install mariadb-mcp-server
Option 3: Build from source
git clone https://github.com/rjsalgado/mariadb-mcp-server.git
cd mariadb-mcp-server
npm install
npm run build
Configuration
Set the following environment variables before starting the server:
MARIADB_HOST: Database hostMARIADB_PORT: Database port (default:3306)MARIADB_USER: Database usernameMARIADB_PASSWORD: Database passwordMARIADB_DATABASE: Default database name (optional)MARIADB_ALLOW_INSERT: EnableINSERTstatements (true/false)MARIADB_ALLOW_UPDATE: EnableUPDATEstatements (true/false)MARIADB_ALLOW_DELETE: EnableDELETEstatements (true/false)MARIADB_TIMEOUT_MS: Query timeout in milliseconds (default:10000)MARIADB_ROW_LIMIT: Maximum number of rows returned (default:1000)
Example:
export MARIADB_HOST=localhost
export MARIADB_PORT=3306
export MARIADB_USER=myuser
export MARIADB_PASSWORD=mypassword
export MARIADB_DATABASE=mydb
export MARIADB_ALLOW_INSERT=false
export MARIADB_ALLOW_UPDATE=false
export MARIADB_ALLOW_DELETE=false
export MARIADB_TIMEOUT_MS=10000
export MARIADB_ROW_LIMIT=1000
MCP configuration
Using npm package
{
"mcpServers": {
"mariadb": {
"command": "npx",
"args": ["mariadb-mcp-server"],
"env": {
"MARIADB_HOST": "your-host",
"MARIADB_PORT": "3306",
"MARIADB_USER": "your-user",
"MARIADB_PASSWORD": "your-password",
"MARIADB_DATABASE": "your-database",
"MARIADB_ALLOW_INSERT": "false",
"MARIADB_ALLOW_UPDATE": "false",
"MARIADB_ALLOW_DELETE": "false",
"MARIADB_TIMEOUT_MS": "10000",
"MARIADB_ROW_LIMIT": "1000"
},
"disabled": false,
"autoApprove": []
}
}
}
Using a built local server
{
"mcpServers": {
"mariadb": {
"command": "node",
"args": ["/absolute/path/to/mariadb-mcp-server/dist/index.js"],
"env": {
"MARIADB_HOST": "your-host",
"MARIADB_PORT": "3306",
"MARIADB_USER": "your-user",
"MARIADB_PASSWORD": "your-password",
"MARIADB_DATABASE": "your-database",
"MARIADB_ALLOW_INSERT": "false",
"MARIADB_ALLOW_UPDATE": "false",
"MARIADB_ALLOW_DELETE": "false",
"MARIADB_TIMEOUT_MS": "10000",
"MARIADB_ROW_LIMIT": "1000"
},
"disabled": false,
"autoApprove": []
}
}
}
Available tools
The server registers the following MCP tools:
list_databases
Lists all databases accessible to the configured user.
list_tables
Lists tables from a specific database.
Parameters:
database(optional): database name to inspect
describe_table
Returns the schema of a specific table.
Parameters:
database(optional): database nametable(required): table name
execute_query
Executes a SQL query.
Parameters:
database(optional): database namequery(required): SQL statement to run
Testing
The repository includes scripts to validate the server against a MariaDB or MySQL instance.
npm run test:setup
npm run test:tools
Or run everything together:
npm test
Notes
- The server is safe-by-default and only allows read-only operations unless the write flags are explicitly enabled.
- Write operations are still subject to query validation and runtime limits.
Troubleshooting
If you encounter issues:
- Check the server logs for error messages
- Verify your MariaDB/MySQL credentials and connection details
- Ensure your MariaDB/MySQL user has appropriate permissions
- Check that your query is read-only and properly formatted
Inspiration https://github.com/dpflucas/mysql-mcp-server
License
This project is licensed under the MIT License - see the LICENSE file for details.