MySQL数据库访问
STDIO提供MySQL数据库只读访问服务
提供MySQL数据库只读访问服务
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
To install MySQL Database Access MCP Server for Claude AI automatically via Smithery:
npx -y @smithery/cli install @dpflucas/mysql-mcp-server --client claude
The server requires the following environment variables:
MYSQL_HOST
: Database server hostnameMYSQL_PORT
: Database server port (default: 3306)MYSQL_USER
: Database usernameMYSQL_PASSWORD
: Database password (optional, but recommended for secure connections)MYSQL_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 nameExample:
{ "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" } }
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 poolThe 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.