MCPcopy Index your code
hub / github.com/enemyrr/mcp-mysql-server

github.com/enemyrr/mcp-mysql-server @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
96 symbols 228 edges 16 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

@enemyrr/mcp-mysql-server

smithery badge

A Model Context Protocol server that provides MySQL database operations. This server enables AI models to interact with MySQL databases through a standardized interface.

MCP-MySQL Server MCP server

Installation & Setup for Cursor IDE

Installing via Smithery

To install MySQL Database Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @enemyrr/mcp-mysql-server --client claude

Installing Manually

  1. Clone and build the project:
git clone https://github.com/enemyrr/mcp-mysql-server.git
cd mcp-mysql-server
npm install
npm run build
  1. Add the server in Cursor IDE settings:
  2. Open Command Palette (Cmd/Ctrl + Shift + P)
  3. Search for "MCP: Add Server"
  4. Fill in the fields:
    • Name: mysql
    • Type: command
    • Command: node /absolute/path/to/mcp-mysql-server/build/index.js

Note: Replace /absolute/path/to/ with the actual path where you cloned and built the project.

Database Configuration

You can configure the database connection in three ways:

  1. Database URL in .env (Recommended):
DATABASE_URL=mysql://user:password@host:3306/database
  1. Individual Parameters in .env:
DB_HOST=localhost
DB_USER=your_user
DB_PASSWORD=your_password
DB_DATABASE=your_database
  1. Direct Connection via Tool:
use_mcp_tool({
  server_name: "mysql",
  tool_name: "connect_db",
  arguments: {
    url: "mysql://user:password@host:3306/database"
    // OR
    workspace: "/path/to/your/project" // Will use project's .env
    // OR
    host: "localhost",
    user: "your_user",
    password: "your_password",
    database: "your_database"
  }
});

Available Tools

1. connect_db

Connect to MySQL database using URL, workspace path, or direct credentials.

2. query

Execute SELECT queries with optional prepared statement parameters.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "query",
  arguments: {
    sql: "SELECT * FROM users WHERE id = ?",
    params: [1]
  }
});

3. execute

Execute INSERT, UPDATE, or DELETE queries with optional prepared statement parameters.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "execute",
  arguments: {
    sql: "INSERT INTO users (name, email) VALUES (?, ?)",
    params: ["John Doe", "john@example.com"]
  }
});

4. list_tables

List all tables in the connected database.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "list_tables"
});

5. describe_table

Get the structure of a specific table.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "describe_table",
  arguments: {
    table: "users"
  }
});

6. create_table

Create a new table with specified fields and indexes.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "create_table",
  arguments: {
    table: "users",
    fields: [
      {
        name: "id",
        type: "int",
        autoIncrement: true,
        primary: true
      },
      {
        name: "email",
        type: "varchar",
        length: 255,
        nullable: false
      }
    ],
    indexes: [
      {
        name: "email_idx",
        columns: ["email"],
        unique: true
      }
    ]
  }
});

7. add_column

Add a new column to an existing table.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "add_column",
  arguments: {
    table: "users",
    field: {
      name: "phone",
      type: "varchar",
      length: 20,
      nullable: true
    }
  }
});

8. alter_column

Modify an existing column (type, nullable, default, or rename).

use_mcp_tool({
  server_name: "mysql",
  tool_name: "alter_column",
  arguments: {
    table: "users",
    column: "phone",
    type: "varchar",
    length: 50,
    nullable: false,
    newName: "phone_number" // optional: rename column
  }
});

9. drop_column

Remove a column from a table.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "drop_column",
  arguments: {
    table: "users",
    column: "phone_number"
  }
});

10. drop_table

Delete a table (requires confirmation).

use_mcp_tool({
  server_name: "mysql",
  tool_name: "drop_table",
  arguments: {
    table: "old_table",
    confirm: true
  }
});

11. truncate_table

Remove all rows from a table (requires confirmation).

use_mcp_tool({
  server_name: "mysql",
  tool_name: "truncate_table",
  arguments: {
    table: "logs",
    confirm: true
  }
});

12. list_databases

List all accessible databases on the server.

13. get_indexes

List all indexes on a table.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "get_indexes",
  arguments: {
    table: "users"
  }
});

14. get_foreign_keys

List all foreign key relationships for a table.

use_mcp_tool({
  server_name: "mysql",
  tool_name: "get_foreign_keys",
  arguments: {
    table: "orders"
  }
});

MCP Resources

Browse database schema as resources:

URI Description
mysql://schema Database overview (table count, size)
mysql://tables List all tables with metadata
mysql://tables/{name} Table details (columns, indexes, FKs)
mysql://tables/{name}/columns Column definitions
mysql://tables/{name}/indexes Index definitions
mysql://tables/{name}/sample Sample 5 rows from table

MCP Prompts

Pre-built prompts for common operations:

Prompt Description
generate-select Build SELECT query for a table
generate-insert Generate INSERT template
generate-update Generate UPDATE template
explain-schema Natural language schema explanation
suggest-indexes Index recommendations for a table

Features

  • 14 database tools for queries, schema management, and more
  • MCP Resources for browsing database schema
  • MCP Prompts for generating SQL queries
  • Multiple connection methods (URL, workspace, direct)
  • Secure connection handling with automatic cleanup
  • Prepared statement support for query parameters
  • Comprehensive error handling and validation
  • TypeScript support

Security

  • Uses prepared statements to prevent SQL injection
  • Supports secure password handling through environment variables
  • Validates queries before execution
  • Automatically closes connections when done

Error Handling

The server provides detailed error messages for: - Connection failures - Invalid queries or parameters - Missing configuration - Database errors - Schema validation errors

Contributing

Contributions are welcome! Please feel free to submit a Pull Request to https://github.com/enemyrr/mcp-mysql-server

License

MIT

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Function 57
Interface 21
Method 14
Class 4

Languages

TypeScript100%

Modules by API surface

src/types/index.ts21 symbols
src/tools/schema.ts12 symbols
src/connection/index.ts10 symbols
src/utils/logger.ts8 symbols
src/server.ts8 symbols
src/resources.ts8 symbols
src/prompts.ts7 symbols
src/utils/validation.ts6 symbols
src/connection/config.ts5 symbols
src/connection/pool.ts4 symbols
src/utils/errors.ts3 symbols
src/tools/query.ts2 symbols

Datastores touched

(mysql)Database · 1 repos

For agents

$ claude mcp add mcp-mysql-server \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page