MariaDB / MySQL Database Access MCP Server
An MCP server that provides access to MariaDB ou MySQL databases.
rjsalgado
README
MariaDB / MySQL Database Access MCP Server
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 querydatabase
(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:
- 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.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
MCP Package Docs Server
Facilitates LLMs to efficiently access and fetch structured documentation for packages in Go, Python, and NPM, enhancing software development with multi-language support and performance optimization.
Claude Code MCP
An implementation of Claude Code as a Model Context Protocol server that enables using Claude's software engineering capabilities (code generation, editing, reviewing, and file operations) through the standardized MCP interface.
@kazuph/mcp-taskmanager
Model Context Protocol server for Task Management. This allows Claude Desktop (or any MCP client) to manage and execute tasks in a queue-based system.
Linear MCP Server
Enables interaction with Linear's API for managing issues, teams, and projects programmatically through the Model Context Protocol.
mermaid-mcp-server
A Model Context Protocol (MCP) server that converts Mermaid diagrams to PNG images.
Jira-Context-MCP
MCP server to provide Jira Tickets information to AI coding agents like Cursor

Linear MCP Server
A Model Context Protocol server that integrates with Linear's issue tracking system, allowing LLMs to create, update, search, and comment on Linear issues through natural language interactions.

Sequential Thinking MCP Server
This server facilitates structured problem-solving by breaking down complex issues into sequential steps, supporting revisions, and enabling multiple solution paths through full MCP integration.