Свой MCP-сервер: как дать Claude доступ к вашим данным

Свой MCP-сервер — это компактный сервис, который выставляет ваши внутренние данные и инструменты наружу по протоколу MCP, чтобы Claude дотягивался до них напрямую и под вашими правилами доступа. Вы описываете несколько инструментов, оборачиваете их в HTTP-сервер, выставляете на домене — и модель начинает читать вашу базу, заводить записи в CRM, собирать отчёты. Контроль над тем, что модель видит и меняет, остаётся за вами. Ниже разбираю весь путь: зачем это фаундеру, из чего состоит сервер, как собрать минимальный и где провести границы.

Что такое свой MCP-сервер и зачем он бизнесу

Готовые коннекторы закрывают типовые сервисы — почту, гитхаб, диск. Свой сервер нужен там, где данные живут в вашей внутренней системе: российская CRM, складская база, таблица расчётов, внутренний справочник цен. Готового коннектора под такое в каталоге нет, поэтому путь один — поднять собственный. Это и называется «MCP-сервер своими руками».

Для фаундера выгода прямая. Сотрудник, который весь день перекладывает данные между внутренней базой и таблицами, освобождается, как только Claude получает доступ к этой базе через ваш сервер. В работе с командами я вижу одну и ту же картину: человек тратит половину дня на сборку отчёта руками, хотя модель собрала бы его за минуту, будь у неё доступ к источнику. Свой сервер этот доступ и даёт, причём строго по границам, которые вы прописали.

Из чего состоит MCP-сервер: инструменты и ресурсы

MCP — открытый протокол, и сервер по нему выставляет наружу две основные сущности — инструменты и ресурсы. Инструменты — это действия, которые модель выполняет по запросу. «Найти клиента по телефону», «создать задачу», «посчитать сумму заказов за месяц» — каждый инструмент описан именем, текстовым описанием и схемой входных параметров. Ресурсы — это данные, которые модель читает как контекст: содержимое документа, строка из справочника, выгрузка отчёта.

Описание инструмента модель использует, чтобы понять, когда его звать. Вы пишете человеческим языком: «возвращает сделку по её номеру, поля — сумма, статус, ответственный менеджер». Claude читает это описание и сам сопоставляет с просьбой пользователя. Чем точнее описание, тем реже модель промахивается с выбором инструмента.

Часть сервераЧто делаетПример
ИнструментВыполняет действие по запросу модели«создать лид в CRM», «отправить черновик письма»
РесурсОтдаёт данные модели для чтениясодержимое документа, строка справочника, выгрузка отчёта
Схема параметровОписывает, что принимает инструментномер сделки, диапазон дат, идентификатор клиента
ОписаниеПодсказывает модели, когда звать инструмент«возвращает сделку по номеру: сумма, статус, менеджер»
ТранспортКанал связи между сервером и Claudeлокальный (stdio) или удалённый (Streamable HTTP)

Транспорт определяет, где живёт сервер. Локальный сервер запускается на вашей машине и общается с приложением Claude через стандартный ввод-вывод — это удобно для личных инструментов и разработки. Удалённый сервер стоит на домене за HTTPS, говорит по Streamable HTTP с авторизацией и доступен всей команде по сети. Личный инструмент держите локально, общий для команды — выставляйте удалённым.

  • Локальный сервер (stdio) — процесс на вашей машине, конфигурируется в приложении Claude. Подходит для личного инструмента и отладки.
  • Удалённый сервер (Streamable HTTP) — сервис на домене с авторизацией, доступен команде по сети. Подходит, когда коннектором пользуются все.
  • SDK — готовый набор от Anthropic для Python и TypeScript, который снимает с вас низкоуровневую часть протокола и оставляет только описание инструментов.

Как собрать минимальный сервер: пошаговый разбор

Минимальный сервер собирается из официального SDK и укладывается в один файл. Логика простая: вы заводите сервер, регистрируете на нём пару инструментов, запускаете процесс. Ниже — путь от пустой папки до рабочего коннектора, который Claude видит и зовёт.

  1. Поставьте SDK. Для Python это пакет официального MCP-набора, для TypeScript — его npm-аналог. SDK берёт на себя протокол, вам остаётся бизнес-логика.
  2. Заведите объект сервера и дайте ему имя — по нему Claude отличит ваш коннектор от других в списке.
  3. Опишите первый инструмент: имя, текстовое описание для модели и схему входных параметров. Внутри функции положите обращение к вашему источнику — API CRM, запрос к базе, чтение файла.
  4. Добавьте инструмент-ресурс на чтение, например «вернуть карточку клиента по идентификатору». Пометьте его как read-only, чтобы модель понимала: он только читает.
  5. Выберите транспорт. Для личной отладки запускайте через stdio и подключайте в приложении Claude как локальный сервер. Для команды оберните сервер в Streamable HTTP и выставьте на домене по пути /mcp за HTTPS.
  6. Запустите процесс и подключите сервер в настройках коннекторов Claude. Дождитесь, пока модель подтянет список инструментов с описаниями.
  7. Проверьте связь прямой просьбой: «достань сделку номер 412» или «покажи карточку клиента Иванова». Claude вызовет ваш инструмент и вернёт результат из боевого источника.

Где человек контролирует доступ модели

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

  • Read-only по умолчанию. Все читающие инструменты помечаются как безопасные. Изменяющие требуют согласия, и Claude учитывает эти метки при выборе действия.
  • Подтверждение на запись. Любой инструмент, который меняет данные или отправляет их наружу, проводите через явное согласие пользователя — это человек в контуре.
  • Минимум прав у авторизации. Выдавайте серверу ровно те разрешения внутренней системы, что нужны под задачу. Доступ ко всей базе там, где хватает одной таблицы, лишний.
  • Недоверенный ввод. Данные из писем и документов несут вредные инструкции, поэтому относитесь к ним как к недоверенному вводу — это риск подмены промпта.
  • Хостинг под контролем. Удалённый сервер держите на своём VPS за HTTPS, секреты — в переменных окружения, отдельно от кода.

Эти решения принимаются на уровне архитектуры сервера, и здесь окупается участие инженера. В одном случае хватает читающего сервера с минимальными правами, в другом нужен сервер с аккуратно размеченными инструментами и подтверждением на каждую запись. Разница между этими сценариями определяет, утечёт у вас что-нибудь или останется под контролем.

С чего начать и куда двигаться дальше

В работе с командами я часто вижу, как фаундер откладывает свой сервер, потому что готовые коннекторы выглядят проще. Готовые и правда проще, и с них разумно начинать. При этом самая дорогая рутина сидит во внутренней системе, для которой готового коннектора попросту нет, и закрывает её только собственный сервер. Один инструмент под главный ежедневный запрос команды снимает с человека целый кусок ручной работы сразу.

Дальше сервер растёт по запросу: каждый новый инструмент добавляет модели ещё один кусок вашей системы. Сервер, который Claude вызывает как клиент, легко переедет и к другому клиенту — Claude Code, редактору кода, стороннему приложению, ведь протокол открытый и переписывать сервер под каждый клиент нужды нет. Тот же сервер становится фундаментом для ИИ-агента, который сам ходит по вашим инструментам и доводит задачу до конца.

На программах Зинин·Штурбин мы собираем MCP-сервер на ваших реальных данных: какой инструмент описать первым, где провести границы доступа, как подключить сервер команде безопасно. Начните с discovery-созвона — расскажите, как устроена ваша внутренняя работа, и я покажу, какой сервер собирается первым и что он закрывает уже на старте.

Частые вопросы

Нужно ли уметь программировать, чтобы собрать свой MCP-сервер?
Минимальный сервер пишет разработчик, но объём небольшой: пара инструментов, обёрнутых в готовый SDK. Логика протокола лежит на SDK, вам остаётся описать инструменты и обращение к вашему источнику данных.
Чем свой сервер отличается от готового коннектора?
Готовый коннектор закрывает типовой сервис — почту, гитхаб, диск, — и подключается одной кнопкой. Свой сервер нужен под внутреннюю систему: российскую CRM, складскую базу, справочник цен, для которых готового коннектора в каталоге нет.
Где должен жить MCP-сервер — на моей машине или на сервере?
Личный инструмент держите локально: процесс запускается на вашей машине и общается с приложением Claude через stdio. Общий для команды сервер выставляйте удалённым — на домене за HTTPS по Streamable HTTP, чтобы к нему была сетевая доступность у всех сотрудников.
Безопасно ли давать Claude доступ к боевой базе через свой сервер?
Безопасно при правильных границах. Читающие инструменты помечаются как read-only, изменяющие требуют подтверждения человека. Авторизация выдаёт серверу минимум прав. Опасность рождают широкие права и запись без согласия, поэтому их закрывают на уровне сервера.
Что описать инструментом первым делом?
Возьмите самый частый ежедневный запрос команды и сделайте его читающим инструментом — например «собрать отчёт за период» или «достать карточку клиента». Читающий контур проще запустить и безопаснее проверить. Записывающие инструменты добавляйте после.
Подойдёт ли один сервер для разных клиентов кроме Claude?
Да. MCP — открытый протокол, и его понимают разные клиенты: Claude, Claude Code, редакторы кода, сторонние приложения. Один и тот же сервер вы подключаете к Claude сегодня и к другому клиенту завтра, переписывать его под каждый заново нужды нет.

Разберём вашу ситуацию на Discovery-созвоне

Один час на Discovery-созвоне — и вы увидите, какие задачи в вашем случае отдать ИИ, какие оставить команде.

Прийти на Discovery-созвон →

← Все статьи