mysql mcp server
An MCP server that provides read-only access to MySQL databases.
An MCP server that provides read-only access to MySQL databases.
This MCP server provides read-only access to MySQL databases. It allows you to:
# Install globally
npm install -g mysql-mcp-server
# Or install locally in your project
npm install mysql-mcp-server
# 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
The server requires the following environment variables:
MYSQL_HOST
: Database server hostnameMYSQL_PORT
: Database server port (default: 3306)MYSQL_USER
: Database usernameMYSQL_PASSWORD
: Database passwordMYSQL_DATABASE
: Default database name (optional)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": []
}
}
}
Lists all accessible databases on the MySQL server.
Parameters: None
Example:
{
"server_name": "mysql",
"tool_name": "list_databases",
"arguments": {}
}
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"
}
}
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"
}
}
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"
}
}
The server includes test scripts to verify functionality with your MySQL setup:
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
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
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
If you encounter issues:
This project is licensed under the MIT License - see the LICENSE file for details.