😊
WSL上のMCPサーバーをWindowsから動かすためのconfig設定
WSL上のMCPサーバーをWindowsから動かすためのconfig設定
はじめに
最近話題のMCPサーバーがありますね。それをwindowsのWSL2で進めていたところ、Claude Desktopの設定で詰まったのでメモをのこします。内容はかなり簡単です~。clineでも一緒です。
同じような状況で困っている方の参考になればと思い、解決方法を共有します。
環境
- Windows 11
- WSL2 (Ubuntu)
- Claude Desktop App
遭遇した問題
MCPサーバーをWSLに置いて実行しようとしたら、こんなエラーが出ました:
Error: spawn /home/hy/src/github.com/haruotsu/mcp-tutorials/mcpserver ENOENT
最初の設定はこんな感じでした:
{
"mcpServers": {
"sisoku-enzan": {
"command": "/home/hy/src/piyo/fuga/mcp-tutorials/mcpserver",
"args": [],
"env": {},
"disabled": false
}
}
}
なぜエラーが出たのか
WindowsとWSLでは、ファイルの場所の指定方法(パス)が異なります:
- Windowsは
C:\Users\...
という形式 - WSLは
/home/...
という形式
そのため、Windowsが直接WSLのパスを理解できず、「そんなファイルないよ!」というエラーになっていました。
解決方法
wsl
コマンドを使って、WindowsからWSLのプログラムを実行するように設定を変更します:
{
"mcpServers": {
"sisoku-enzan": {
"command": "wsl",
"args": [
"-e",
"/home/hy/src/piyo/fuga/mcp-tutorials/mcpserver"
],
"env": {},
"disabled": false
}
}
}
ポイント
-
command
にwsl
を指定 -
args
に-e
フラグとWSL内のパスを指定
なぜこれで解決できるのか
この設定が機能する理由は、実行の流れにあります:
- Claudeアプリ(Windows)が
wsl
コマンドを実行 -
wsl
コマンドがWSL環境を起動 -
-e
フラグにより、WSL環境内でパスが解釈される - WSL環境内でMCPサーバーが実行される
つまり:
- WindowsはWSLのパスを直接解釈する必要がない
- パスの解釈はWSL環境内で行われる
- WSLとWindowsの間の「翻訳」を
wsl
コマンドが担当
まとめ
WSL上のプログラムをWindowsから実行する場合は、wsl
コマンドを介することで、異なるファイルシステム間の橋渡しができるようになるのでした~~~!
Discussion