Как подключить свою систему к боту
MCP (Model Context Protocol) — это способ дать боту набор инструментов твоей системы: «покажи остатки», «найди заказ», «сколько продали за неделю». Бот видит только то, что ты откроешь, и ходит в систему по https с ключом, как обычный пользователь. Если сайт или ERP ты навайбкодил сам, добавить такой вход займёт один запрос к Claude Code или Cursor.
Что нужно от твоей системы
Три вещи. Адрес MCP-сервера по https, например https://my-site.ru/api/mcp. Ключ доступа, который система выдаёт пользователю и умеет отзывать. И инструменты с понятными именами и описаниями: по ним бот решает, что вызвать, поэтому «list_products: список товаров с остатками по складу» лучше, чем «api1».
Попроси Claude Code или Cursor добавить MCP
Открой проект своей системы и вставь этот промпт целиком. В нём всё, что нужно боту: route, авторизация по ключу, инструменты, формат ответов. Технические слова оставлены по-английски, чтобы модель не гадала.
Добавь в проект MCP-сервер (Model Context Protocol) для внешнего ассистента. Транспорт: Streamable HTTP, один route.
1. Route `POST /api/mcp`, протокол JSON-RPC 2.0. Методы:
- `initialize`: верни `protocolVersion: "2025-06-18"`, `capabilities: { tools: {} }`, `serverInfo: { name, version }`;
- `notifications/initialized`: это notification без id, ответ 202 без тела;
- `tools/list`, `tools/call`, `ping`;
- неизвестный метод: JSON-RPC error `-32601`.
Ответы отдавай как `application/json` (SSE не нужен). Сервер stateless: не требуй `Mcp-Session-Id`, каждый запрос самостоятельный.
2. Авторизация: заголовок `Authorization: Bearer <key>`. Ключи храни в базе только как hash (sha256 с солью или bcrypt), привязанными к пользователю, с датой создания и отзыва. В профиле пользователя сделай раздел «Ключи для ассистента»: создать ключ (показать один раз), список, «Отозвать». Без ключа или с отозванным ключом отвечай 401. Все инструменты выполняются от имени владельца ключа и с его правами, не больше.
3. Инструменты: 5–8 штук, только чтение. Имена вида `verb_noun`: `list_products`, `get_order`, `search_customers`, `get_stock`, `get_sales_summary`. У каждого `description` в один абзац: что возвращает, какие параметры, когда его звать. `inputSchema` как JSON Schema: `type: "object"`, `properties` с описаниями, `required`. Ограничивай выдачу (`limit` не больше 50) и не отдавай лишних полей.
4. Результат `tools/call`: `{ content: [{ type: "text", text: "<читаемый текст или JSON строкой>" }] }`. Ошибка внутри инструмента: то же плюс `isError: true`. Ошибки протокола (нет метода, плохие параметры): JSON-RPC error с `code` и `message`.
5. Добавь тест или curl-проверку для `initialize` и `tools/list`.
Стек и стиль возьми из репозитория, используй существующие модели и авторизацию, новых зависимостей по возможности не добавляй.Проверь, что сервер отвечает
Выпусти себе ключ в своей системе и попроси список инструментов из терминала. В ответе должен быть JSON с полем tools и твоими именами вида verb_noun.
curl -s https://my-site.ru/api/mcp \
-H 'Authorization: Bearer <ключ>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'Добавь систему в панели
Настройки → Функции и ключи → включи «Свои системы» → «Добавить систему». Название, адрес, ключ, одна строка о том, что это за система. Нажми «Проверить подключение»: панель покажет список инструментов, который увидит бот. Потом «Сохранить»; перезапуск не нужен, бот подхватит систему на следующем сообщении.
Про безопасность
Ключ даёт боту ровно те права, что есть у пользователя, который его выпустил: не больше. Чтобы отрезать доступ, отзови ключ в самой системе, бот получит 401 и остановится. Перед тем как что-то изменить через инструменты, бот спрашивает подтверждение; ответы системы он считает данными, а не командами.