MCP 設定:Windows パス対応

JSON 内 Windows パスのバックスラッシュエスケープ、%APPDATA% が場所によって展開される/されないこと、PATH 調整が必要なツール。

Operations

詳細な説明

JSON + Windows パス = バックスラッシュ地獄

JSON はリテラルバックスラッシュを 2 つ重ねる必要があります(\\)。Windows パスはバックスラッシュだらけです。組み合わせると "なぜサーバが起動しない?" の定番ハマりポイントになります。

正しいエスケープ

NG(バックスラッシュ 1 個):

"args": ["-y", "@modelcontextprotocol/server-filesystem", "C:\Users\me\Documents"]

これは無効な JSON です。

OK(バックスラッシュをエスケープ):

"args": ["-y", "@modelcontextprotocol/server-filesystem", "C:\\Users\\me\\Documents"]

さらに良い方法 — Node も Python も Windows でフォワードスラッシュを扱えます:

"args": ["-y", "@modelcontextprotocol/server-filesystem", "C:/Users/me/Documents"]

Windows での設定保存先

Claude Desktop が期待するパス:

%APPDATA%\Claude\claude_desktop_config.json

シェル変数 %APPDATA% は通常 C:\Users\<you>\AppData\Roaming に展開されます。これは 保存先パス であり、JSON 内に埋め込む値ではありません。args でパスを書く際は完全な形で書きます。

npx と PATH

Claude Desktop プロセスは最小限の環境を継承します。fnmnvm-windows、その他のバージョンマネージャで Node を入れていると、GUI アプリは PATH に npx が見えず次のエラーになります:

[error] Failed to spawn server: 'npx' is not recognized

対処:

  1. nodejs.org の Node.js を入れる(システムインストーラはユーザ PATH に登録され、GUI アプリからも見える)。
  2. または "command": "npx" を絶対パスに置き換える:"command": "C:\\Program Files\\nodejs\\npx.cmd"

Windows での uvx

fetch サーバは uvx を使います。PowerShell ワンライナーで uv をインストールしたら、ターミナル再起動して uvx --version で確認します。同じ PATH 注意点があり、Claude Desktop の場合は絶対パスが必要なこともあります:"command": "C:\\Users\\me\\.local\\bin\\uvx.exe"

設定ファイルの行末コード

JSON ファイル内では LF(CRLF ではなく)を使います。Notepad++、VS Code、Cursor はいずれもデフォルト LF。古い Windows メモ帳だけが CRLF を入れます。JSON 文字列値内の CRLF は一部クライアントでパーサ異常を引き起こします。

ユースケース

macOS チームと Windows チームが混在するチームに MCP を展開するとき。macOS 側で動く設定をそのまま Windows にコピーすると「npx が見つからない」や「無効な JSON」で詰まる、という典型的なケースの解決に役立ちます。

試してみる — MCP Server Config Generator

フルツールを開く