Airsc miễn phí cho tất cả. Nếu nó giúp bạn, hãy ủng hộ $2–$20.

Ủng hộ
MCP serverAn toànDatabase & backendCần cài đặt chút

mysql_mcp_server

designcomputer · designcomputer/mysql_mcp_server

Máy chủ MCP này cho phép các agent AI tương tác an toàn với cơ sở dữ liệu MySQL, liệt kê bảng, đọc nội dung và thực thi các truy vấn SQL.

A Model Context Protocol (MCP) server that enables secure interaction with MySQL databases

1.4k sao260Giấy phép: MITCập nhật 3 tháng trước0 lượt mở

Xem trước

▍

Bạn có thể làm gì với nó

  • Cho phép agent AI truy vấn cơ sở dữ liệu MySQL để lấy dữ liệu người dùng cho ứng dụng web.
  • Xây dựng một agent phân tích lược đồ cơ sở dữ liệu và đề xuất cải tiến tối ưu hóa.
  • Phát triển một script để agent cập nhật an toàn các bản ghi trong cơ sở dữ liệu sản xuất.

Kiểm tra an toàn

An toàn

Không thấy dấu hiệu rủi ro trong các file đã quét.

Quét tự động các file trong repo. Luôn xem lại code trước khi chạy.

Trích từ README

MySQL MCP Server

A Model Context Protocol (MCP) implementation that enables secure interaction with MySQL databases. This server component facilitates communication between AI applications (hosts/clients) and MySQL databases, making database exploration and analysis safer and more structured through a controlled interface.

Note: MySQL MCP Server supports both standard input/output (STDIO) and Streamable HTTP (SSE) transport modes. The SSE mode is recommended for remote/self-hosted deployments.

Deployment options

  • Hosted — Fronteir AI runs the server for you; no local setup required.
  • Local — Smithery installs and runs the server on your own machine.

Features

  • List available MySQL tables as resources
  • Read table contents
  • Execute SQL queries with proper error handling
  • Multi-database mode (Optional MYSQL_DATABASE)
  • SSE/HTTP transport support (MCP_TRANSPORT=sse)
  • SSH Tunneling support
  • Comprehensive schema information
  • Table data sampling
  • Secure database access through environment variables
  • Comprehensive logging

Installation

Manual Installation

pip install mysql-mcp-server

Installing via Smithery

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

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

Installing via Claude Code CLI

claude mcp add --transport stdio designcomputer-mysql_mcp_server uvx mysql_mcp_server

Installing via Autohand Code CLI

autohand mcp add mysql env MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=your_username MYSQL_PASSWORD=your_password MYSQL_DATABASE=your_database uvx mysql_mcp_server

Add --scope project after mcp add to keep the registration in the current workspace. See Autohand Code for current CLI details.

Configuration

Set the following environment variables:

MYSQL_HOST=localhost     # Database host
MYSQL_PORT=3306         # Optional: Database port (defaults to 3306 if not specified)
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_database # Optional: Omit for multi-database mode

# Advanced Configuration
MYSQL_SSL_MODE=DISABLED  # DISABLED, REQUIRED, VERIFY_CA, VERIFY_IDENTITY
MYSQL_CONNECT_TIMEOUT=10 # Timeout in seconds

# Connection behaviour (Optional)
MYSQL_SQL_MODE=TRADITIONAL           # SQL mode applied to the connection (default: TRADITIONAL)

# Compatibility (Optional)
MYSQL_CHARSET=utf8mb4
MYSQL_COLLATION=utf8mb4_unicode_ci
MYSQL_AUTH_PLUGIN=       # e.g., mysql_native_password for older MySQL versions
MYSQL_USE_PURE=false     # Force the pure-Python connector (default: false)
MYSQL_RAISE_ON_WARNINGS=false        # Raise on SQL warnings (default: false)

# SSE Transport (Optional)
MCP_TRANSPORT=stdio      # stdio or sse
MCP_SSE_HOST=0.0.0.0     # Listen on all interfaces (required for Docker/hosting)
PORT=8000                # HTTP port (fallback for MCP_SSE_PORT)
MCP_SSE_ALLOWED_HOSTS=   # Comma-separated allowed Host headers (default: localhost:{port},127.0.0.1:{port})

# SSH Tunneling (Optional)
MYSQL_SSH_ENABLE=false   # Set to true to enable
MYSQL_SSH_HOST=          # SSH jump host
MYSQL_SSH_PORT=22        # SSH port
MYSQL_SSH_USER=          # SSH username
MYSQL_SSH_KEY_PATH=      # Path to SSH private key
MYSQL_SSH_REMOTE_HOST=localhost # Host from the perspective of the jump host
MYSQL_SSH_REMOTE_PORT=3306
MYSQL_LOCAL_PORT=3330

.env file loading

On startup the server automatically loads a .env file via python-dotenv, so for local use you can simply:

cp .env.example .env   # then edit with your credentials

The file is read from the process working directory (and parent directories), which works when you run the server yourself from the project folder.

⚠️ Claude Code / Claude Desktop: these hosts launch the server from their own working directory, so the project's .env will not be found and you'll see Missing required database configuration. Put your MYSQL_* values in the env block of the MCP config (shown in the Usage section below) rather than relying on .env.

Multi-Database Mode

When MYSQL_DATABASE is not set, the server operates in multi-database mode:

  • list_resources returns all user databases (system databases are filtered out)
  • Use fully qualified table names like mydb.mytable in SQL queries
  • Note: Only single SQL statements are supported. Multi-statement queries (e.g., USE db; SELECT ...) are not supported.

Available Tools

execute_sql

Executes any standard SQL query.

  • Arguments: query (string)
  • Features: Supports SELECT, SHOW, DESCRIBE, and DML (INSERT, UPDATE, DELETE). DML operations are marked with a destructive hint.
  • Limitation: Single statements only. Multi-statement queries are not supported.
  • Cross-database: Use database.table notation to query any database regardless of the MYSQL_DATABASE setting.

get_schema_info

Provides detailed metadata about database structures.

  • Arguments: table_name (optional string)
  • Output: Column names, types, nullability, default values, and comments.
  • Cross-database: Pass database.table to query a table outside MYSQL_DATABASE; bare names use the configured database.
  • Identifier rules: Names must contain only alphanumeric characters, underscores, and $ (dots are allowed as a separator between database and table names).

get_table_sample

Fetches a representative sample of data.

  • Arguments: table_name (string), limit (optional integer, max 20)
  • Use Case: Quickly understand data formats and content without fetching large result sets.
  • Cross-database: Pass database.table to sampl
Xem mã nguồn trên GitHub