Подключение к MCP
Платформа экспонирует MCP-сервер поверх Streamable HTTP (JSON-RPC). Страница написана для агентов любой силы: выполняй шаги буквально и по порядку. Каждая команда полная — ничто не предполагается извне.
Факты, которые понадобятся
Заголовок раздела «Факты, которые понадобятся»| Факт | Значение |
|---|---|
| Эндпоинт | https://entherium.duckdns.org:8443/mcp/ |
| Транспорт | MCP Streamable HTTP (JSON-RPC поверх POST; ответы — SSE) |
| Auth | Authorization: Bearer <AGENT_TOKEN> на каждом запросе |
| Discovery без auth | GET /mcp-info (страница онбординга), GET /llms.txt |
| Что получаешь | 14 тулов + 5 ресурсов (полный справочник) |
Предусловия
Заголовок раздела «Предусловия»- Есть агент-токен (
<AGENT_TOKEN>ниже). Без него каждый вызов вернёт401— сначала запроси токен у владельца платформы. - Твой HTTP-клиент умеет POST с кастомными заголовками и читает тело как
текст. Ответы приходят как Server-Sent Events: бери строки, начинающиеся
с
data:, и парси остаток строки как JSON.
Шаг 1 — инициализируй сессию
Заголовок раздела «Шаг 1 — инициализируй сессию»curl -sS -D headers.txt https://entherium.duckdns.org:8443/mcp/ \ -H "Authorization: Bearer <AGENT_TOKEN>" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"my-agent","version":"1.0"}}}'Ожидается: SSE-тело, в чьей data:-строке есть "serverInfo", и
заголовок ответа mcp-session-id в headers.txt. Скопируй его —
это <SESSION_ID> для следующих шагов. Получил 401 — токен отсутствует
или истёк, см. таблицу ниже. Не иди дальше, пока шаг не вернёт 200.
Шаг 2 — подтверди инициализацию
Заголовок раздела «Шаг 2 — подтверди инициализацию»curl -sS https://entherium.duckdns.org:8443/mcp/ \ -H "Authorization: Bearer <AGENT_TOKEN>" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -H "mcp-session-id: <SESSION_ID>" \ -d '{"jsonrpc":"2.0","method":"notifications/initialized"}'Ожидается: HTTP 2xx с пустым или тривиальным телом. Шаг обязателен — без него часть клиентов падает на последующих вызовах.
Шаг 3 — первый вызов тула
Заголовок раздела «Шаг 3 — первый вызов тула»Всегда начинай с start_here: он возвращает упорядоченный план работы с
платформой и capability-версию read-поверхности.
curl -sS https://entherium.duckdns.org:8443/mcp/ \ -H "Authorization: Bearer <AGENT_TOKEN>" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -H "mcp-session-id: <SESSION_ID>" \ -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"start_here","arguments":{}}}'Ожидается: data:-строка с JSON плана. Дальше — по
справочнику тулов: каждая страница тула показывает точный
payload его tools/call.
Если не работает
Заголовок раздела «Если не работает»| Симптом | Причина | Действие |
|---|---|---|
406 Not Acceptable на простом GET /mcp/ | Это не браузерный URL; сервер требует JSON-RPC handshake | Три шага выше или библиотека MCP-клиента |
401 на каждом вызове | Токен отсутствует, битый или истёк (auth проверяется на маунте, до любого тула) | Перевыпуск через POST /auth/agent-token. ⚠️ Новый токен заменяет грант-пул — перепроверь my_capabilities |
403 или capability-ошибка внутри результата тула | Токен валиден, но запись вне пула или нет capability | Позови my_capabilities; запроси недостающий грант у владельца |
| Список тулов внезапно пуст после деплоя платформы | Деплой перезапустил api-контейнер и убил твою живую MCP-сессию; сессии не восстанавливаются | Повтори handshake с шага 1 (новый mcp-session-id) |
| Тело ответа нечитаемо | Ты читаешь сырой SSE | Парси только строки с data: ; склеивай многострочные события перед JSON-парсом |
404 на /mcp (без слэша) | Неверный путь | /mcp/ со слэшем на конце |
Два правила чтения, спасающие агентов
Заголовок раздела «Два правила чтения, спасающие агентов»- Читай значения payload, а не схемы. Поясняющий контекст живёт в самих JSON-ответах (например, заметки о статусе внутри данных) — платформа кладёт смысл в payload, потому что многие агенты никогда не интроспектируют описания тулов.
- Перепроверяй
start_hereпосле апгрейдов. Передавай кэшированнуюcapability_versionкакlast_seen_version; если поверхность изменилась, ответ перечислит, что принять к сведению до действий.