MySQL-MCP
by zajTools
- examples
# MySQL MCP Server Demo
This demo shows how to use the MySQL MCP server with Claude to interact with a MySQL database. Follow these steps to set up the demo environment and see the MCP server in action.
## Setup
### 1. Create the Demo Database
Run the provided SQL script to create a sample database with tables and data:
```bash
# Option 1: Using the mysql command line client
mysql -u your_username -p < examples/sql/setup.sql
# Option 2: Using a MySQL client of your choice
# Simply open and run the examples/sql/setup.sql file
```
This will create:
- A `mcp_demo` database
- Tables for `customers`, `products`, `orders`, and `order_items`
- Sample data in all tables
- Views for `order_summary` and `product_sales`
### 2. Configure the MCP Server
1. Create a `.env` file with your database credentials:
```bash
cp .env.example .env
```
2. Edit the `.env` file with your MySQL credentials:
```
# Database Connection
DB_CONNECTION=mysql
# Database Host
DB_HOST=localhost
# Database Port
DB_PORT=3306
# Database Username (required)
DB_USER=your_username
# Database Password (required)
DB_PASSWORD=your_password
# Database Name (required)
DB_NAME=mcp_demo
```
3. Update your `cline_mcp_settings.json` file to include the MySQL MCP server:
```json
"mcpServers": {
"mysql": {
"command": "node",
"args": [
"/path/to/zaj_MySQL_MCP/build/index.js"
],
"disabled": false,
"autoApprove": []
}
}
```
Replace `/path/to/zaj_MySQL_MCP/build/index.js` with the actual path to the built index.js file.
## Example Usage with Claude
Here are some examples of how to interact with the MySQL database through Claude:
### Exploring the Database Schema
**You**: "What tables are available in the database?"
**Claude**: *Claude will use the `list_tables` tool to retrieve the list of tables*
```
Tables in the database:
- customers
- products
- orders
- order_items
- order_summary (view)
- product_sales (view)
```
**You**: "Show me the structure of the customers table."
**Claude**: *Claude will use the `describe_table` tool to get the schema*
```
Customers table structure:
- customer_id: INT (Primary Key, Auto Increment)
- first_name: VARCHAR(50) (Not Null)
- last_name: VARCHAR(50) (Not Null)
- email: VARCHAR(100) (Not Null, Unique)
- phone: VARCHAR(20)
- created_at: TIMESTAMP (Default: CURRENT_TIMESTAMP)
```
### Querying Data
**You**: "Show me all customers in the database."
**Claude**: *Claude will use the `read_query` tool to execute a SELECT query*
```
Found 5 customers:
1. John Doe (john.doe@example.com)
2. Jane Smith (jane.smith@example.com)
3. Robert Johnson (robert.johnson@example.com)
4. Emily Williams (emily.williams@example.com)
5. Michael Brown (michael.brown@example.com)
```
**You**: "What are the top-selling product categories?"
**Claude**: *Claude will use the `read_query` tool to execute a more complex query*
```
Top-selling categories by revenue:
1. Electronics: $2,399.97
2. Furniture: $249.99
3. Kitchen Appliances: $169.98
```
### Modifying Data
**You**: "Add a new customer named Alex Johnson with email alex.johnson@example.com and phone 555-111-2222."
**Claude**: *Claude will use the `write_query` tool to execute an INSERT query*
```
Customer added successfully.
Affected rows: 1
```
**You**: "Update the stock quantity for the Laptop product, reducing it by 1."
**Claude**: *Claude will use the `write_query` tool to execute an UPDATE query*
```
Stock updated successfully.
Affected rows: 1
```
### Business Intelligence
**You**: "Analyze the sales data and provide insights."
**Claude**: *Claude will use multiple queries and the `append_insight` tool*
```
Based on my analysis of the sales data, I've identified the following insights:
1. Electronics is the highest-revenue category, accounting for 85% of total sales.
2. The Laptop product has the highest average order value.
3. John Doe is the customer with the highest total purchase amount.
4. 75% of orders have been either delivered or shipped.
These insights have been added to the business insights memo.
```
## Advanced Usage
You can ask Claude to perform more complex operations, such as:
- Creating new tables
- Performing joins across multiple tables
- Generating reports with aggregated data
- Identifying trends and patterns in the data
- Suggesting database optimizations
The MySQL MCP server enables Claude to act as a powerful database analyst and administrator, helping you extract value from your MySQL databases.