designcomputer/mysql_mcp_server

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

1,353 ★249 forksPythonUpdated 4d ago

What you need to know

MCP server for secure, structured interaction with MySQL databases — explore schema, sample table data, and execute SQL with error handling, over STDIO or SSE/Streamable HTTP. Supports multi-database mode, SSH tunneling, and SSL/TLS.

Install

pip install mysql-mcp-server
Smithery: npx -y @smithery/cli install designcomputer/mysql-mcp-server --client claude
Claude Code CLI: claude mcp add --transport stdio designcomputer-mysql_mcp_server uvx mysql_mcp_server
Hosted option via Fronteir AI or local via Smithery

Usage

  • Set env vars MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, and optionally MYSQL_PORT, MYSQL_DATABASE (omit DATABASE for multi-database mode); a .env file is auto-loaded from the process working directory
  • Tools: execute_sql (SELECT/SHOW/DESCRIBE/DML), get_schema_info (columns/types/nullability/defaults/comments), get_table_sample (max limit 20)
  • Prompts: explore_database (systematic DB tour) and analyze_table (schema + sample + suggested queries) — available as slash commands in Claude Code
  • For SSE transport set MCP_TRANSPORT=sse, MCP_SSE_HOST, PORT

Key features

  • Multi-database mode when MYSQL_DATABASE is unset — list_resources returns all user DBs; cross-database queries via database.table notation
  • SSE/HTTP transport (MCP_TRANSPORT=sse), SSH tunneling (MYSQL_SSH_*), SSL modes (DISABLED/REQUIRED/VERIFY_CA/VERIFY_IDENTITY)
  • Two guided MCP prompts: explore_database and analyze_table
  • Security: strict identifier whitelist against SQL injection, passwords/SSH keys masked in logs, destructive hint on DML operations
  • Comprehensive schema info and table data sampling without large result sets

Caveats

  • Only single SQL statements are supported — multi-statement queries (e.g. 'USE db; SELECT ...') are not
  • SSE transport has no built-in authentication and binds to 0.0.0.0 by default — put it behind an authenticating reverse proxy (nginx/Caddy/Traefik) if exposed beyond localhost; DNS rebinding noted for HTTP mode
  • Claude Code / Claude Desktop launch from their own working directory, so the project's .env will not be found — put MYSQL_* values in the env block of the MCP config
  • Not intended to be run standalone; debug with the MCP Inspector instead
  • Always use a dedicated MySQL user with least-privilege permissions
Platforms: macOS · Linux · WindowsClients: Claude Desktop · Claude Code · VS Code · Autohand Code · Smithery
Documentation ↗

Reviewed 2026-08-07

Topics

aiclaudeclaude-codedatabasellmmcpmcp-servermodel-context-protocolmysql
View on GitHub ↗
Stars
1,353★
Forks
249
Language
Python
License
MIT
Created
2024-12-03
Last push
2026-08-02