MCP-сервер для Битрикс24: задачи и сделки CRM в руках агента

Официальный MCP Битрикс24 отдаёт агенту документацию, но не данные портала. Как написать свой сервер для сделок и задач и не дать агенту лишнего.

6 мин · · агенты · бизнес

Когда говорят «mcp сервер битрикс24», обычно имеют в виду одно из двух, и это разные вещи. Первое: сервер, который помогает агенту писать правильный код под REST API Битрикс24. Второе: сервер, через который агент читает сделки и создаёт задачи в вашем портале. У Битрикс24 официально есть только первый. Ниже объясняем разницу, показываем, как собрать второй с минимальными правами, и как подключить его к агенту.

Сведения о Битрикс24 взяты из официальной документации apidocs.bitrix24.com на 18 октября 2026. Названия пунктов интерфейса там даны для английской версии, в русской они могут звучать иначе, поэтому сверяйтесь со своим порталом.

Что даёт официальный MCP Битрикс24

В документации описан сервер b24-dev-mcp по адресу https://mcp-dev.bitrix24.com/mcp. Он работает по протоколу Streamable HTTP (старого SSE нет) и открыт без авторизации. В документации это сказано прямо: сервер отдаёт актуальную документацию по REST API, но у него нет доступа к данным Битрикс24 и он не выполняет вызовы методов.

Его задача другая: чтобы модель не придумывала несуществующие методы REST и не отправляла вас по битым ссылкам. У сервера пять инструментов: поиск по документации (bitrix-search), описание метода по точному имени (bitrix-method-details), описание события (bitrix-event-details), статья (bitrix-article-details) и материалы по разработке приложений (bitrix-app-development-doc-details).

Подключение к Claude Code, по документации Битрикс24, одной командой:

bash
claude mcp add --transport http b24-dev-mcp https://mcp-dev.bitrix24.com/mcp
claude mcp list

Если вы пишете интеграцию, подключите его первым: код получится точнее. Подробности про работу с MCP в Claude Code есть в статье MCP-серверы в Claude Code.

Когда нужен собственный сервер

Если задача вроде «покажи сделки на стадии "Счёт" и создай задачу менеджеру», агенту нужен доступ к данным. Для этого пишут свой MCP-сервер-обёртку: агент вызывает инструмент list_deals, сервер делает REST-запрос в портал и возвращает результат. Ключ тут один: входящий вебхук.

Вебхук и права: главное место для ошибки

Входящий вебхук — секретная ссылка, по которой внешняя система вызывает методы портала. Документация подчёркивает два факта.

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

Второй: секретный код нельзя показывать и встраивать в публичный код.

Из этого получается порядок действий:

  1. Заведите отдельного пользователя под агента с ограниченной ролью: видит только нужные воронки, не может удалять.
  2. Если создание вебхуков запрещено, администратор разрешает его в разделе настроек безопасности (Settings → Bitrix24 settings → Security → Bitrix24 integrations, поле Who can create inbound webhooks).
  3. Войдите под этим пользователем, откройте Applications → Developer resources, затем Common use cases → Other → Inbound webhook.
  4. В блоке Permission settings отметьте только crm и task. В документации сказано, что необходимую область для каждого метода указывает страница метода.
  5. По возможности задайте срок действия вебхука: документация упоминает, что его можно ограничить датой.

URL вебхука выглядит как https://портал.bitrix24.com/rest/<id пользователя>/<секретный код>/метод.json. Сохраните его в переменную окружения B24_WEBHOOK без имени метода.

Минимальный сервер на Python

Пример использует пакет mcp (класс FastMCP) и requests. API библиотеки mcp развивается, поэтому сверьтесь с её документацией, если импорт не совпадёт.

bash
import os
import requests
from mcp.server.fastmcp import FastMCP

WEBHOOK = os.environ["B24_WEBHOOK"].rstrip("/")
ALLOW_WRITE = os.environ.get("B24_ALLOW_WRITE") == "1"
mcp = FastMCP("bitrix24")


def call(method: str, params: dict) -> dict:
    r = requests.post(f"{WEBHOOK}/{method}.json", json=params, timeout=30)
    r.raise_for_status()
    data = r.json()
    if "error" in data:

Что здесь сделано намеренно. Поля в select перечислены явно: агенту не нужны все 100 полей сделки, а лишние поля стоят токенов. Чтение и запись разведены, запись выключена по умолчанию. Метод удаления не реализован вообще: что не описано как инструмент, то агент не вызовет.

Подключение к агенту

В Claude Code:

bash
claude mcp add --env B24_WEBHOOK=https://портал.bitrix24.com/rest/7/секрет --transport stdio bitrix24 -- python /путь/к/b24_server.py

Claude Code работает через переменные ANTHROPIC_BASE_URL=https://api.zukko.pro (без /v1), ANTHROPIC_AUTH_TOKEN=fetch_... и ANTHROPIC_MODEL=claude-sonnet-5-5, см. документацию по Claude Code. В opencode тот же сервер описывается блоком mcp с "type": "local" и командой ["python", "/путь/к/b24_server.py"], а адрес Zukko там с /v1.

Лимиты REST и что с ними делать

В облачном Битрикс24 запрос должен уложиться в 60 секунд. Частота ограничена по принципу «дырявого ведра»: по документации, на тарифе Enterprise счётчик уменьшается на 5 в секунду и блокировка наступает на значении 250, на остальных тарифах 2 в секунду и 50. При превышении приходит статус 503 и код QUERY_LIMIT_EXCEEDED. Для агента это значит: не просите «выгрузи все сделки за три года» одним промптом, ограничивайте выборки и используйте batch (до 50 вызовов в одном HTTP-запросе), если реализуете массовые операции. Ошибку лимита сервер должен вернуть модели понятным текстом, а не молчать.

Что не дать агенту

  • Права администратора и удаление. Отдельный пользователь и отсутствие инструмента удаления закрывают это.
  • Чтение полей, которые не нужны: телефоны и почты клиентов, если задача про стадии.
  • Доверие к тексту из CRM. Комментарий в сделке или заметка клиента могут содержать фразу, адресованную модели. Всё, что вернул инструмент, считайте данными, а не командой, и оставляйте подтверждение на записи.
  • Общий ключ для всех. Для модели заведите отдельный ключ Zukko с дневным лимитом на странице API-ключей.

Сколько это стоит

Допустим, за день агент отвечает на 30 вопросов по CRM, на каждый уходит 20 000 токенов входа и 1 500 выхода. Всего 600 000 токенов входа и 45 000 выхода. Цены Zukko на 18 октября 2026, $ за 1M токенов, кэш не учитываем:

  • claude-sonnet-5-5 (0.4 / 2): 0.6 × 0.4 + 0.045 × 2 = 0.24 + 0.09 = $0,33.
  • gpt-6.1-sol (0.27 / 1.32): 0.6 × 0.27 + 0.045 × 1.32 = 0.162 + 0.0594 ≈ $0,22.
  • deepseek-v4.1-flash (0.013 / 0.038): 0.6 × 0.013 + 0.045 × 0.038 = 0.0078 + 0.00171 ≈ $0,01.

Какая модель надёжнее вызывает ваши инструменты, проверьте на своих данных. Список и цены: GET https://api.zukko.pro/v1/models. Про общую картину интеграции с порталом есть статья нейросеть в Bitrix24 через вебхуки.

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

Официальный MCP Битрикс24 умеет читать мои сделки?

Нет. Он отдаёт только документацию и не обращается к данным портала. Для данных нужен собственный сервер или другой способ интеграции.

Хватит ли вебхука для такого сервера?

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

Где хранить адрес вебхука?

В переменной окружения или менеджере секретов, не в репозитории и не в промпте. При утечке пересоздайте вебхук.

Можно ли дать агенту запись в CRM?

Можно, но осознанно: отдельные инструменты на запись, подтверждение каждого вызова и минимальные права пользователя. Удаление лучше не давать совсем.

zukko

Платите в 25×
меньше

за Claude Code & ChatGPT

Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.