MySQL Database Explorer
About
Provides secure, read-only access to MySQL databases for exploring schemas and executing SELECT queries with built-in safeguards against SQL injection, query timeouts, and row limits.
Details
- Author
- dpflucas
- Repository
- dpflucas/mysql-mcp-server
- GitHub stars
- 21
- Downloads
- 1,695
- License
- MIT License
- Categories
- Database, Other, Productivity, Developer Tools, Design, AI, Search, Frontend, Security, Infrastructure
Jump to
- Read-only access: Only SELECT, SHOW, DESCRIBE, and EXPLAIN statements are allowed
- 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
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
MySQL Database ExplorerCommand (node, npx, python, etc.)npxArguments-
Argument 1
mysql-mcp-server
Environment-
MYSQL_HOST
your-mysql-host -
MYSQL_PORT
3306 -
MYSQL_USER
your-mysql-user -
MYSQL_DATABASE
your-default-database -
MYSQL_PASSWORD
your-mysql-password
Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
-
Argument 1
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
npm install -g mysql-mcp-server
npm install mysql-mcp-server
npm install
npm run build
To install MySQL Database Access MCP Server for Claude AI automatically via Smithery:
bashnpx -y @smithery/cli install @dpflucas/mysql-mcp-server --client claude
The server requires the following environment variables:
- MYSQL_HOST: Database server hostname
- MYSQL_PORT: Database server port (default: 3306)
- MYSQL_USER: Database username
- MYSQL_PASSWORD: Database password (optional, but recommended for secure connections)
- MYSQL_DATABASE: Default database name (optional)
For more control over the MySQL connection pool behavior, you can configure additional parameters:
json{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["mysql-mcp-server"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_PASSWORD": "your-mysql-password",
"MYSQL_DATABASE": "your-default-database",
"MYSQL_CONNECTION_LIMIT": "10",
"MYSQL_QUEUE_LIMIT": "0",
"MYSQL_CONNECT_TIMEOUT": "10000",
"MYSQL_IDLE_TIMEOUT": "60000",
"MYSQL_MAX_IDLE": "10"
},
"disabled": false,
"autoApprove": []
}
}
}
These advanced options allow you to:
- MYSQL_CONNECTION_LIMIT: Control the maximum number of connections in the pool (default: 10)
- MYSQL_QUEUE_LIMIT: Set the maximum number of connection requests to queue (default: 0, unlimited)
- MYSQL_CONNECT_TIMEOUT: Adjust the connection timeout in milliseconds (default: 10000)
- MYSQL_IDLE_TIMEOUT: Configure how long a connection can be idle before being released (in milliseconds)
- MYSQL_MAX_IDLE: Set the maximum number of idle connections to keep in the pool
This script creates a test database, table, and sample data:
bash
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
npm run test:setup
```
list_databases
Lists all accessible databases on the MySQL server. Parameters: None
list_tables
Lists all tables in a specified database. Parameters: database (optional): Database name (uses default if not specified)
describe_table
Shows the schema for a specific table. Parameters: database (optional): Database name (uses default if not specified), table (required): Table name
execute_query
Executes a read-only SQL query. Parameters: query (required): SQL query (only SELECT, SHOW, DESCRIBE, and EXPLAIN statements are allowed), database (optional): Database name (uses default if not specified)
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"mysql database explorer": {
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_DATABASE": "your-default-database",
"MYSQL_PASSWORD": "your-mysql-password"
},
"args": [
"mysql-mcp-server"
],
"command": "npx"
}
}
}
Linux
{
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_DATABASE": "your-default-database",
"MYSQL_PASSWORD": "your-mysql-password"
},
"args": [
"mysql-mcp-server"
],
"command": "npx"
}
Macos
{
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_DATABASE": "your-default-database",
"MYSQL_PASSWORD": "your-mysql-password"
},
"args": [
"mysql-mcp-server"
],
"command": "npx"
}
Windows
{
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_DATABASE": "your-default-database",
"MYSQL_PASSWORD": "your-mysql-password"
},
"args": [
"/c",
"npx",
"mysql-mcp-server"
],
"command": "cmd"
}
<a href="https://glama.ai/mcp/servers/@dpflucas/mysql-mcp-server">
</a>
MySQL Database Access MCP Server
This MCP server provides read-only access to MySQL databases. It allows you to:
- List available databases
- List tables in a database
- Describe table schemas
- Execute read-only SQL queries
Security Features
- Read-only access: Only SELECT, SHOW, DESCRIBE, and EXPLAIN statements are allowed
- 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
1. Install using one of these methods:
Install from NPM
# Install globally
npm install -g mysql-mcp-server
Or install locally in your project
npm install mysql-mcp-server
Build from Source
# Clone the repository
git clone https://github.com/dpflucas/mysql-mcp-server.git
cd mysql-mcp-server
Install dependencies and build
npm install
npm run build
Install via Smithery
To install MySQL Database Access MCP Server for Claude AI automatically via Smithery:
npx -y @smithery/cli install @dpflucas/mysql-mcp-server --client claude
2. Configure environment variables
The server requires the following environment variables:
- MYSQL_HOST: Database server hostname
- MYSQL_PORT: Database server port (default: 3306)
- MYSQL_USER: Database username
- MYSQL_PASSWORD: Database password (optional, but recommended for secure connections)
- MYSQL_DATABASE: Default database name (optional)
3. Add to MCP settings
Add the following configuration to your MCP settings file:
If you installed via npm (Option 1):
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["mysql-mcp-server"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_PASSWORD": "your-mysql-password",
"MYSQL_DATABASE": "your-default-database"
},
"disabled": false,
"autoApprove": []
}
}
}
If you built from source (Option 2):
{
"mcpServers": {
"mysql": {
"command": "node",
"args": ["/path/to/mysql-mcp-server/build/index.js"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_PASSWORD": "your-mysql-password",
"MYSQL_DATABASE": "your-default-database"
},
"disabled": false,
"autoApprove": []
}
}
}
Available Tools
list_databases
Lists all accessible databases on the MySQL server.
Parameters: None
Example:
{
"server_name": "mysql",
"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": "mysql",
"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": "mysql",
"tool_name": "describe_table",
"arguments": {
"database": "my_database",
"table": "my_table"
}
}
execute_query
Executes a read-only SQL query.
Parameters:
- query (required): SQL query (only SELECT, SHOW, DESCRIBE, and EXPLAIN statements are allowed)
- database (optional): Database name (uses default if not specified)
Example:
{
"server_name": "mysql",
"tool_name": "execute_query",
"arguments": {
"database": "my_database",
"query": "SELECT * FROM my_table LIMIT 10"
}
}
Advanced Connection Pool Configuration
For more control over the MySQL connection pool behavior, you can configure additional parameters:
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["mysql-mcp-server"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_PASSWORD": "your-mysql-password",
"MYSQL_DATABASE": "your-default-database",
"MYSQL_CONNECTION_LIMIT": "10",
"MYSQL_QUEUE_LIMIT": "0",
"MYSQL_CONNECT_TIMEOUT": "10000",
"MYSQL_IDLE_TIMEOUT": "60000",
"MYSQL_MAX_IDLE": "10"
},
"disabled": false,
"autoApprove": []
}
}
}
These advanced options allow you to:
- MYSQL_CONNECTION_LIMIT: Control the maximum number of connections in the pool (default: 10)
- MYSQL_QUEUE_LIMIT: Set the maximum number of connection requests to queue (default: 0, unlimited)
- MYSQL_CONNECT_TIMEOUT: Adjust the connection timeout in milliseconds (default: 10000)
- MYSQL_IDLE_TIMEOUT: Configure how long a connection can be idle before being released (in milliseconds)
- MYSQL_MAX_IDLE: Set the maximum number of idle connections to keep in the pool
Testing
The server includes test scripts to verify functionality with your MySQL setup:
1. Setup Test Database
This script creates a test database, table, and sample data:
# Set your MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
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 MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
export MYSQL_DATABASE=mcp_test_db
Run the tools test script
npm run test:tools
3. Run All Tests
To run both setup and tool tests:
# Set your MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
Run all tests
npm test
Troubleshooting
If you encounter issues:
1. Check the server logs for error messages
2. Verify your MySQL credentials and connection details
3. Ensure your MySQL user has appropriate permissions
4. Check that your query is read-only and properly formatted
License
This project is licensed under the MIT License - see the LICENSE file for details.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





