
Claude CodeでMySQL MCPが「Connection Closed」になる原因と対処法|Windows(nvm4w)環境で起きる接続エラーを徹底解説
Claude CodeでMySQL MCPサーバーを使おうとした際、「接続は成功しているのにクエリを実行するとConnection Closedになる」という不可解なトラブルに遭遇するケースが増えている。特にWindows環境でnvm4wを利用している場合、この問題は再現しやすい。
一見するとデータベース接続やSSHトンネルの問題に思えるが、実際にはClaude CodeのMCPブリッジとNodeプロセスの相互動作に原因が潜んでいることが多い。本記事では、このエラーが発生する典型的な環境、原因の可能性、そして実践的な解決策を詳しく解説する。
Claude CodeのMCP MySQL接続で発生する「Connection Closed」問題
Claude CodeではMCP(Model Context Protocol)を利用することで、外部ツールやデータベースをAIと連携させることができる。MySQL用のMCPサーバーを導入すれば、AIが直接データベースへクエリを送ることも可能になる。
しかしWindows環境で構築した場合、次のような現象が発生することがある。
・MCP一覧では「connected」と表示される
・サーバー自体は起動している
・クエリ実行時のみエラーが発生する
・エラー内容は「MCP error -32000: Connection closed」
つまり接続確認は成功しているのに、実際の処理時にプロセスが切断されるという状態だ。
この挙動はデータベース側の問題ではなく、MCPサーバーの実行プロセスが途中で終了している可能性が高い。
再現されやすい環境構成
このトラブルは特定の構成で発生しやすい。
代表的な例として以下の環境が挙げられる。
・OS:Windows
・Node管理:nvm4w
・Nodeバージョン:比較的新しいバージョン
・MySQL接続:AWS RDS
・接続方式:SSHトンネル
・ローカルポート:3307
・MCPサーバー:mcp-server-mysql
さらに確認ポイントとして重要なのが、次のテストが正常に動作する点である。
・NodeスクリプトからのMySQL接続
・NavicatなどGUIツールからの接続
・SSHトンネルの安定性
これらがすべて問題ない場合、ネットワークや認証ではなく「Claude Code側の実行環境」が原因である可能性が高い。
実は多い「子プロセス終了」問題
Claude CodeはMCPサーバーを内部で子プロセスとして起動する仕組みになっている。このため、Windows環境では以下のような問題が発生することがある。
・Node実行パスが見つからない
・環境変数が引き継がれていない
・シェル環境の違い
・パス解決エラー
特にnvm4wを利用している場合、Nodeの実体パスがユーザー環境変数に依存していることが多い。その結果、Claude CodeがMCPサーバーを起動する際にNodeモジュールを正しく読み込めないケースがある。
この状態でも一度接続は成功するが、ツール呼び出し時にプロセスがクラッシュし、結果としてConnection Closedエラーになる。
見落とされがちな設定ポイント
この問題を解決するためには、いくつかの重要な設定を確認する必要がある。
まず最も重要なのが環境変数の明示設定だ。
Claude Codeの設定ファイルでは、以下のような環境変数を指定することで動作が安定することがある。
・PATH
・NODE_PATH
特にNODE_PATHには、nvm4wのnode_modulesディレクトリを含める必要がある。
次に確認したいのがMCPサーバーのビルド状態である。
distフォルダが破損している場合、MCPプロセスは起動直後に終了することがある。そのため一度ビルドを完全にやり直すのが有効だ。
一般的には次の手順で解決するケースが多い。
・distフォルダ削除
・依存パッケージ再インストール
・再ビルド
これだけで問題が消えることも珍しくない。
SSHトンネルが原因ではない理由
多くのユーザーが最初に疑うのがSSHトンネルの不安定さだ。しかし実際には、このエラーはトンネルとは無関係な場合が多い。
判断基準として有効なのが、データベースクライアントからの接続確認である。
もしNavicatなどのツールで次の条件が満たされているなら、トンネルは正常と考えてよい。
・localhost接続が可能
・クエリ実行ができる
・接続が切断されない
この状態でClaude Codeだけがエラーを出す場合、原因はMCPプロセスの内部エラーと考えるのが自然だ。
Windows環境特有の落とし穴
LinuxやMacでは問題なく動作するのに、Windowsだけ不安定になるケースも報告されている。
その理由は主に次の3つである。
・シェルの違い
・パス区切りの違い
・プロセス管理の違い
特にNodeの実行パスがシステムPATHではなくユーザーPATHに存在する場合、Claude Codeが正しく解決できないことがある。
この場合はNodeの絶対パスを明示的に指定することで改善する可能性が高い。
安定運用のための実践的対策
Windows環境でClaude CodeとMySQL MCPを安定させるためには、次の対策が有効である。
・Nodeパスを明示指定
・NODE_PATHの追加
・MCPサーバーの再ビルド
・Nodeバージョンの安定版利用
・ログ出力でクラッシュ原因を確認
特にNodeの最新バージョンはMCPツールと相性問題が出る場合もあるため、LTSバージョンを使うことで安定するケースもある。
まとめ
Claude Codeで発生する「Connection Closed」エラーは、データベースやSSHトンネルの問題ではなく、MCPサーバーのプロセス終了が原因であるケースが多い。
特にWindowsとnvm4wの組み合わせでは、環境変数やNodeパスの設定が大きく影響する。接続確認が成功しているのにクエリ実行で落ちる場合は、まずClaude Codeが起動しているNode環境を疑うべきだ。
MCPはAIと外部システムを連携させる強力な仕組みだが、安定動作には環境構築の細かな調整が欠かせない。今回紹介したポイントをチェックすれば、多くのConnection Closed問題は解決できるはずだ。