mysql-mcp-server-all
A read-only MySQL MCP server supporting stdio, SSE, and Streamable HTTP transports, enabling secure querying and schema inspection of MySQL databases from MCP clients.
README
mysql-mcp-server-all
A read-only MySQL MCP server that speaks stdio, SSE, and Streamable HTTP — one binary, three transports.
Why this project exists
We needed to expose a MySQL database as an MCP server to Dify, whose "MCP (HTTP)" integration form only supports the Streamable HTTP protocol.
We evaluated the existing ecosystem:
| Project | Transport | Dify "HTTP" form |
|---|---|---|
| benborla/mcp-server-mysql | stdio; remote HTTP mode is stateless & incomplete | ❌ |
| dpflucas/mysql-mcp-server | stdio only | ❌ |
| designcomputer/mysql_mcp_server | stdio + SSE | ❌ |
| mysql-mcp-server-all (this project) | stdio + SSE + Streamable HTTP | ✅ |
This project is a derived / enhanced work of designcomputer/mysql_mcp_server (MIT). It keeps the same familiar toolset and adds the missing transport — so the same server can serve Claude Code / opencode over stdio, Cherry Studio over SSE, and Dify over Streamable HTTP.
Features
- Three transports via
MCP_TRANSPORT:stdio(default) /sse/streamable-http - Read-only by design: only
SELECT / SHOW / DESCRIBE / EXPLAIN / WITH - Single & multi database mode: omit
MYSQL_DATABASEto query any schema viadb.table - Identifier whitelist against SQL injection in schema/sample tools
- Optional Bearer-token auth for Streamable HTTP (recommended when binding beyond loopback)
- Works from Dify, Cherry Studio, Claude Code, opencode and any MCP client
Install
Requires Python 3.10+.
# via uv (recommended)
uvx --from mysql-mcp-server-all mysql-mcp-server-all
# or pip
pip install mysql-mcp-server-all
Note: this repository is GitHub-only for now. The PyPI name
mysql-mcp-server-allis reserved for future publishing.
Quick start
# stdio (Claude Code / opencode / Cherry Studio local)
MYSQL_HOST=127.0.0.1 MYSQL_USER=root MYSQL_PASSWORD=secret \
MYSQL_DATABASE=my_db mysql-mcp-server-all
# Streamable HTTP (Dify) with token auth
MYSQL_HOST=127.0.0.1 MYSQL_USER=root MYSQL_PASSWORD=secret \
MYSQL_DATABASE=my_db MCP_TRANSPORT=streamable-http \
MCP_HTTP_HOST=127.0.0.1 MCP_HTTP_PORT=8000 MCP_HTTP_TOKEN=my-token \
mysql-mcp-server-all
# -> http://127.0.0.1:8000/mcp
Environment variables
| Variable | Default | Description |
|---|---|---|
MYSQL_HOST |
(required) | Database host |
MYSQL_PORT |
3306 |
Database port |
MYSQL_USER |
(required) | Database user |
MYSQL_PASSWORD |
`` | Database password |
MYSQL_DATABASE |
(none) | Default database. Omit → multi-database mode |
MYSQL_CONNECT_TIMEOUT |
10 |
Connection timeout (seconds) |
MCP_TRANSPORT |
stdio |
stdio | sse | streamable-http |
MCP_HTTP_HOST |
127.0.0.1 |
Listen host for sse / streamable-http |
MCP_HTTP_PORT |
8000 |
Listen port for sse / streamable-http |
MCP_HTTP_TOKEN |
(none) | Bearer token for streamable-http |
Transports
| Transport | Endpoint | Clients |
|---|---|---|
stdio |
— | Claude Code, opencode, Cursor |
sse |
http://host:port/sse |
Cherry Studio (SSE), Claude Desktop |
streamable-http |
http://host:port/mcp |
Dify (HTTP), Cherry Studio (HTTP) |
Client configuration
Dify (recommended: Streamable HTTP)
MCP type: HTTP
Endpoint URL: http://127.0.0.1:8000/mcp
Auth header: Authorization: Bearer <MCP_HTTP_TOKEN> (if set)
Dynamic client registration: leave disabled
Dify self-hosted in Docker: use
http://host.docker.internal:8000/mcp, bindMCP_HTTP_HOST=0.0.0.0, and add the target to Dify's SSRF proxy allowlist (SSRF_PROXY_ALLOW_PRIVATE_IPS/SSRF_PROXY_ALLOW_PRIVATE_DOMAINSin Dify'sdocker/.env) — Dify blocks private networks by default.
Cherry Studio
Type: SSE → URL http://127.0.0.1:8000/sse
or HTTP → URL http://127.0.0.1:8000/mcp (streamable-http)
Claude Code / opencode (stdio)
{
"mcpServers": {
"mysql": {
"command": "mysql-mcp-server-all",
"env": {
"MYSQL_HOST": "127.0.0.1",
"MYSQL_USER": "root",
"MYSQL_PASSWORD": "secret",
"MYSQL_DATABASE": "my_db"
}
}
}
}
opencode: use
"environment"(not"env") inopencode.json.
Tools
| Tool | Arguments | Description |
|---|---|---|
execute_sql |
query |
Run a read-only SQL query (SELECT/SHOW/DESCRIBE/EXPLAIN/WITH). Single statement. Returns JSON rows |
get_schema_info |
table_name |
Column metadata (SHOW FULL COLUMNS). Accepts db.table |
get_table_sample |
table_name, limit (≤20) |
Sample rows from a table. Accepts db.table |
Security
- Read-only enforced in
execute_sql— write/DDL queries are rejected - Identifier whitelist — only alphanumeric,
_,$, and one.separator - Bind loopback by default (
127.0.0.1) - Use a least-privilege MySQL user — never
rootwith full grants - Add token auth (
MCP_HTTP_TOKEN) whenever you bind0.0.0.0 - SSE transport has no built-in auth — keep it behind a loopback or a reverse proxy with auth (nginx / Caddy)
Credits & License
- Derived from designcomputer/mysql_mcp_server (MIT) — same toolset, extended with unified stdio/SSE/Streamable HTTP transports.
- MIT License, see LICENSE.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
E2B
Using MCP to run code via e2b.