Content
# 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
```bash
npm install -g mariadb-mcp-server
```
### Option 2: Install locally
```bash
npm install mariadb-mcp-server
```
### Option 3: Build from source
```bash
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 host
- `MARIADB_PORT`: Database port (default: `3306`)
- `MARIADB_USER`: Database username
- `MARIADB_PASSWORD`: Database password
- `MARIADB_DATABASE`: Default database name (optional)
- `MARIADB_ALLOW_INSERT`: Enable `INSERT` statements (`true`/`false`)
- `MARIADB_ALLOW_UPDATE`: Enable `UPDATE` statements (`true`/`false`)
- `MARIADB_ALLOW_DELETE`: Enable `DELETE` statements (`true`/`false`)
- `MARIADB_TIMEOUT_MS`: Query timeout in milliseconds (default: `10000`)
- `MARIADB_ROW_LIMIT`: Maximum number of rows returned (default: `1000`)
Example:
```bash
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
```json
{
"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
```json
{
"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 name
- `table` (required): table name
### `execute_query`
Executes a SQL query.
Parameters:
- `database` (optional): database name
- `query` (required): SQL statement to run
## Testing
The repository includes scripts to validate the server against a MariaDB or MySQL instance.
```bash
npm run test:setup
npm run test:tools
```
Or run everything together:
```bash
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:
1. Check the server logs for error messages
2. Verify your MariaDB/MySQL credentials and connection details
3. Ensure your MariaDB/MySQL user has appropriate permissions
4. 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](./LICENSE) file for details.
Connection Info
You Might Also Like
firecrawl
Firecrawl MCP Server enables web scraping, crawling, and content extraction.
markitdown
Python tool for converting files and office documents to Markdown.
markitdown
MarkItDown-MCP is a lightweight server for converting URIs to Markdown.
OmniRoute
Never stop coding. The free AI gateway — one endpoint, 160+ providers, zero...
Filesystem
Node.js MCP Server for filesystem operations with dynamic access control.
TrendRadar
TrendRadar: Your hotspot assistant for real news in just 30 seconds.