Skip to main content
Glama
cerase-ai

cerase-media MCP

Official
by cerase-ai

cerase-media MCP

퍼스트파티 멀티모달 이해(M-MEDIA-1 = 기존 cerase-ocr + cerase-transcriber의 통합): cerase-litellm을 통한 multimodal 툴-모델 별칭 위에서 동작하는 5개의 비동기 툴로, 에이전트별로 과금됩니다. 마지막 두 개(analyze_ui, compare_screenshots)는 M-CERASE-MEDIA-UX가 추가한 UX/UI 스크린샷 페어입니다 — 동일한 multimodal 엔드포인트, 특화된 프롬프트, 추가 의존성 없음.

툴

답하는 질문

반환값

ocr

이 이미지에 무엇이 쓰여 있나?

{text, model}

describe_image

이 이미지는 무엇을 보여주나?

{description, model}

transcribe

이 오디오는 무엇을 말하나?

{text, model}

analyze_ui

이 UI 스크린샷에는 무엇이 있나? — 레이아웃, 타이포그래피, 색상, 인터랙티브 요소, 텍스트, 시각적 오류, 접근성, 일관성에 대한 구조적 감사

{analysis, model}

compare_screenshots

두 스크린샷 사이에 무엇이 바뀌었나? — 전/후 시각적 차이(레이아웃 / 텍스트 / 스타일 / 추가됨 / 제거됨 / 회귀)

{diff, model}

이미지 입력은 세 가지 방식으로 허용됩니다(하나 선택): path(CERASE_TOOL_WORKSPACE_ROOT 아래의 파일), image_url, 또는 image_base64. compare_screenshots는 두 이미지 변형(path1/image1_url/image1_base64 및 path2/…)을 사용합니다.

설계상 비동기: 이 툴들은 ~100% LLM 대기 시간이므로, 동시 요청은 단일 러너 컨테이너 내부의 병렬 I/O 레인에서 실행됩니다(모달리티별 큐 없음). ffmpeg(오디오 정규화)는 비동기 서브프로세스로 실행됩니다.

긴 오디오: 청커(chunker)

transcribe는 청크보다 긴 모든 것을 잘라내고(chunker.py), 조각들을 동시에 전사한 후 텍스트를 다시 조합합니다. 첫 번째 이후의 각 조각은 이전 조각의 마지막 몇 초를 반복하므로 단어가 절단 지점에서 유실될 수 없으며, 조각들이 결합될 때 반복된 단어를 찾아 제거합니다. 화자 변경 지점을 아는 호출자는 화자 타임라인을 넘길 수 있습니다: 절단이 화자 전환 지점으로 이동하여 반복이 필요 없게 됩니다.

모든 조각 — 절단이 필요 없을 만큼 짧은 녹음도 포함 — 앞에 1초의 무음이 추가됩니다. 단어로 시작하는 오디오는 첫 문장이 누락된 채로 반환됩니다.

설정값

기본값

결정 내용

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를 제공합니다 — 드라이버가 이미 사용하는 인터페이스 — 동일한 청커 위에서 동작합니다. 컴포즈 서비스 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 — {start, end, speaker} 형식의 JSON 배열. 호출자는 CERASE_INTERNAL_SECRET을 bearer로 제시합니다; 시크릿이 설정되지 않으면 모든 요청을 거부합니다. stream=true인 경우 각 조각은 도착하는 즉시 transcript.text.delta 이벤트로 나가고, 실행은 transcript.text.done으로 종료됩니다.

환경 변수: LITELLM_BASE_URL, LITELLM_MASTER_KEY(범위가 제한된 서비스 키), CERASE_MULTIMODAL_ALIAS(기본값 multimodal), CERASE_TOOL_WORKSPACE_ROOT(경로 탐색 방지 루트), CERASE_INTERNAL_SECRET(HTTP 엔드포인트의 bearer).

Related MCP Connectors

Related MCP Servers