i2crm-mcp
i2crm-mcp — MCP-сервер для разработки интеграций WhatsApp*, Telegram, MAX, ВКонтакте и Instagram* с CRM, сайтами, интернет-магазинами, SaaS-продуктами и внутренними системами. С его помощью разработчик может создавать сценарии отправки сообщений, уведомлений и статусов, а также отлаживать приём обращений и событий через вебхуки. MCP-сервер предоставляет совместимому ИИ-инструменту актуальные методы и схемы публичного API i2crm, поэтому разработчик может проверить подключение, настроить исходящий канал и отправить сообщение с помощью запросов на обычном языке — без необходимости вручную разбирать всю API-документацию.
| Версия | 0.1.3 |
| Требуется | Python 3.11+ |
| Зависимости | нет ни одной, только стандартная библиотека |
| Транспорт | stdio, сервер работает локально у разработчика |
| Инструментов | 12 — контракт API и действия в аккаунте |
Состояние
Путь интеграции проходится целиком: агент спрашивает порядок шагов и контракт, смотрит
каналы, заводит исходящий канал с callback-URL, отправляет текстовое сообщение — и
i2crm-mcp listen показывает, что пришло обратно.
Установка
Пакет лежит в реестре пакетов проекта. Своё окружение — чтобы путь к интерпретатору был известен: он понадобится агенту.
python -m venv ~/.venvs/i2crm-mcp
source ~/.venvs/i2crm-mcp/bin/activate # Windows: %USERPROFILE%\.venvs\i2crm-mcp\Scripts\activate
pip install i2crm-mcp
--index-url подменяет PyPI целиком, и это безопасно ровно потому, что зависимостей у
пакета нет: резолвить в чужом индексе нечего.
Дальше — адрес и токен i2crm:
i2crm-mcp setup # спросит адрес и токен, сохранит в профиль пользователя
i2crm-mcp check # проверит связь: спека читается, токен принят, каналы видны
i2crm-mcp where # покажет, откуда взяты настройки, и маску токена
i2crm-mcp listen # примет вебхуки и напечатает входящие и статусы доставки
Подключение к агенту
i2crm-mcp можно подключить к MCP-совместимым инструментам, включая Claude Code, Claude Desktop, Cursor, Windsurf, Visual Studio Code с GitHub Copilot, OpenAI Codex и Gemini CLI. Способ подключения зависит от выбранного инструмента; ниже приведён пример настройки для Claude Code.
Пример для Claude Code; у Cursor, Windsurf и VS Code свои файлы конфигурации, но поле команды в них то же:
claude mcp add --scope user i2crm -- ~/.venvs/i2crm-mcp/bin/python -m i2crm_mcp.server
Интерпретатор указывается полным путём — тем, куда поставлен пакет. Агент запускает сервер
не из вашего шелла: ни PATH, ни активированное окружение до него не доходят, и короткое
python найдёт не то.
Настройки сервер берёт из профиля, созданного командой setup. Без профиля адрес и токен
задаются блоком env в конфиге агента — I2CRM_BASE_URL и I2CRM_TOKEN.
Инструменты
Знание о контракте. Токен не нужен: спека публична. Нужен только адрес — контракт берётся у той установки i2crm, к которой подключён разработчик, и не копируется в пакет.
| Инструмент | Назначение |
|---|---|
i2crm_playbook |
Порядок интеграции: что делает человек, что агент, чем проверяется |
i2crm_endpoints |
Вся поверхность API за пару килобайт: метод, путь, нужный токен, назначение |
i2crm_endpoint_get |
Контракт одного метода: параметры, тело с раскрытыми схемами, ответы, примеры |
i2crm_schema_get |
Схема по имени — по ней пишется тело запроса и приёмник вебхуков |
Действия в аккаунте. Токенов у API два, но агент держит только номер канала: ключ исходящего канала инструменты подставляют сами, а при единственном канале берут его молча.
| Инструмент | Назначение |
|---|---|
i2crm_diagnose |
Проверка подключения: адрес, токен маской, спека, оба списка каналов |
i2crm_sources |
Входящие каналы: какие мессенджеры подключены и от какого аккаунта отвечать |
i2crm_targets |
Исходящие каналы: номер, тип, активность, ключ |
i2crm_target_create |
Создать исходящий канал с callback-URL и получить его ключ |
i2crm_target_update |
Переставить callback-URL, переименовать, включить или выключить |
i2crm_target_validate |
Канал жив и ключ принимается |
i2crm_reply_sources |
Через что этот канал может отвечать: domain, type, source, шаблоны |
i2crm_send |
Отправить текстовое сообщение клиенту |
Спросите агента обычными словами:
проверь подключение к i2crm и покажи, через какие каналы можно ответить
Ответ, который не влезает в потолок, не урезается молча: вложенные схемы сворачиваются до имён, и агенту сказано, чем их раскрыть.
Приём вебхуков
Отправку видно по ответу инструмента, а дошло ли сообщение — только по вебхуку. Принять его локально можно, не написав обработчика:
i2crm-mcp listen --port 3000 # --raw печатает payload целиком, --once ждёт одно событие
Приёмник слушает только этот компьютер, поэтому наружу его выводит туннель:
cloudflared tunnel --url http://localhost:3000
Полученный адрес ставится каналу с путём — https://ваш-туннель/i2crm — иначе i2crm его
не примет: требуется https и непустой путь. Дальше в терминале видно входящие сообщения,
правки и статусы доставки, а по подписи вебхука названо, какому каналу он адресован.
Два требования i2crm, которые приёмник закрывает сам и о которых стоит знать, когда
обработчик пишется в своём коде: ответ обязан быть JSON, а не просто 200, — тело
ответа разбирается, и на не-JSON доставка считается неудачной и повторяется; правка ранее
отправленного сообщения приходит методом PATCH на тот же адрес.
Приёмник отладочный: он никого не проверяет, ничего не хранит и не годится на роль рабочего обработчика.
Границы
- Разрушающих операций нет вообще — ни удаления канала, ни удаления сообщений. Агент не может снести рабочий канал, даже если его попросить.
- Подключение мессенджеров не автоматизируется: QR и вход по коду интерактивны, это делает человек в личном кабинете. Инструменты только показывают состояние.
- Переписка не читается: клиентская спека скрывает эту часть API, набор инструментов повторяет её границу, а не расширяет.
- Запросы разрежаются на нашей стороне: своего лимита у API нет, и агент в цикле — единственное, что может выжечь аккаунт отправками.
- Токен не светится: в профиле с правами только владельцу, в выводе — маской, в
stdout — ничего кроме протокола. Ключи каналов инструменты агенту показывают: без них
он не напишет код, который ходит в API сам. В терминале (
check) они маской.
Настройки
Адрес и токен берутся из двух мест, окружение перебивает профиль:
| Что | Переменная | Профиль |
|---|---|---|
| Адрес i2crm | I2CRM_BASE_URL |
пишется командой setup |
| Токен пользователя | I2CRM_TOKEN |
там же |
Профиль лежит по соглашению ОС — %APPDATA%\i2crm-mcp\config.json на Windows,
~/.config/i2crm-mcp/config.json на macOS и Linux — и читается только владельцем.
Переопределяется переменной I2CRM_MCP_CONFIG.
Адреса по умолчанию нет намеренно: каждая установка i2crm отвечает на своём хосте, и угаданный адрес — это токен, отправленный туда, куда сегодня резолвится это имя. Адрес и токен показаны в личном кабинете, на странице настройки API.
Разработка
Свой протокол MCP на стандартной библиотеке (protocol.py), 249 тестов без обращений к
сети, ruff и сборка пакета — на каждый коммит.
Разработка ведётся в приватном репозитории i2crm; порядок правки и выпуска описан там же,
в CONTRIBUTING.md.
*WhatsApp и Instagram принадлежат компании Meta, деятельность которой признана экстремистской и запрещена на территории Российской Федерации.
Metadata
Release files for i2crm-mcp 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| i2crm_mcp-0.1.3.tar.gz | 73.8 kB | Without provenance | Details for i2crm_mcp-0.1.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| i2crm_mcp-0.1.3-py3-none-any.whl | Python 3 | none | any | Details for i2crm_mcp-0.1.3-py3-none-any.whl |
Total release size: 126.9 kB
Release files / i2crm_mcp-0.1.3.tar.gz
| Download URL | i2crm_mcp-0.1.3.tar.gz |
|---|---|
| Size | 73.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
857a85a522715cf845665f812da56708c1e54b908ff0c321403908ec7f755880
|
|
BLAKE2b-256 checksum How to use checksums |
4c55fb1d378f6ada2a4bf33c237dafa0f34ae269bfcc8736230261400707c38c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Release files / i2crm_mcp-0.1.3-py3-none-any.whl
| Download URL | i2crm_mcp-0.1.3-py3-none-any.whl |
|---|---|
| Size | 53.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4b1de61f7db7c8aa1e76d9ad0f815c717ccb28d654da48900e90cf808066faf3
|
|
BLAKE2b-256 checksum How to use checksums |
a8a125b31367c838b4a427bc5a547422f6b398811c1947c3faf20c70b3fb4566
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Security for i2crm-mcp 0.1.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.