Настройка MCP-сервера: конфиги, переменные, отладка
Как устроен конфигурационный файл MCP, куда класть переменные окружения и секреты, где искать логи и как разбирать типовые ошибки настройки.
Все статьи гида MCP-серверы · 11
Большая часть проблем с MCP - это не протокол, а конфигурация. Разберём её устройство и порядок отладки.
Структура конфига
Конфигурация - это описание серверов: имя, способ запуска и окружение. Минимально нужны две вещи.
Имя сервера. Произвольное, но оно попадает в имена инструментов, которые видит агент. Короткое и осмысленное лучше длинного: два сервера с похожими именами - готовая путаница при выборе инструмента.
Способ запуска. Для локального сервера - команда и её аргументы. Для удалённого - адрес. Здесь же указывается окружение процесса.
Уровней обычно два: пользовательский, действующий во всех проектах, и проектный, лежащий в репозитории. Про выбор между ними - в статье про подключение.
Практическая деталь, которая экономит часы: сломанный JSON часто не вызывает ошибки. Клиент читает файл, не может его разобрать и работает так, будто серверов нет вовсе. Если после правки ничего не изменилось, проверьте синтаксис в первую очередь.
Переменные окружения и секреты
Правило одно: токены живут в окружении, конфиг на них ссылается.
Почему это важнее, чем кажется:
- Проектный конфиг лежит в репозитории. Токен в нём уедет всем, кто клонирует проект.
- Удалить файл потом недостаточно: токен останется в истории git. Его придётся отзывать.
- Один и тот же конфиг у разных разработчиков должен работать с разными доступами.
Что стоит помнить про окружение сервера: это не ваша оболочка. Клиент запускает процесс сам, и переменные, экспортированные в терминале, серверу не видны. Их нужно задать там, где клиент их подхватит, - обычно прямо в записи о сервере.
Ещё одна частая ловушка: пустая переменная неотличима от отсутствующей. Сервер стартует, не может авторизоваться и отдаёт пустой список инструментов. Со стороны это выглядит как «подключился, но не работает».
Логи
Три места, где искать.
Лог клиента. Видно, запустился ли процесс и с какой ошибкой он завершился. Первое место при проблеме «сервера нет в списке».
Вывод сервера в stderr. Стандартный вывод занят протоколом, поэтому всё диагностическое идёт в stderr. Если вы пишете свой сервер, любой print в stdout ломает обмен - это самая частая ошибка новичков.
Файловый лог сервера. Самый полезный вариант для своего сервера: видно, какой инструмент вызвали, с какими аргументами и что вернулось. Без этого разбор «агент сделал не то» невозможен.
Хорошая привычка: логировать аргументы вызова. Половина проблем оказывается не в сервере, а в том, что агент передал не то, что вы ожидали, - и причина в описании инструмента.
Типовые ошибки
| Симптом | Причина |
|---|---|
| Сервера нет в списке | Не перезапустили клиента, или сломан JSON |
| Сервер помечен упавшим | Команда не найдена; нужен полный путь |
| Сервер живой, инструментов нет | Провал авторизации: проверьте переменные |
| Инструменты есть, агент их не берёт | Расплывчатые описания |
| Работает у вас, не работает у коллеги | Конфиг пользовательский, а не проектный |
| Всё работает, но медленно | Сервер ходит во внешнюю систему на каждый вызов |
| Агент выбирает не тот инструмент | Два сервера с похожими именами инструментов |
Отдельно про последнее: конфликт имён решается отключением лишнего сервера, а не уточнением промпта. Если два сервера дают похожие инструменты, агент будет ошибаться независимо от формулировок.
Порядок отладки
- Запустите команду сервера руками в терминале.
- Проверьте синтаксис конфига.
- Перезапустите клиента.
- Посмотрите статус сервера в списке.
- Спросите у агента список инструментов.
- Сделайте один безопасный вызов.
Каждый шаг отсекает свой класс причин, и вместе они закрывают почти всё. Подробности по локальному запуску - в статье про локальный сервер. Общая картина - гид по MCP.
Вопросы и ответы
Где хранить токены для MCP-серверов?
В переменных окружения, а конфиг должен на них ссылаться. Токен в проектном конфиге попадёт в репозиторий и уедет всем, кто клонирует проект. Если это уже произошло, файл удалить недостаточно: токен нужно отозвать, потому что он остался в истории git.
Почему конфиг не применяется?
Три причины по частоте: клиента не перезапустили, в JSON синтаксическая ошибка и файл читается молча без применения, или правка внесена не в тот уровень - в пользовательский вместо проектного либо наоборот.
Где смотреть логи MCP-сервера?
У клиента есть свой лог, где видно, поднялся ли процесс и с какой ошибкой он упал. Сам сервер должен писать в stderr или в файл: stdout занят протоколом, и вывод туда ломает обмен. Если сервер свой, файловый лог стоит завести с самого начала.
Ещё по теме
- MCP-сервер: что это и зачем он нуженГид
- MCP-сервер для 1С: как подключить агента к учётной системеКакие задачи хочет закрыть 1С-аудитория с помощью ИИ-агента, какие есть варианты доступа к данным, как сделать обёртку над HTTP-сервисами и OData, и где проходят границы по правам и безопасности.
- Как подключить MCP-сервер к Claude Code и CursorГде лежит конфигурация MCP, как подключить сервер по шагам, как убедиться что он действительно виден агенту и что делать, если сервер не появился в списке.
- Локальный MCP-сервер: запуск у себяЧем локальный MCP-сервер отличается от удалённого, как он запускается, как ограничить его доступ к файлам и что делать при отладке, когда клиент не показывает ошибок.
Сделаю под ключ
Подключу ваши сервисы и данные к ИИ через MCP
Свой MCP-сервер под вашу CRM, базу или внутренний API, с правами доступа и логами.
от 1 500 $ · 1-2 недели