---
slug: "mariadb"
source_type: "readme"
source_url: "https://cdn.jsdelivr.net/gh/rjsalgado/mariadb-mcp-server@master/README.md"
repo: "https://github.com/rjsalgado/mariadb-mcp-server"
source_file: "README.md"
branch: "master"
---
# 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](https://github.com/rjsalgado/mariadb-mcp-server/tree/HEAD/LICENSE) file for details.
