mysql-mcp-server
mysql-mcp-server
Model Context Protocol (MCP) サーバーで、MCP クライアント(Claude Desktop、Claude Code など)が MySQL データベースに対して SQL を実行できるようにします。ツールは select、insert、update、delete の4つです。
このサーバーは uv 管理の Python パッケージとして動作し、クライアントが起動したサブプロセスとして stdio 経由でクライアントと通信します。
要件
Python 3.11+
到達可能な MySQL サーバー
Related MCP server: Universal Database MCP Server
インストール
uv sync設定
サーバーには6つの値が必要です。各値は環境変数および/または CLI フラグで設定できます(CLI フラグは環境変数より優先されます):
パラメーター | 環境変数 | CLI フラグ | 必須 | デフォルト |
モード |
|
| はい | —( |
ホスト |
|
| はい | — |
ポート |
|
| いいえ |
|
ユーザー |
|
| はい | — |
パスワード |
|
| はい | — |
データベース |
|
| はい | — |
必要な値が欠けている場合、または MYSQL_MODE が readonly/readwrite でない場合、サーバーは stderr にエラーを出力し、起動せずに終了コード1で終了します。
readonlyモード:selectツールのみが許可されます。insert/update/deleteはPERMISSION_DENIEDエラーで拒否されます。readwriteモード: 4つすべてのツールが許可されます。
モードはプロセスの存続期間中固定され、実行時に変更することはできません。
セキュリティ上の推奨事項:
readonlyモードはアプリケーションレベルの保護であり、データベース権限の代わりにはなりません。可能な場合は、readonlyモードの接続先としてSELECT権限のみを持つ MySQL アカウントを使用してください。
.envファイルは必要ですか? いいえ。サーバー自体が.envファイルを読み取ることはありません。読み取るのは CLI フラグと実際のプロセス環境変数(os.environ)だけです。その環境に値をどう渡すかは、実行方法によって異なります:
MCP サーバーとして使用する場合(下記の MCP クライアントから接続する を参照): クライアント(Claude Desktop/Code)がサーバープロセスを起動し、自身の JSON 設定の
envブロックを環境変数として直接注入します。.envファイルは関与せず、必要もありません。ローカル開発・テスト用に CLI を直接実行する場合:
.envは、6つの変数を手動でexportしなくて済むようにするための便宜上のものです。.env.exampleを.envにコピーし、実際の値を入力して、明示的に読み込んでください。自動的に読み込まれることはありません:uv run --env-file .env mysql-mcp-server
.envは git で無視され、決してコミットしてはなりません。
実行
# Environment variables (or use `uv run --env-file .env mysql-mcp-server`, see above)
export MYSQL_MODE=readonly
export MYSQL_HOST=127.0.0.1
export MYSQL_PORT=3306
export MYSQL_USER=app_user
export MYSQL_PASSWORD=secret
export MYSQL_DATABASE=mydb
uv run mysql-mcp-server
# Or, equivalently, via CLI flags
uv run mysql-mcp-server \
--mysql-mode readonly \
--mysql-host 127.0.0.1 \
--mysql-port 3306 \
--mysql-user app_user \
--mysql-password secret \
--mysql-database mydbMCP クライアントから接続する
Claude Desktop / Claude Code
MCP クライアントのサーバー設定にエントリを追加します(例: Claude Desktop の claude_desktop_config.json、Claude Code の場合は .mcp.json):
{
"mcpServers": {
"mysql": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/mysql-mcp-server",
"run",
"mysql-mcp-server"
],
"env": {
"MYSQL_MODE": "readonly",
"MYSQL_HOST": "127.0.0.1",
"MYSQL_PORT": "3306",
"MYSQL_USER": "app_user",
"MYSQL_PASSWORD": "secret",
"MYSQL_DATABASE": "mydb"
}
}
}
}設定を編集したらクライアントを再起動してください。select、insert、update、delete ツールが(MYSQL_MODE に応じて)モデルで利用できるようになります。
ツール
4つのツールはすべて {"query": string, "params"?: array} を受け取り、query 内では常に %s パラメーターバインディングのプレースホルダーを使用します。ユーザー入力を文字列としてクエリにフォーマットすることは決してありません。
ツール | 許可されるモード | クエリの先頭キーワード | 成功時の |
| すべてのモード |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
各ツール呼び出しは、次のいずれかを返します:
{ "success": true, "data": { ... } }{ "success": false, "error": { "code": "...", "message": "..." } }エラーコード: PERMISSION_DENIED、INVALID_QUERY_TYPE、MULTI_STATEMENT_NOT_ALLOWED、DB_CONNECTION_ERROR、DB_EXECUTION_ERROR、INTERNAL_ERROR。
マルチステートメントクエリ(; 区切り)および DDL・権限ステートメント(DROP、TRUNCATE、ALTER、GRANT、CREATE USER など)は常に拒否されます。受け付けられるのは、上記の許可された4種類のステートメントのみだからです。
開発
uv sync
uv run ruff format .
uv run ruff check .
uv run pytest -v
uv run uv build # packaging checkトラブルシューティング
サーバーが終了コード1で即座に終了する: 必要な
MYSQL_*の値が欠けているか、MYSQL_MODEが無効です。どれが原因かは stderr を確認してください。DB_CONNECTION_ERROR: MySQL に到達できないか、認証情報が誤っています。サーバーは実行を継続し、次のツール呼び出し時に接続を再試行します。insert/update/delete での
PERMISSION_DENIED: サーバーがreadonlyモードで実行されています。書き込みを行う場合はMYSQL_MODE=readwriteで再起動してください。
バージョン履歴
0.1.0 — 初期リリース:
select/insert/update/deleteツール、readonly/readwriteモードポリシー、stdio MCP トランスポート、接続切断時の自動再接続・再試行。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that provides read-only access to MySQL databases.451970MIT
- FlicenseNot gradedqualityDmaintenanceA versatile MCP server that connects to multiple relational databases (MySQL, PostgreSQL, Oracle, SQL Server, SQLite) and enables secure read-only SQL query execution and metadata access.4
- AlicenseNot gradedqualityBmaintenanceA MySQL MCP server for local stdio clients, enabling database queries and management with read-only/write modes, audit logging, and configurable security.655MIT
- FlicenseNot gradedqualityCmaintenanceA generic MCP server for MySQL operations, enabling listing databases/tables, describing schemas, running read-only SQL, and optionally executing write SQL with logging.1
Related MCP Connectors
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
MCP server for managing Prisma Postgres.
2,000+ MCP servers read at source level. Know what one does before you connect. Free, no key.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bomsan69/mysql-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server