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:view | list_workspaces, get_workspace, find_glossary_matches |
project:view | list_projects, get_project, list_languages, list_glossary_entries, list_releases, list_translation_files, get_ota_distribution |
project:create | add_target_languages, create_release, recreate_latest_release |
segment:view | list_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:create | create_segment, import_segments, update_segment_source_text, set_segment_translatable |
translation:write | translate_segment, save_draft_translation, add_segment_comment |
translation:approve | approve_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, когда нужные вам языки готовы.