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

MCP-сервер

Ownlate поднимает сервер Model Context Protocol, поэтому ассистент вроде Claude может читать ваши проекты, переводить сегменты, гонять проверки качества и собирать релизы — с вашего разрешения и только в тех пространствах, которые вы разрешили.

Адрес: https://mcp.ownlate.com

Сервер говорит по streamable HTTP и авторизует через OAuth 2.1, включая динамическую регистрацию клиента, поэтому большинству клиентов не нужно ничего, кроме адреса.

Окно терминала
claude mcp add --transport http ownlate https://mcp.ownlate.com/

Первый вызов возвращает 401 с адресом метаданных защищённого ресурса; клиент идёт по нему, регистрируется и отправляет вас на экран согласия. Там вы выбираете:

  • Какие пространства доступны токену. Никакого другого он не увидит, в скольких бы вы ни состояли.
  • Какие права он может применять — из тех же кодов прав, что и всё остальное.

Для устройства без браузера тот же сервер поддерживает device-поток: клиент показывает код, вы подтверждаете его на platform.ownlate.com/device.

Токен никогда не может больше вашего. Выдать ассистенту translation:approve, не имея его самому, — значит не выдать ничего.

Claude Desktop — claude_desktop_config.json:

{
"mcpServers": {
"ownlate": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.ownlate.com/"]
}
}
}

VS Code — .vscode/mcp.json:

{
"servers": {
"ownlate": {
"type": "http",
"url": "https://mcp.ownlate.com/"
}
}
}

Всё, что возвращает инструмент, читает модель подключённого клиента: исходные тексты, переводы, ключи, термины глоссария, комментарии и имена тех, кто их написал. Подключайте ассистента только там, где это допустимо, — для пространства под договором, который это запрещает, оно недопустимо.

Что не уходит никогда: ключ OTA-раздачи проекта, учётные данные интеграций и всё, что касается оплаты. Ни один инструмент их не возвращает.

Выданный доступ можно отозвать: platform.ownlate.com → профиль → подключённые приложения. После отзыва токены перестают работать со следующего вызова.

Тридцать два инструмента, сгруппированные по тому, чего касаются.

ИнструментЧто возвращает
list_workspacesПространства, доступные токену
get_workspaceОдно из них
list_projectsПроекты пространства
get_projectПроект с исходным и целевыми языками
list_languagesКаталог языков
add_target_languagesДобавляет языки проекту, сохраняя уже имеющиеся
ИнструментЧто возвращает
list_segmentsСегменты проекта с фильтром по языку и статусу
search_segments_by_keysСегменты по списку ключей; ключи без сегмента возвращаются отдельно
get_project_progressДоля переведённого и утверждённого по языкам
get_project_analyticsСводные счётчики по проекту
list_translation_filesФайлы, заведённые в проекте
get_translation_historyКто менял перевод, когда и что было до того
export_translationsЦелая локаль одним вызовом, в форме файла локализации
ИнструментЧто делает
translate_segmentСохраняет перевод одного сегмента на одном языке
save_draft_translationКладёт его черновиком, оставляя проверку человеку
mark_translation_reviewedФиксирует, что перевод прочитан
approve_translationУтверждает его
reject_translationВозвращает на доработку
create_segmentДобавляет ключ с исходным текстом
import_segmentsПишет много ключей разом: без языка — исходники, с языком — переводы
update_segment_source_textПереписывает исходную строку
set_segment_translatableПомечает ключ, который должен уехать как есть
ИнструментЧто делает
search_translation_memoryКак похожие исходники переводили раньше, с оценкой совпадения
list_glossary_entriesТермины и запрещённые формулировки
find_glossary_matchesЗаписи глоссария, встретившиеся в заданном тексте
check_segment_qualityКакие правила QA нарушает перевод
list_segment_commentsОбсуждение сегмента
add_segment_commentОставляет заметку — вопрос или объяснение выбора
ИнструментЧто делает
list_releasesРелизы с версиями, языками и числом сегментов
create_releaseСнимает утверждённые переводы в новый релиз
recreate_latest_releaseПересобирает последний релиз из того, что утверждено сейчас, сохраняя версию
get_ota_distributionРаздачу проекта — без ключа доступа

Инструмент показывается, только если право есть у токена, а вызов проходит, только если право по-прежнему есть у вас в пространстве. Отобранное право убирает инструмент со следующего же вызова, перевыпускать токен не нужно.

ПравоИнструменты
workspace:viewlist_workspaces, get_workspace, find_glossary_matches
project:viewlist_projects, get_project, list_languages, list_glossary_entries, list_releases, list_translation_files, get_ota_distribution
project:createadd_target_languages, create_release, recreate_latest_release
segment:viewlist_segments, search_segments_by_keys, get_project_progress, get_project_analytics, get_translation_history, search_translation_memory, check_segment_quality, list_segment_comments, export_translations
segment:createcreate_segment, import_segments, update_segment_source_text, set_segment_translatable
translation:writetranslate_segment, save_draft_translation, add_segment_comment
translation:approveapprove_translation, reject_translation, mark_translation_reviewed

Каждый изменяющий вызов попадает в журнал аудита пространства как mcp.<инструмент> — вместе с клиентом и грантом, от которого он пришёл.

Два ресурса читаются без вызова инструментов:

  • ownlate://project/{projectId}/progress — счётчики и процент по каждому языку.
  • ownlate://project/{projectId}/release/latest — версия, языки и число сегментов последнего релиза.

Два промпта собирают работу, которую обычно просят у ассистента. Оба принимают projectId и language:

  • translate_missing — проходит непереведённые ключи, сверяется с памятью переводов и глоссарием и пишет черновики.
  • review_translations — вычитывает язык против глоссария и правил качества и сообщает, что не так, ничего не меняя.

Грант может делать 120 вызовов в минуту; сверх того сервер отвечает 429 с Retry-After. Сессия живёт час простоя, после чего клиент сам проходит инициализацию заново.

Несколько сценариев, в которых это хорошо себя ведёт:

  • Проверять, а не писать. list_segments со статусом needs_review, затем check_segment_quality и find_glossary_matches по каждому — ассистент отмечает то, на что стоит посмотреть человеку, вместо того чтобы утверждать самому.
  • Первый проход перевода в черновик. save_draft_translation вместо translate_segment, чтобы в очередь проверки ничего не попадало непрочитанным.
  • Держать терминологию честной. search_translation_memory до того, как писать, — тогда ассистент переиспользует формулировку, уже утверждённую командой, а не выдумывает синоним.
  • Собирать релиз после слияния. get_project_progress, а затем create_release, когда нужные вам языки готовы.