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