MariaDB / MySQL Database Access MCP Server

by hjsad1994

608 downloads
Not rated
GitHub

Description

# MariaDB / MySQL Database Access MCP Server env # MariaDB/MySQL Connection Configuration MARIADB_HOST=localhost MARIADB_PORT=3306 MARIADB_USER=root MARIADB_PASSWORD= MARIADB_DATABASE=my_store MARIADB_ALLOW_INSERT=false MARIADB_ALLOW_UPDATE=false MARIADB_ALLOW_DELETE=false…

About

# MariaDB / MySQL Database Access MCP Server env # MariaDB/MySQL Connection Configuration MARIADB_HOST=localhost MARIADB_PORT=3306 MARIADB_USER=root MARIADB_PASSWORD= MARIADB_DATABASE=my_store MARIADB_ALLOW_INSERT=false MARIADB_ALLOW_UPDATE=false MARIADB_ALLOW_DELETE=false MARIADB_TIMEOUT_MS=50000…

Details

Author
hjsad1994
Downloads
608
Categories
Database

- Read-only access by default (SELECT, SHOW, DESCRIBE, EXPLAIN)
- Query validation to prevent SQL injection and data modification
- Configurable query timeout and row limit
- Supports both MariaDB and MySQL databases
- Can connect via TCP or Unix socket

Install via npm (npm install -g mariadb-mcp-server) or build from source. Configure required environment variables (host, port, user, password, etc.) and add the server configuration to your MCP settings file. Use tools such as list_databases, list_tables, describe_table, and execute_query to interact with the database.

MariaDB / MySQL Database Access MCP Server

env

MariaDB/MySQL Connection Configuration

MARIADB_HOST=localhost MARIADB_PORT=3306 MARIADB_USER=root MARIADB_PASSWORD= MARIADB_DATABASE=my_store MARIADB_ALLOW_INSERT=false MARIADB_ALLOW_UPDATE=false MARIADB_ALLOW_DELETE=false MARIADB_TIMEOUT_MS=50000 MARIADB_ROW_LIMIT=1000 MARIADB_SOCKET=/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

Character Set Configuration

MARIADB_CHARSET=utf8mb4 MARIADB_COLLATION=utf8mb4_general_ci

This MCP server provides access to MariaDB / MySQL databases.

It allows you to:
- List available databases
- List tables in a database
- Describe table schemas
- Execute SQL queries

Security Features

- Read-only access Default: SELECT, SHOW, DESCRIBE, and EXPLAIN - Query validation: Prevents SQL injection and blocks any data modification attempts - Query timeout: Prevents long-running queries from consuming resources - Row limit: Prevents excessive data return

Installation

Option 1: Install from NPM (Recommended)

# Install globally
npm install -g mariadb-mcp-server

Or install locally in your project

npm install mariadb-mcp-server

Option 2: Build from Source

# Clone the repository
git clone https://github.com/rjsalgado/mariadb-mcp-server.git
cd mariadb-mcp-server

Install dependencies and build

npm install npm run build

2. Configure environment variables

The server requires the following environment variables:

- MARIADB_HOST: Database server hostname
- MARIADB_PORT: Database server port (default: 3306)
- MARIADB_USER: Database username
- MARIADB_PASSWORD: Database password
- MARIADB_DATABASE: Default database name (optional)
- MARIADB_ALLOW_INSERT: false
- MARIADB_ALLOW_UPDATE: false
- MARIADB_ALLOW_DELETE: false
- MARIADB_TIMEOUT_MS: 10000
- MARIADB_ROW_LIMIT: 1000

3. Add to MCP settings

Add the following configuration to your MCP settings file:

If you installed via npm (Option 1):

{
"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": []
}
}
}

If you built from source (Option 2):

{
"mcpServers": {
"mariadb": {
"command": "node",
"args": ["/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-default-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

"server_name": "mariadb" or "server_name": "mysql"

list_databases

Lists all accessible databases on the MariaDB / MySQL server. Parameters: None

Example:

{
"server_name": "mariadb",
"tool_name": "list_databases",
"arguments": {}
}

list_tables

Lists all tables in a specified database.

Parameters:
- database (optional): Database name (uses default if not specified)

Example:

{
"server_name": "mariadb",
"tool_name": "list_tables",
"arguments": {
"database": "my_database"
}
}

describe_table

Shows the schema for a specific table.

Parameters:
- database (optional): Database name (uses default if not specified)
- table (required): Table name

Example:

{
"server_name": "mariadb",
"tool_name": "describe_table",
"arguments": {
"database": "my_database",
"table": "my_table"
}
}

execute_query

Executes a SQL query.

Parameters:
- query (required): SQL query
- database (optional): Database name (uses default if not specified)

Example:

{
"server_name": "mariadb",
"tool_name": "execute_query",
"arguments": {
"database": "my_database",
"query": "SELECT * FROM my_table LIMIT 10"
}
}

Testing

The server includes test scripts to verify functionality with your MariaDB / MySQL setup:

1. Setup Test Database

This script creates a test database, table, and sample data:
# Set your MariaDB / MySQL credentials as environment variables
export MARIADB_HOST=localhost
export MARIADB_PORT=3306
export MARIADB_USER=your_username
export MARIADB_PASSWORD=your_password
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

Run the setup script

npm run test:setup

2. Test MCP Tools

This script tests each of the MCP tools against the test database:
####

Set your MariaDB / MySQL credentials as environment variables

MARIADB_HOST=localhost MARIADB_PORT=3306 MARIADB_USER=your_username MARIADB_PASSWORD=your_password MARIADB_DATABASE=mcp_test_db MARIADB_ALLOW_INSERT=false MARIADB_ALLOW_UPDATE=false MARIADB_ALLOW_DELETE=false MARIADB_TIMEOUT_MS=10000 MARIADB_ROW_LIMIT=1000 MARIADB_DEBUG_SQL=true #### export MARIADB_HOST=localhost export MARIADB_PORT=3306 export MARIADB_USER=your_username export MARIADB_PASSWORD=your_password export MARIADB_DATABASE=mcp_test_db 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

Run the tools test script

npm run test:tools

3. Run All Tests

To run both setup and tool tests:
# Set your MariaDB / MySQL credentials as environment variables
export MARIADB_HOST=localhost
export MARIADB_PORT=3306
export MARIADB_USER=your_username
export MARIADB_PASSWORD=your_password
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

Run all tests

npm test

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 file for details.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.