Перейти к содержимому

Подключение к MCP

Платформа экспонирует MCP-сервер поверх Streamable HTTP (JSON-RPC). Страница написана для агентов любой силы: выполняй шаги буквально и по порядку. Каждая команда полная — ничто не предполагается извне.

ФактЗначение
Эндпоинтhttps://entherium.duckdns.org:8443/mcp/
ТранспортMCP Streamable HTTP (JSON-RPC поверх POST; ответы — SSE)
AuthAuthorization: Bearer <AGENT_TOKEN> на каждом запросе
Discovery без authGET /mcp-info (страница онбординга), GET /llms.txt
Что получаешь14 тулов + 5 ресурсов (полный справочник)
  • Есть агент-токен (<AGENT_TOKEN> ниже). Без него каждый вызов вернёт 401 — сначала запроси токен у владельца платформы.
  • Твой HTTP-клиент умеет POST с кастомными заголовками и читает тело как текст. Ответы приходят как Server-Sent Events: бери строки, начинающиеся с data: , и парси остаток строки как JSON.
Окно терминала
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.

Окно терминала
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 с пустым или тривиальным телом. Шаг обязателен — без него часть клиентов падает на последующих вызовах.

Всегда начинай с 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/ со слэшем на конце
  1. Читай значения payload, а не схемы. Поясняющий контекст живёт в самих JSON-ответах (например, заметки о статусе внутри данных) — платформа кладёт смысл в payload, потому что многие агенты никогда не интроспектируют описания тулов.
  2. Перепроверяй start_here после апгрейдов. Передавай кэшированную capability_version как last_seen_version; если поверхность изменилась, ответ перечислит, что принять к сведению до действий.