Настройка MCP в VS Code, Zed и Windsurf: где лежит конфигурация

Три редактора — три разных ответа на один и тот же вопрос. VS Code хранит MCP-серверы под ключом верхнего уровня servers, Zed называет то же самое context_servers, а Windsurf — который со 2 июня 2026 года носит имя Devin Desktop — использует mcpServers, ключ, принятый у большинства остальных клиентов. Ошибётесь с ключом — клиент молча запустится без инструментов и без сообщения об ошибке.

Сам сервер при этом не меняется. Локальный MCP-сервер — это программа, которую запускают через stdio с командой и набором аргументов, и каждый из этих редакторов запускает один и тот же исполняемый файл одинаково. Всё, что вы делаете в каждом редакторе, — регистрируете два значения, command и args, внутри принятой в нём формы конфигурации. В этой статье — точный файл, точный ключ и точный способ проверки для каждого, всё сверено с документацией вендоров 14 августа 2026 года.

Если сам протокол для вас в новинку, начните со словаря — что такое MCP-сервер. Если вы работаете в Claude или Cursor, у них свои инструкции и обычно установка в одну кнопку; эта статья — про три редактора, где так не получится.

Что одинаково везде

Любой локальный MCP-сервер описывается одной и той же парой значений:

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

Это вся полезная нагрузка. Абсолютный путь важнее, чем кажется: редактор запускает процесс сам, часто в обход вашей входной оболочки, поэтому всё, что опирается на PATH или на алиас оболочки, будет работать в терминале и не заработает в клиенте. Копируйте полный путь.

Всё остальное в этой статье — упаковка: в какой файл попадают эти два значения и как называется ключ вокруг них.

VS Code: ключ называется servers, а не mcpServers

VS Code читает конфигурацию MCP из файла с именем mcp.json, который может лежать в одном из двух мест:

На верхнем уровне файла лежит servers, а также необязательные разделы inputs и sandbox. Локальный сервер выглядит так:

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

Тех, кто переходит с другого клиента, удивляют две вещи. Первая: ключ действительно servers — вставленный блок mcpServers не вызывает ошибки, о которой VS Code сообщит, он просто не читает такой ключ. Вторая: VS Code ограничивает один запрос в чате 128 включёнными инструментами, поэтому на машине с большим числом зарегистрированных серверов часть из них придётся отключить, прежде чем ваш станет доступен; делается это кнопкой Configure Tools в представлении Chat.

Есть и переносимая форма: для конфигурации, общей с Agent Host и остальным инструментарием Copilot, VS Code описывает файл .mcp.json в рабочей папке или ~/.copilot/mcp-config.json в профиле пользователя — Agent Host читает их напрямую.

Как проверить: выполните MCP: List Servers из Command Palette, выберите свой сервер и откройте 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 есть и путь через интерфейс: Settings → AI → MCP Servers, затем Add Server → Add Local Server, — он впишет ту же запись за вас. Многие популярные серверы вдобавок упакованы как расширения Zed и ставятся с того же экрана, но сервера, который поставляется внутри настольного приложения, в этом списке не будет — для него нужна ручная запись выше.

Как проверить: откройте Settings → AI → MCP Servers и посмотрите на индикатор рядом со своим сервером. Зелёная точка с подсказкой Server is active означает, что рукопожатие прошло.

Windsurf теперь Devin Desktop, и от этого зависит, где лежит файл

Это та часть, за которой большинство инструкций в сети не успело. 2 июня 2026 года Cognition переименовала Windsurf в Devin Desktop; переименование приехало обычным обновлением по воздуху — без переустановки, без мастера миграции, а тарифы, расширения и сочетания клавиш перешли без изменений. Прежние маркетинговые домены теперь ведут на devin.ai, а документация живёт на docs.devin.ai.

Практическое следствие для MCP: возможных адресатов теперь два, и какой из них верный, зависит от того, с каким агентом вы разговариваете.

Агент Файл конфигурации MCP Ключ верхнего уровня
Cascade (устаревший) ~/.codeium/windsurf/mcp_config.json mcpServers
Devin Local (текущий) ~/.config/devin/mcp_config.json mcpServers

Документация Cascade по-прежнему описывает путь ~/.codeium/windsurf/ — агент оставался доступен до 1 июля 2026 года, чтобы люди могли переходить постепенно. Его преемник, Devin Local, — переписанная на Rust версия, которую Cognition описывает как до 30% более экономную по токенам и с поддержкой субагентов; именно он выбирается по умолчанию в новых вкладках. Devin Local не читает файл Cascade: он использует конфигурацию Devin CLI, где серверы уровня проекта записываются в .devin/mcp_config.json, а личные, с ключами API, — в .devin/mcp_config.local.json, который исключён из git.

Если вы добавили сервер несколько месяцев назад, а агент перестал его видеть, причина, скорее всего, именно эта: с файлом всё в порядке, сменился агент, который его читает.

Ещё одно ограничение, о котором стоит знать: Cascade держит для агента не более 100 инструментов одновременно. Как и в VS Code, переполненная конфигурация может вытеснить инструменты вашего сервера, при этом внешне ничего не сломается.

Как проверить: нажмите значок MCPs в правом верхнем углу панели Cascade, чтобы открыть страницу настроек MCP, — там перечислены инструменты каждого сервера, и каждый можно включить или выключить отдельно. Сервер, у которого не перечислено ни одного инструмента, не запустился.

Сравнение

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 Да Нет Нет
Путь через интерфейс MCP: Add Server Settings → AI → MCP Servers значок MCPs на панели Cascade
Потолок инструментов 128 на запрос не документирован 100 всего (Cascade)

Строка, которую стоит прочитать дважды, — строка про ключ. Любое другое различие само заявляет о себе сообщением об ошибке; неверный ключ — нет.

Чем это отличается от Claude и Cursor

Claude Desktop, Claude Code и Cursor используют mcpServers и держат файл в предсказуемом месте — соответственно claude_desktop_config.json в папке поддержки приложения, ~/.claude.json и ~/.cursor/mcp.json. Именно из-за этой согласованности так много приложений выпускают установщик в одну кнопку для этих трёх — и на них останавливаются.

Три редактора из этой статьи отклоняются каждый по своей оси: VS Code — в имени ключа, Zed — и в имени ключа, и в терминологии, Devin Desktop — в расположении файла после переименования. Ничего сложного здесь нет, но и угадать ничего нельзя — поэтому копирование JSON прямо из README вендора так часто заканчивается клиентом, который запустился без инструментов.

После любой правки этих файлов вручную перезапустите редактор. Большинство клиентов читают конфигурацию MCP при старте, и конфигурация, которая выглядит правильной, но ни разу не была перечитана, — самая частая причина жалобы «ассистент не видит мои данные».

Как это устроено в Speak-Y

Speak-Y поставляет свой MCP-сервер внутри приложения для macOS, поэтому ничего не нужно ставить из npm и не нужно выпускать токен. В разделе Настройки → Интеграции кнопка Установить рядом с найденным клиентом впишет конфигурацию для Claude Code, Claude Desktop и Cursor, каждому в его собственном формате. VS Code, Zed и Devin Desktop в этот список не входят — для них вы копируете те же два значения в описанные выше формы:

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

Добавленный вторым аргументом --read-only запускает сервер без всех инструментов, которые меняют данные, — это полезно, когда вы хотите, чтобы агент редактора искал по расшифровкам, но никогда не трогал теги, имена спикеров и командные каналы. Установка в одну кнопку намеренно не добавляет этот флаг: режим только для чтения — решение, и принимать его нужно явно.

Ассистент получает тринадцать инструментов: пять читающих — поиск по записям, расшифровкам, саммари, задачам, тегам — и восемь меняющих, которые объявлены клиенту как изменяющие данные, поэтому он спрашивает перед вызовом. Чтение происходит локально, по библиотеке на вашей машине; меняющие команды идут через запущенное приложение и попадают в журнал, который вы потом можете прочитать. Сервер бесплатен на любом тарифе.

В редакторе всё это значит больше, чем в чат-приложении, и причина — контекст. Кодовому агенту, который может прочитать, о чём договорились на вторничном созвоне, не нужно, чтобы вы перепечатывали решение в промпт. Тот же довод разобран в статье Cursor и контекст встреч — и он без изменений применим к VS Code и Zed, как только описанная выше конфигурация на месте.

Если сервер зарегистрирован, а ассистент всё равно ничего не находит, причина почти всегда одна из четырёх: редактор не перезапустили, путь устарел после обновления приложения, потолок инструментов заполнен или имя ключа не подходит этому клиенту. Проверяйте в таком порядке, прежде чем что-либо переписывать.

FAQ

Где лежит файл конфигурации MCP в VS Code?

VS Code хранит MCP-серверы в файле mcp.json — это либо .vscode/mcp.json внутри рабочей папки, либо mcp.json в профиле пользователя, который открывается командой MCP: Open User Configuration. В отличие от большинства клиентов, ключ верхнего уровня здесь servers, а не mcpServers.

Какой JSON-ключ отвечает за MCP-серверы в Zed?

Zed использует в файле настроек ключ context_servers, а не mcpServers. Локальный сервер описывается полями command, args и env, удалённый — полями url и headers. Файл открывается действием zed: open settings file, либо сервер добавляется через Settings → AI → MCP Servers.

Windsurf всё ещё называется Windsurf?

Нет. 2 июня 2026 года Cognition переименовала Windsurf в Devin Desktop; переименование пришло обычным обновлением по воздуху, тарифы, расширения и настройки сохранились. Агент Cascade, читавший ~/.codeium/windsurf/mcp_config.json, оставался доступен до 1 июля 2026 года; его преемник Devin Local читает вместо этого файлы конфигурации Devin CLI.

Нужен ли отдельный MCP-сервер для каждого редактора?

Нет. Один и тот же stdio-сервер работает в любом клиенте — различаются только файл, в котором вы его регистрируете, и имя ключа верхнего уровня. Значения command и args вы определяете один раз и вставляете эту же пару в конфигурацию каждого редактора, в его собственном формате.

Как проверить, что MCP-сервер действительно подключился?

У каждого клиента свой индикатор: в VS Code выполните MCP: List Servers из Command Palette и откройте Show Output, чтобы прочитать журнал; в Zed откройте Settings → AI → MCP Servers и найдите зелёную точку с подписью Server is active; в Devin Desktop нажмите значок MCPs на панели Cascade и посмотрите список инструментов сервера.