Skip to main content
Glama
cerase-ai

cerase-media MCP

Official
by cerase-ai

cerase-media MCP

Мультимодальное понимание первого уровня (M-MEDIA-1 = объединение прежних cerase-ocr + cerase-transcriber): пять асинхронных инструментов над алиасом multimodal через cerase-litellm, оплачиваются на агента. Последние два (analyze_ui, compare_screenshots) — пара скриншотов UX/UI, добавленная M-CERASE-MEDIA-UX — тот же конечный multimodal, специальные промпты, без дополнительных зависимостей.

Инструмент

На какой вопрос отвечает

Возвращает

ocr

что НАПИСАНО на этом изображении?

{text, model}

describe_image

что ПОКАЗЫВАЕТ это изображение?

{description, model}

transcribe

что говорит это аудио?

{text, model}

analyze_ui

что в этом скриншоте интерфейса? — структурированный аудит компоновки, типографики, цветов, интерактивных элементов, текста, визуальных ошибок, доступности, согласованности

{analysis, model}

compare_screenshots

что изменилось между двумя скриншотами? — визуальное различие до/после (компоновка / текст / стиль / новое / удалённое / регрессии)

{diff, model}

Изображение принимается тремя способами (выберите один): path (файл в CERASE_TOOL_WORKSPACE_ROOT), image_url или image_base64. compare_screenshots принимает варианты с двумя изображениями (path1/image1_url/ image1_base64 и path2/…).

Асинхронность по замыслу: инструменты ожидают LLM ~100% времени, поэтому конкурентные запросы выполняются по параллельным каналам ввода-вывода внутри единого контейнера-раннера (без очереди на модальность). ffmpeg (нормализация аудио) запускается как асинхронный подпроцесс.

Длинное аудио: чанкер

transcribe разрезает всё, что длиннее чанка (chunker.py), транскрибирует фрагменты конкурентно и собирает текст обратно. Каждый фрагмент после первого повторяет последние секунды предыдущего, чтобы слово не потерялось на срезе, и при соединении фрагментов повторённые слова находятся и удаляются. Вызывающий, который знает, где меняются говорящие, может передать таймлайн говорящих: срезы переносятся на смену реплик, где ничего повторять не нужно.

Каждый фрагмент — включая запись, достаточно короткую, чтобы не нуждаться в разрезании, — получает секунду тишины в начале. Аудио, начинающееся со слова, возвращается без первого предложения.

Крутилка

По умолчанию

Что решает

CERASE_TRANSCRIBE_CHUNK_SECONDS

120

длительность фрагмента и как скоро придёт первый текст

CERASE_TRANSCRIBE_CHUNK_OVERLAP_SECONDS

6

сколько аудио повторяет каждый слепой срез

CERASE_TRANSCRIBE_CONCURRENCY

4

сколько фрагментов одной записи в полёте одновременно

CERASE_TRANSCRIBE_LEAD_SILENCE_SECONDS

1

тишина в начале каждого фрагмента

Related MCP server: mcp-multimedia-server

Тот же код как HTTP-эндпоинт

transcription_api.py обслуживает POST /v1/audio/transcriptions — интерфейс, который уже говорят драйверы встречных команд, — через тот же чанкер. Сервис compose cerase-transcription запускает этот образ на этой точке входа:

python -m uvicorn --app-dir /app --factory transcription_api:create_app --host 0.0.0.0 --port 8080

Он принимает поля OpenAI (file, model, language, response_format, stream) плюс два своих: agent_id (или заголовок X-Cerase-Agent-Id), на который начисляется каждый вызов модели и который обязателен, и speaker_timeline — JSON-массив {start, end, speaker}. Вызывающие представляют CERASE_INTERNAL_SECRET как bearer; если секрет не задан, каждый запрос отклоняется. С stream=true каждый фрагмент уходит как событие transcript.text.delta, как только он готов, и запуск завершается событием transcript.text.done.

Env: LITELLM_BASE_URL, LITELLM_MASTER_KEY (ключ сервиса с ограниченной областью), CERASE_MULTIMODAL_ALIAS (по умолчанию multimodal), CERASE_TOOL_WORKSPACE_ROOT (корень защиты от обхода путей), CERASE_INTERNAL_SECRET (bearer HTTP-эндпоинта).

Related MCP Connectors

Related MCP Servers