Чтобы подключить MCP-сервер к Claude, обычно достаточно установить сам сервер, прописать его в claude_desktop_config.json в секции mcpServers, перезапустить Claude Desktop и проверить вызов инструмента в чате. Самый предсказуемый вариант — локальный сервер, запускаемый через stdio; если у вас только веб-версия Claude, закрытая корпоративная среда, сервер с нестандартной аутентификацией или сетевой транспорт без поддержки локального запуска, этот способ может не подойти без отдельной адаптации.
MCP, или Model Context Protocol, — это способ дать модели доступ к внешним инструментам и данным через стандартизированный интерфейс. Практический смысл простой: Claude видит не «плагин вообще», а конкретный сервер с объявленными возможностями. Базовое описание протокола есть в официальном введении Model Context Protocol, а общую документацию Anthropic удобнее держать под рукой на docs.anthropic.com.
Короткий ответ
Если нужен рабочий минимум, делайте так: подготовьте команду запуска MCP-сервера, убедитесь, что она работает вне Claude, откройте пользовательский конфиг Claude Desktop, добавьте объект сервера в mcpServers, затем полностью перезапустите приложение. После этого дайте Claude задачу, которая точно требует нового инструмента: например, прочитать каталог, открыть файл или сходить во внешний API через ваш сервер.
Метод подходит, когда вы контролируете локальную машину, можете редактировать конфиг и понимаете, какой именно доступ должен получить сервер. Он не подходит как «быстрый хак» для сред с жесткими политиками безопасности, для сценариев без локального приложения Claude Desktop или когда сервер ожидает иной транспорт и не умеет нормальный обмен по stdin/stdout.
| Сценарий | Как запускать | Когда выбирать |
|---|---|---|
| Пакет Node.js | npx -y ... |
Когда нужен готовый сервер из экосистемы MCP и вы не хотите собирать бинарник. |
| Python-скрипт | python /absolute/path/server.py |
Когда сервер внутренний, короткий и его проще поддерживать как исходник. |
| Готовый бинарник | /absolute/path/server-binary |
Когда нужен максимально предсказуемый запуск без зависимости от PATH и менеджеров пакетов. |
Критерий выбора простой: берите тот формат запуска, который дает минимальное число внешних зависимостей, не требует интерактивного логина и стабильно работает по stdio. Для первой настройки бинарник или готовый пакет обычно надежнее, чем обвязка через shell-скрипты.
Что понадобится
- Claude Desktop на поддерживаемой ОС. Ниже описан именно локальный сценарий, а не веб-интерфейс.
- MCP-сервер или хотя бы точная команда его запуска.
- Среда выполнения, если сервер написан не как самостоятельный бинарник: чаще всего Node.js или Python.
- Доступ к пользовательскому конфигу Claude Desktop.
- Понимание прав доступа: к каким каталогам, API или внутренним системам серверу можно обращаться.
- Текстовый редактор, который не ломает JSON.
Типовые пути к конфигу такие, но перед правкой все равно полезно свериться с текущей документацией Anthropic, потому что структура каталогов между версиями может меняться.
| ОС | Типичный путь | Комментарий |
|---|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
Перед правкой лучше полностью закрыть приложение. |
| Windows | %APPDATA%Claudeclaude_desktop_config.json |
Если команда работает в терминале, но не в Claude, проверьте PATH для GUI-приложений. |
Если ваш MCP-сервер обращается к внешнему API, заранее подготовьте токены и решите, как передавать их в процесс. Для этого почти всегда лучше использовать env, а не аргументы командной строки: так меньше риск утечки в историю команд, логи и снимки экрана.
Пошаговый план
1. Проверьте, что сервер действительно можно запускать через stdio
Claude Desktop ожидает, что MCP-сервер можно стартовать как процесс и общаться с ним по стандартным потокам. Это значит, что сервер не должен выводить баннеры, подсказки или отладочные сообщения в stdout; такие вещи должны идти в stderr. Если сервер рассчитан только на HTTP, WebSocket или другой транспорт, сначала понадобится совместимая обвязка.
Проверяйте команду отдельно от Claude. Для локального файлового сервера распространенный пример выглядит так: npx -y @modelcontextprotocol/server-filesystem /absolute/path/to/workdir. Если вы используете собственный сервер, команда может быть любой: python /absolute/path/server.py или /absolute/path/server-binary.
Если процесс мгновенно завершается с ошибкой, не переходите к следующему шагу. Сначала добейтесь предсказуемого старта вручную. Claude не исправит проблемы окружения, прав или отсутствующих зависимостей.
2. Найдите и откройте конфиг Claude Desktop
Откройте claude_desktop_config.json. Если файла еще нет, создайте его как обычный JSON-файл. Важно не использовать JSONC, не оставлять висячие запятые и не вставлять комментарии: конфиг должен быть строгим JSON.
Если у вас уже есть другие MCP-серверы, не затирайте существующий объект. Добавляйте новый сервер отдельным ключом внутри mcpServers.
3. Добавьте запись о сервере
Базовая структура выглядит так: имя сервера — это произвольный ключ, а внутри него вы задаете команду, аргументы и при необходимости переменные окружения.
{ "mcpServers": { "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/absolute/path/to/workdir"], "env": {} } } }
Что здесь важно на практике:
- Имя сервера вроде
filesystem— это просто локальный идентификатор в конфиге. - command должен указывать на реально доступный исполняемый файл. Если есть сомнения, используйте абсолютный путь к бинарнику.
- args передаются как массив. Не склеивайте их в одну строку.
- env используйте для токенов и переменных окружения, например
{ "API_KEY": "..." }. - Пути указывайте абсолютные. Относительные пути — частая причина молчаливых сбоев.
Если серверу нужен доступ только к одному рабочему каталогу, ограничьте его этим каталогом сразу, а не давайте корень диска. Для файловых серверов это особенно важно: безопаснее сначала выдать минимум прав, а потом расширить их, если действительно нужно.
4. Полностью перезапустите Claude Desktop
После правки конфига просто закрыть окно иногда недостаточно. Завершите приложение полностью и запустите его заново, чтобы оно перечитало конфигурацию и заново подняло процессы MCP-серверов.
Если у сервера есть внешние зависимости, например системные переменные или сетевые разрешения, убедитесь, что они доступны именно процессу Claude, а не только вашему терминалу. Это особенно заметно на macOS и Windows, где GUI-приложения могут получать другой набор переменных окружения, чем интерактивная shell-сессия.
5. Проверьте сервер в реальной задаче
Лучшая проверка — не абстрактный вопрос «видишь ли ты инструмент?», а конкретная, детерминированная задача. Для файлового сервера подойдет запрос вроде: «Покажи список файлов в каталоге проекта и открой README.md». Для API-сервера — короткий запрос, который приводит к одному известному вызову.
Если Claude показывает шаг использования инструмента, просит подтверждение доступа или возвращает результат из внешней системы, значит связка работает. Если модель отвечает общими словами и не делает вызов, проблема обычно в том, что сервер не зарегистрировался, не объявил инструмент или не стартовал после перезапуска.
Типичные ошибки
- Неверный JSON. Лишняя запятая, неэкранированный символ или комментарий ломают загрузку всего конфига.
- Команда существует только в терминале. В GUI-приложении переменная
PATHможет отличаться. Еслиnpx,nodeилиpythonне находятся, задайте абсолютный путь. - Сервер пишет логи в stdout. Для
stdio-транспорта это критично: служебный мусор ломает протокол. Логи должны идти вstderr. - Используются относительные пути. Claude может запускать процесс из другого рабочего каталога, поэтому относительные пути начинают указывать не туда.
- Неверные права доступа. Сервер стартует, но не может открыть каталог, файл, сокет или внешний API.
- Секреты передаются в args. Это неудобно и небезопасно. Используйте
envили механизм секретов самого сервера, если он есть. - Перепутан транспорт. Некоторые серверы рассчитаны на сетевой режим и не будут работать как дочерний процесс без адаптера.
- Попытка настроить все сразу. Сначала подключите один простой сервер без токенов и сложной аутентификации, потом добавляйте остальные.
Отдельно стоит помнить о shell-обвязках. Команда вроде bash -lc "..." иногда помогает быстро обойти PATH, но делает поведение менее прозрачным. Для постоянной конфигурации надежнее прямой вызов бинарника или интерпретатора с явными аргументами.
Как проверить результат
- Проверьте ручной запуск. Команда сервера должна стартовать без ошибки вне Claude.
- Проверьте конфиг JSON. Если сомневаетесь, прогоните файл через любой строгий валидатор JSON локально.
- Перезапустите Claude Desktop. Не полагайтесь на «горячее» обновление.
- Дайте минимальную тестовую задачу. Например, прочитать каталог с заранее известным содержимым.
- Сверьте побочный эффект. Если сервер должен читать файл, проверьте, что был прочитан именно нужный файл; если должен ходить во внешний API, проверьте ожидаемый ответ.
- Изолируйте неисправность. Если сервер не виден, ищите проблему в конфиге или запуске. Если сервер виден, но не делает нужное, ищите проблему в самом MCP-сервере и его capability.
Практический признак успешной настройки — не просто отсутствие ошибки, а повторяемый вызов инструмента на одном и том же запросе. Если результат нестабилен, сначала уберите сложность: сократите число серверов, отключите лишние переменные окружения и проверьте самый простой кейс.
FAQ
Можно ли подключить несколько MCP-серверов одновременно?
Да. Добавьте несколько записей в объект mcpServers под разными именами. Начинать все равно лучше с одного сервера: так проще понять, где именно сбой.
Нужно ли устанавливать Node.js?
Только если ваш сервер или способ запуска от него зависит. Если у вас готовый бинарник, Node.js не нужен. Если сервер распространяется как пакет npm, без Node.js и npx он не стартует.
Почему команда работает в терминале, но не работает в Claude?
Обычно дело в различиях окружения: другой PATH, отсутствующие переменные, иные права доступа к файлам или сетевым ресурсам. Для диагностики почти всегда помогает замена короткой команды на абсолютный путь к исполняемому файлу.
Можно ли подключить удаленный MCP-сервер?
Иногда да, но это уже не самый простой сценарий. Нужно смотреть, какой транспорт поддерживают и Claude, и ваш сервер, и нет ли ограничений на аутентификацию, сертификаты и сетевые политики. Для первой интеграции локальный stdio-сервер надежнее.
Безопасно ли давать файловому серверу доступ ко всему диску?
Обычно нет. Лучше ограничить доступ конкретным каталогом проекта или рабочей папкой. Чем уже область доступа, тем меньше риск случайного чтения лишних файлов или работы с чувствительными данными.
Что делать, если Claude видит сервер, но не использует инструмент?
Проверьте, что сервер корректно объявляет свои возможности и что ваш тестовый запрос действительно требует внешнего инструмента. Для диагностики полезен очень конкретный запрос с ожидаемым действием, а не общий разговорный вопрос.