MCP для ИИ-ассистентов
MCP (Model Context Protocol) — способ дать ИИ-ассистенту наши данные. Подключите сервер datool.ru, и ассистент сам найдёт канал, посмотрит его статистику и посты и ответит на вопрос вроде «как рос канал @rbc в октябре».
Адрес и ключ
- Адрес сервера:
https://api.datool.ru/v1/mcp/(MCP поверх HTTP, «Streamable HTTP»). - Ключ — тот же, что для API: заголовок
Authorization: Bearer dtk_ваш_ключ. Ключ создаётся на странице «API-ключи» в кабинете.
К сведению
Ассистент тратит запросы так же, как ваш код: каждый вызов инструмента стоит столько же единиц, сколько метод API, и открыто ему то же, что вашему тарифу. Справочники и /v1/me/ — бесплатно.
Claude Code
# добавить сервер datool в Claude Code; ключ — со страницы «API-ключи» в кабинете
claude mcp add --transport http datool https://api.datool.ru/v1/mcp/ \
--header "Authorization: Bearer dtk_ваш_ключ"
Cursor и другие клиенты
Добавьте сервер в настройки MCP (в Cursor — файл .cursor/mcp.json):
{
"mcpServers": {
"datool": {
"url": "https://api.datool.ru/v1/mcp/",
"headers": { "Authorization": "Bearer dtk_ваш_ключ" }
}
}
}
Claude Desktop и другим клиентам, которые умеют только запускать программу у себя, поможет переходник mcp-remote (нужен Node.js). В Claude Desktop настройка — файл claude_desktop_config.json (Settings → Developer → Edit Config). Ключ передаётся через переменную окружения: пробел внутри аргумента ломает настройку в Windows.
{
"mcpServers": {
"datool": {
"command": "npx",
"args": ["mcp-remote", "https://api.datool.ru/v1/mcp/",
"--header", "Authorization:${AUTH_HEADER}"],
"env": { "AUTH_HEADER": "Bearer dtk_ваш_ключ" }
}
}
}
Инструменты
Инструменты — это методы API, которые читают данные, с теми же именами и параметрами, что в справочнике методов:
| Инструмент | Что делает |
|---|---|
me_retrieve |
кто я, тариф и остаток запросов |
max_channels_resolve_retrieve |
найти канал по ссылке, @имени или ID MAX |
max_channels_list |
каталог каналов с фильтрами |
max_channels_retrieve |
карточка канала |
max_stats_daily_list |
статистика по дням |
max_channels_posts_retrieve |
посты канала |
max_posts_retrieve |
один пост |
max_categories_list, max_territories_list |
справочники рубрик и территорий |
Изменять что-либо через MCP нельзя — например, вебхуки управляются только через API ключом «чтение и запись».
Как это устроено внутри
Свой клиент MCP можно написать и без готовых программ: сервер принимает JSON-RPC 2.0 запросом POST и отвечает JSON.
# список инструментов (бесплатно)
curl -X POST https://api.datool.ru/v1/mcp/ \
-H "Authorization: Bearer dtk_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'
# вызвать инструмент: карточка канала @citynews (стоит как метод API — 1 единица)
curl -X POST https://api.datool.ru/v1/mcp/ \
-H "Authorization: Bearer dtk_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": {"name": "max_channels_retrieve", "arguments": {"channel": "citynews"}}}'
Ответ на вызов инструмента — ответ метода API текстом (content) и объектом (structuredContent):
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [{"type": "text", "text": "{\"id\": 4821, \"title\": \"Городские новости\", …}"}],
"structuredContent": {"id": 4821, "title": "Городские новости", "subscribers": 128450},
"isError": false
}
}
| Метод протокола | Что делает |
|---|---|
initialize |
Знакомство: версия протокола, имя сервера, подсказка ассистенту |
tools/list |
Список инструментов с описаниями и входными схемами |
tools/call |
Вызвать инструмент: name и arguments (как параметры метода API) |
ping |
Проверка связи |
Сеансов и потока событий нет: каждый запрос самостоятельный, GET на адрес сервера — 405.
Если ассистент пишет об ошибке
Ошибка метода приходит ассистенту текстом с кодом, например 403 tariff_required — посты закрыты на «API.Max Тест», или 429 quota_exceeded — запросы за период закончились. Коды — на странице «Ошибки».
| Что случилось | Что приходит |
|---|---|
| Ошибка метода API (тариф, нет канала, лимит) | result с isError: true и текстом вида 403 tariff_required: … |
Неизвестный инструмент, лишний или пропущенный аргумент, значение, ломающее адрес (/, ?, #) |
ошибка JSON-RPC -32602 |
Неверный тип или значение аргумента (например, kind=group) |
result с isError: true и ошибкой метода 400 — стоит как запрос |
| Неизвестный метод протокола | ошибка JSON-RPC -32601 |
| Тело не JSON или не объект JSON-RPC 2.0 | ошибки JSON-RPC -32700 и -32600 |
| Нет ключа или ключ неверный | ответ HTTP 401 |