VS Code・Zed・WindsurfのMCP設定 — 設定ファイルはどこにあるか

3つのエディタが、同じ問いに3つの違う答えを返します。VS CodeはMCPサーバーを servers という最上位のキーの下に置き、Zedは同じものを context_servers と 呼び、Windsurf(2026年6月2日以降はDevin Desktopという名前です)は、ほかの 多くのクライアントが使う mcpServers を使います。キーを間違えると、 クライアントはツールを1つも持たないまま、エラーも出さずに静かに起動します。

サーバー自体は変わりません。ローカルのMCPサーバーは、コマンドといくつかの 引数を指定してstdio越しに起動されるプログラムであり、これらのエディタは どれも同じバイナリを同じやり方で実行します。各エディタで実際にやっているのは、 commandargs という2つの値を、そのエディタ自身の設定の形の中に登録する ことだけです。この記事では、それぞれについて正確なファイル、正確なキー、 正確な確認手順を示します。いずれも2026年8月14日に各ベンダーのドキュメントで 確認しました。

プロトコル自体が初めてなら、まず MCPサーバーとは何かで語彙を押さえて ください。ClaudeやCursorをお使いの場合は、それぞれに専用の手順があり、 たいていはワンクリックでインストールできます。この記事は、そうではない3つに ついてのものです。

どこでも同じ部分

ローカルのMCPサーバーは、どれも同じ2つの値で記述されます。

command = "/absolute/path/to/the/executable"
args    = ["--some-flag"]

伝えるべき中身はこれだけです。絶対パスであることは見た目以上に重要です。 プロセスを起動するのはエディタ自身であり、多くの場合ログインシェルを 経由しません。そのため PATH やシェルのエイリアスに依存するものは、 ターミナルでは動いてもクライアントでは動きません。フルパスをコピーして ください。

この記事の残りはすべて梱包の話です。つまり、この2つの値をどのファイルに 入れるのか、そしてそれを囲むキーが何という名前なのか、という話です。

VS Code: キーは mcpServers ではなく servers

VS CodeはMCPの設定を mcp.json という名前のファイルから読みます。置き場所は 2か所あります。

ファイルの最上位には servers があり、任意で inputssandbox の セクションが置けます。ローカルサーバーは次のような形です。

{
  "servers": {
    "my-server": {
      "type": "stdio",
      "command": "/absolute/path/to/the/executable",
      "args": ["--mcp"]
    }
  }
}

ほかのクライアントから移ってきた人が驚く点が2つあります。1つめは、キーが 本当に servers だということです。mcpServers のブロックを貼り付けても VS Codeがエラーとして知らせてくれるわけではなく、単に読まないキーとして 無視されます。2つめは、VS Codeが1回のチャットリクエストで有効にできる ツールを128個に制限していることです。多くのサーバーを登録したマシンでは、 あなたのサーバーに手が届く前にいくつかをオフにする必要があるかもしれません。 それを行うのは Chat ビューの Configure Tools ボタンです。

移植しやすい形もあります。Agent HostやほかのCopilot系ツールと共有する設定 として、VS Codeはワークスペースの .mcp.json またはユーザーの ~/.copilot/mcp-config.json を案内しており、Agent Hostはこれをそのまま 読みます。

確認するには: Command Palette から MCP: List Servers を実行し、 自分のサーバーを選んで Show Output でログを読みます。起動に失敗した サーバーはそこにその旨を出し、たいていは実行できなかったパスも一緒に 表示します。

Zed: 同じ考え方に別の名前

ZedはMCPサーバーをコンテキストサーバーと呼び、設定のキーもそれに従って context_servers になっています。パスを探し回るのではなく zed: open settings file アクションで設定ファイルを開き、次を追加します。

{
  "context_servers": {
    "my-server": {
      "command": "/absolute/path/to/the/executable",
      "args": ["--mcp"],
      "env": {}
    }
  }
}

リモートサーバーは同じブロックの中で url と任意の headers を使います。 つまり context_servers は、両方のトランスポートが同居する唯一の場所です。 ZedにはUIからの経路もあります。Settings → AI → MCP Servers を開き、 Add Server → Add Local Server を選ぶと、同じ項目を代わりに書き込んで くれます。人気のあるサーバーの多くはZedの拡張機能としても配布されていて、 その画面からインストールできますが、デスクトップアプリに同梱されている サーバーはその一覧には出てきません。その場合は上の手動の記述が正しい道です。

確認するには: Settings → AI → MCP Servers を開き、自分のサーバーの 隣にあるインジケーターを見てください。Server is active というツールチップ 付きの緑の点が出ていれば、ハンドシェイクは成功しています。

WindsurfはDevin Desktopになり、ファイルの場所も変わりました

ウェブ上のガイドの多くが追いつけていないのがこの部分です。Cognitionは 2026年6月2日にWindsurfを Devin Desktop へ改称しました。通常の自動更新 として配信され、再インストールも移行ウィザードもなく、プラン、拡張機能、 キーバインドはそのまま引き継がれています。旧来のマーケティング用ドメインは 現在 devin.ai へリダイレクトされ、ドキュメントは docs.devin.ai に あります。

MCPにとっての実務上の帰結は、書き込み先の候補が2つになったことです。どちらが 正しいかは、話しかけている相手のエージェントによって決まります。

エージェント MCPの設定ファイル 最上位のキー
Cascade(旧) ~/.codeium/windsurf/mcp_config.json mcpServers
Devin Local(現行) ~/.config/devin/mcp_config.json mcpServers

Cascadeのドキュメントは今も ~/.codeium/windsurf/ のパスを説明しています。 段階的に移行できるよう、2026年7月1日まで利用可能な状態が保たれていました。 後継の Devin Local はRustで書き直されたもので、Cognitionはトークン効率が 最大30%向上し、サブエージェントに対応していると説明しています。新しいタブでの 既定のエージェントもこちらです。Devin LocalはCascadeのファイルを読みません。 Devin CLIの設定を使い、プロジェクト単位のサーバーは .devin/mcp_config.json に、APIキーを含む個人用のものはgitignoreされた .devin/mcp_config.local.json に入れます。

数か月前に追加したサーバーをエージェントが見なくなったなら、理由はこれで あることがほとんどです。ファイルは壊れていません。それを読むエージェントが 変わったのです。

もう1つ知っておく価値のある上限があります。Cascadeは同時に扱えるツールを 合計100個に制限します。VS Codeと同じく、混み合った設定は、どこも壊れて いないように見えたまま、あなたのサーバーのツールを手の届かない場所へ 押し出すことがあります。

確認するには: Cascadeパネル右上の MCPs アイコンをクリックしてMCPの 設定ページを開きます。そこには各サーバーのツールが一覧され、個別に オン・オフできます。ツールが1つも並んでいないサーバーは起動していません。

並べて比べる

VS Code Zed Devin Desktop(Windsurf)
ファイル .vscode/mcp.json またはユーザーの mcp.json 設定ファイル(zed: open settings file ~/.codeium/windsurf/mcp_config.json(Cascade)または ~/.config/devin/mcp_config.json(Devin Local)
キー servers context_servers mcpServers
type: stdio の要否 必要 不要 不要
UIからの経路 MCP: Add Server Settings → AI → MCP Servers Cascadeパネルの MCPs アイコン
ツールの上限 1リクエストあたり128 記載なし 合計100(Cascade)

二度読む価値があるのはキーの行です。ほかの違いはすべてエラーメッセージという 形で自ら名乗り出ますが、キーの間違いだけは名乗りません。

ClaudeやCursorとの違い

Claude Desktop、Claude Code、Cursorはいずれも mcpServers を使い、ファイルの 場所も予想しやすいところにあります。それぞれアプリのサポートフォルダ内の claude_desktop_config.json~/.claude.json~/.cursor/mcp.json です。 多くのアプリがこの3つにだけワンクリックのインストーラーを用意して、そこで 止まっているのは、この一貫性があるからです。

この記事の3つのエディタは、それぞれ別の軸で外れています。VS Codeはキーの 名前で、Zedはキーの名前と語彙の両方で、Devin Desktopは改称に伴うファイルの 場所で外れています。どれも難しくはありませんが、どれも推測はできません。 ベンダーのREADMEからJSONをそのままコピーすると、ツールを1つも持たない クライアントができあがるのは、そのためです。

これらのファイルを手で編集したら、エディタを再起動してください。ほとんどの クライアントはMCPの設定を起動時に読みます。正しそうに見えるのに一度も 読み直されていない設定は、「アシスタントが自分のデータを見てくれない」という 症状の最も多い原因です。

Speak-Yではどうなっているか

Speak-YはMCPサーバーをmacOSアプリの中に同梱しているので、npmから入れるものは なく、発行するトークンもありません。設定 → 連携で、検出されたクライアント の隣にある インストール を押すと、Claude Code、Claude Desktop、Cursorの 設定を、それぞれ自身の形式で書き込みます。VS Code、Zed、Devin Desktopはその 一覧にはありません。これらについては、同じ2つの値を上で示した形に コピーしてください。

command = "/Applications/Speak-Y.app/Contents/MacOS/Speak-Y"
args    = ["--mcp"]

2つめの引数として --read-only を加えると、データを変更するツールを一切 持たない状態でサーバーが起動します。エディタのエージェントに文字起こしを 検索させたいが、タグや話者名、チームチャンネルには決して触れさせ たくない、という場合に役立ちます。ワンクリックのインストールはこのフラグを 意図的に付けません。読み取り専用は1つの判断であり、判断は明示的に下すべき だからです。

その結果アシスタントが手にするのは13のツールです。読み取るものが5つ — 録音、文字起こし、要約、アクションアイテム、タグを横断して検索するもの — と、 何かを変更するものが8つで、後者はデータを変更するものとしてクライアントに 申告されるため、呼び出す前に確認が入ります。読み取りはあなたのマシン上の ライブラリに対してローカルに行われ、変更するコマンドは起動中のアプリを経由し、 あとから読める記録に残ります。サーバーはどのプランでも無料です。

これがチャットアプリよりもエディタで効いてくる理由は、コンテキストにあります。 火曜日の打ち合わせで実際に何が決まったのかを読めるコーディングエージェントは、 その決定をあなたがプロンプトに打ち直すことを必要としません。同じ論点は Cursorと会議のコンテキストで 扱っており、上の設定さえ入っていれば、VS CodeとZedにもそのまま当てはまります。

サーバーを登録したのにアシスタントが何も見つけられないなら、原因はほぼ必ず 次の4つのどれかです。エディタを再起動していない、アプリの更新後にパスが古く なっている、ツールの上限が埋まっている、そのクライアントに対してキーの名前が 間違っている。何かを書き直す前に、この順で確認してください。

FAQ

VS CodeのMCP設定ファイルはどこにありますか

VS CodeはMCPサーバーを mcp.json というファイルに保存します。ワークスペース内の .vscode/mcp.json か、ユーザープロファイル内の mcp.json のどちらかで、後者は MCP: Open User Configuration コマンドで開きます。多くのクライアントと違い、最上位のキーは mcpServers ではなく servers です。

ZedでMCPサーバーを指定するJSONのキーは何ですか

Zedは設定ファイルで mcpServers ではなく context_servers を使います。ローカルサーバーの項目は command、args、env を取り、リモートサーバーは url と headers を取ります。ファイルは zed: open settings file アクションで開くか、Settings → AI → MCP Servers から追加してください。

Windsurfは今もWindsurfという名前ですか

いいえ。Cognitionは2026年6月2日にWindsurfをDevin Desktopへ改称しました。通常の自動更新として配信され、プラン、拡張機能、設定はそのまま引き継がれています。~/.codeium/windsurf/mcp_config.json を読んでいたエージェントCascadeは2026年7月1日まで利用できました。後継のDevin Localは、代わりにDevin CLIの設定ファイルを読みます。

エディタごとに別のMCPサーバーが必要ですか

いいえ。同じstdioサーバーのバイナリがどのクライアントでも動きます。違うのは、それを登録するファイルと最上位のキーの名前だけです。commandとargsは一度決めれば、その同じ2つの値を各エディタ自身の設定の形に貼り付けるだけで済みます。

MCPサーバーが実際に接続できたかをどう確認しますか

クライアントごとに確認方法が違います。VS CodeではCommand PaletteからMCP: List Serversを実行し、Show Outputでログを読みます。ZedではSettings → AI → MCP Serversを開き、Server is activeと表示される緑の点を探します。Devin DesktopではCascadeパネルのMCPsアイコンを開き、サーバーのツールが一覧に出ているかを見ます。