MebliPoint Course Creator: подключение внешнего агента

Эта страница — единственная инструкция, которую руководитель передаёт сотруднику или его агенту. Репозиторий MebliPoint, серверные ключи, ручные токены и знание имён инструментов для обычной работы не нужны.

Скажите своему агенту:

Подключи MebliPoint Course Creator по инструкции
https://meblipoint.com.ua/docs/codex-course-creator-setup.
Сам настрой MCP и официальный skill для моего текущего клиента. Используй OAuth:
не проси у меня PAT, серверные ключи или команды для переменных Windows/macOS.
Сначала покажи план и запрашивай подтверждение перед изменением конфигурации,
установкой skill, входом в аккаунт или любым пишущим действием MebliPoint.

1. Что делает пользователь

  1. Передаёт агенту текст выше.
  2. Подтверждает изменение пользовательской конфигурации клиента и установку официального skill, когда агент покажет точный план.
  3. В открывшемся браузере входит в обычный аккаунт MebliPoint и нажимает «Разрешить» на экране согласия.
  4. При первом обращении к Course Creator открывает возвращённый approvalUrl и отдельно подтверждает доступ к домену Course Creator. Это одноразовое бизнес-разрешение для данного OAuth-клиента, а не повторный вход.

На этом обычная настройка закончена. Пользователь не копирует access token или refresh token, не создаёт PAT и не редактирует системные переменные.

2. Что агент должен сделать автоматически

  1. Прочитать machine-readable connection descriptor: https://meblipoint.com.ua/course-creator/connection.json.
  2. Определить текущий MCP-клиент и показать пользователю небольшой план изменения только его пользовательской конфигурации.
  3. Подключить endpoint из descriptor как Streamable HTTP без ручного bearer token.
  4. Прочитать официальный skill manifest, выбрать путь текущего клиента из installTargets, сверить размер и SHA-256 ZIP и установить только этот skill.
  5. Запустить интерактивный OAuth 2.1 + PKCE. Секреты OAuth хранит защищённое хранилище клиента, а не проект, skill или пользовательская инструкция.
  6. Если первый MCP-вызов вернул MCP_DOMAIN_GRANT_REQUIRED, открыть пользователю полученный approvalUrl, дождаться решения и повторить тот же вызов с той же OAuth-сессией. Не запускать повторную авторизацию и не заменять токены.
  7. После допуска вызвать course_creator_get_capabilities, затем bounded course_creator_get_instructions с section=start и вернуть статус CURRENT, STALE CLIENT SUSPECTED или ACTION REQUIRED.

Если конкретный клиент не умеет HTTP MCP OAuth, агент должен честно назвать ограничение клиента. Он не должен автоматически переводить обычного пользователя на PAT или просить его редактировать окружение операционной системы.

3. Живые адреса и контракт

  • Machine-readable connection descriptor: https://meblipoint.com.ua/course-creator/connection.json
  • Общий реестр живых MCP-доменов и правил координации: https://meblipoint.com.ua/mcp/registry.json
  • MCP endpoint: https://meblipoint.com.ua/api/mcp/course-creator
  • Transport: streamable HTTP
  • Основная авторизация: интерактивный OAuth 2.1 с PKCE.
  • Официальный skill manifest: https://meblipoint.com.ua/course-creator/skills/meblipoint-create-course/current/manifest.json
  • Официальный skill ZIP: https://meblipoint.com.ua/course-creator/skills/meblipoint-create-course/current/meblipoint-create-course-skill.zip

Открытие MCP endpoint обычным GET возвращает 405 Method Not Allowed. Это нормально: MCP использует POST/Streamable HTTP. Для проверки доступности читайте connection descriptor или выполняйте MCP initialize.

4. Первый вход, продление и восстановление

Клиент добавляет endpoint как HTTP MCP server без ручного токена. Он получает 401 с адресом Protected Resource Metadata, регистрирует OAuth-клиент, открывает вход MebliPoint и показывает экран согласия. После подтверждения получает короткоживущий access token и refresh token.

Access token продлевается через refresh token без повторного копирования секретов и без действий пользователя. Если refresh token отозван, истёк либо клиент потерял своё защищённое OAuth-состояние, восстановление — новый обычный вход в браузере. Агент должен сказать «нужно снова войти в MebliPoint», а не просить PAT.

Production smoke проверяет отдельно весь цикл: выдачу authorization code, получение access/refresh token, немедленный refresh без нового входа и MCP-вызов уже с обновлённым access token.

Уже подключённый Course Creator после включения раздельных разрешений

Существующая OAuth-сессия и refresh token остаются действительными. Первый запрос может вернуть 403 MCP_DOMAIN_GRANT_REQUIRED с одноразовым approvalUrl. Пользователь открывает эту ссылку, подтверждает только Course Creator и повторяет исходный запрос. Переустанавливать skill, удалять MCP, копировать token или заново входить в MebliPoint не требуется.

Разрешения Course Creator и Catalog независимы. Отзыв одного немедленно закрывает только соответствующий MCP endpoint и не ломает второй.

5. Особенности клиентов

  • Codex хранит пользовательскую MCP-конфигурацию в собственном профиле, а skill — в %USERPROFILE%\.agents\skills\meblipoint-create-course\ на Windows или $HOME/.agents/skills/meblipoint-create-course/ на macOS/Linux.
  • Claude Code использует свой user/project MCP config, а skill — $HOME/.claude/skills/meblipoint-create-course/ либо объявленный project path.
  • Агент вносит эти изменения сам после подтверждения. Пользователю не нужно вручную редактировать JSON/TOML или знать различия Windows и macOS.
  • После установки сначала открывают новую задачу. Полный перезапуск клиента нужен только если новая задача всё ещё видит старую схему tools или старый skill.

6. Skill: проверка и установка

Manifest v2 возвращает installTargets по клиентам. Агент должен:

Проверь и установи обновление MebliPoint Course Creator. Сначала покажи, что
изменилось; ничего не создавай в Wiki или Academy.
  1. определить текущий клиент;
  2. скачать ZIP только по URL из manifest;
  3. сверить zipSizeBytes и zipSha256;
  4. заменить только папку этого skill в пути текущего клиента;
  5. не трогать копии skill других клиентов без прямой просьбы пользователя.

Текущий client skill: meblipoint_create_course_skill_v1_7, версия 1.7.0.

7. Проверка подключения

Агент вызывает сначала course_creator_get_capabilities, затем bounded course_creator_get_instructions с section=start. Он сравнивает не только версию, но и фактически вызываемый список tools.

activeModeToolNamesSha256 считается так:

sha256(UTF-8 compact JSON.stringify(toolNames.sort()) без пробелов и завершающего перевода строки)

Ожидаемая identity этого релиза:

clientSkillIdentity: meblipoint_create_course_skill_v1_7
serverVersion: 1.29.2
remoteMcpVersion: remote_course_creator_mcp_v1_29_2
capabilityDiscoveryVersion: course_creator_capability_discovery_v0_8
workflowVersion: course_creator_authoring_workflow_v3
authoringContractVersion: course_creator_public_authoring_contract_v3
blockCatalogVersion: native_lesson_block_catalog_v0_2
assessmentCatalogVersion: academy_course_assessment_catalog_v0_1
activeMode: remote
activeModeToolCount: 48
activeModeToolNamesSha256: 47ef9c375d422c8a3d178e8c3f5c5d79de75a369b800cea62f6e7d6d2df5c947
publicResourceManifestVersion: course_creator_public_resource_manifest_v1
publicResourceCount: 10
publicResourceManifestSha256: e611a912c8878b972fa26b46539488dfae3aa80a8b41128c3e45f048b146b102
fingerprint: sha256:d2e90537b16742a49b2374197b3d36377f14b5dda17dab67946264799f883da7

Live response всегда авторитетнее примера. Итоговый статус — CURRENT, STALE CLIENT SUSPECTED или ACTION REQUIRED.

8. Диагностика

СимптомПричинаДействие
405 при GET endpointНормальный POST-only MCPПроверить descriptor/initialize
401OAuth не завершён, refresh отозван или клиент потерял auth stateПовторить обычный вход MebliPoint в браузере
403 MCP_DOMAIN_GRANT_REQUIRED с approvalUrlНет отдельного разрешения Course CreatorОткрыть ссылку, подтвердить доступ и повторить тот же запрос без нового OAuth-входа
403 с grant_revokedРазрешение Course Creator отозваноЗапросить новое явное разрешение; сервер не создаёт его автоматически
Другой 403Роль не разрешенаОбратиться к администратору
Tools отсутствуют без ошибкиServer entry не одобрен или закеширован auth modeПроверить approval и auth cache клиента
Capabilities знают tool, но клиент не может вызватьУстарела зарегистрированная schemaНовая задача, затем полный restart при необходимости
После нескольких дней снова требуется входRefresh отозван/истёк или локальное OAuth-состояние удаленоВойти снова; ручной токен не создавать

Не используйте прямой ручной HTTP-вызов для пишущих tools: он обходил бы клиентский слой подтверждения. Для read-only диагностики он допустим только как явно отмеченный технический fallback.

9. Несколько агентов

Параллельные read/analyse задачи разрешены. Для одной Wiki page, draft/application, Catalog run, deployment или migration target одновременно должен быть только один writer-owner.

Перед effect агент показывает точный scope domain/resourceType/resourceId и preview/CAS identity. Затем он получает короткий server-side lease через meblipoint_mcp_acquire_write_scope. Lease берётся только перед записью, а не на время чтения, анализа или ожидания пользователя; длительность 30–900 секунд, по умолчанию 300. После effect его нужно освободить. Для acquire агент генерирует приватный случайный acquisitionId и повторяет его только при восстановлении того же вызова; видимый ownerRunId не даёт права получить чужой lease token.

При busy или handoff_pending агент показывает владельца, назначение и срок, останавливается и не обходит конфликт повтором или другим написанием scope. Передача владельца делается только по явному решению пользователя через prepare/accept handoff; получатель после этого заново читает domain preview и CAS. Lease не заменяет авторизацию, проверку фактов или финальный revision/CAS.

Course Creator уже публикует общий coordination toolset и продолжает технически проверять собственные preview/CAS. Catalog MCP станет полностью защищён тем же слоем после того, как его adapter привяжет пишущие операции к тем же canonical scopes. До этого общий сервер видит добровольно объявленные Catalog scopes, но не может перехватить запись, выполненную старым Catalog writer в обход adapter. Точные scopes не образуют иерархию автоматически: поэтому первый Catalog adapter будет требовать общий scope фабрики для любой пакетной или товарной записи, а более узкие product/direction scopes использовать как описание воздействия.

10. Статус внешнего onboarding-аудита

Блокирующие проблемы OAuth consent, path-specific metadata, bounded instructions, классов пишущих tools, connection descriptor, Claude adapter, client-specific skill paths, проверяемого tool hash, объяснения GET 405 и refresh grant закрыты. Обычный удалённый пользователь подключается только через OAuth и не обслуживает секреты вручную.

Отдельно от пользовательского подключения завершается Catalog adapter и двухагентный black-box тест общего writer scope. Это координация конкурентных записей, а не ещё один способ подключения менеджера.

Приложение для операторов: PAT

PAT не является пользовательским onboarding-путём. Он допустим только для headless/CI или аварийной операторской диагностики клиента без OAuth. Его создание, хранение и отзыв выполняет уполномоченный оператор через защищённый процесс; менеджеру не передают команды для системных переменных. PAT нельзя помещать в skill, Git, Wiki, lesson files или отчёты.

Обычная работа после проверки

Пользователю не нужно называть tools. Например:

Занеси эти экспертные знания в Wiki MebliPoint и сначала покажи preview.

Skill и live capability discovery сами выбирают нужный маршрут. Любой внешний effect остаётся отдельным подтверждаемым действием.