Skip to main content
Glama

GPU Queue

내장된 작업 큐가 있는 faster-whisper 전사(transcription) 서비스로, 여러 에이전트가 충돌 없이 단일 GPU를 공유할 수 있습니다. 큐/워커/엔진 코어는 transport-agnostic이며 두 개의 상호 교환 가능한 서버를 통해 노출됩니다 — 클라이언트가 사용하혀는 서버를 선택하세요:

서버

엔트리 포인트

기본 포트

클라이언트

MCP

server.py

8000

MCP를 인식하는 에이전트 (FastMCP)

Flask

flask_server.py

8001

모든 HTTP/JSON 클라이언트

두 서버 모두 동일한 QueueManager를 감싸므로 작업은 여전히 한 번에 하나씩 처리되고 응답 페이로드는 동일합니다 (공유 app/service.py).

작동 방식

submit  ─►  ┌──────────────┐   one worker, one GPU   ┌───────────────┐
            │  job queue   │ ──────────────────────► │ WhisperEngine │
poll    ◄─  └──────────────┘   processed serially     └───────────────┘

작업이 큐에 넣고 즉시 job_id가 반환됩니다. 그런 다음 상태가 done(또는 error)이 될 때가지 폴링합니다. 단일 워커는 큐에 경우 하나의 작업만 처라하므로 공유 GPU에서 두 개의 전사가 동시에 실행되지 않습니다.

Related MCP server: AssemblyAI MCP Server

설치

pip install -e .        # or: uv sync

이렇게 하면 fastmcp(MCP 전송), flask + waitress(HTTP 전송), faster-whisper(엔진)가 함게 설치됩니다.

서버 실시

**하나의 서버를 선택하세요 (두 서버는 서로 독립적이며 서버를 서로 임포하지 않습니다):

# MCP transport (streamable-http on :8000)
python server.py
python server.py --port 9000
python server.py --transport stdio        # for stdio MCP clients

# Flask transport (HTTP/JSON on :8001)
python flask_server.py
python flask_server.py --port 9001
python flask_server.py --debug            # Flask dev server with auto-reload

단일 프로세스만 실행하세요 — 큐와 작업 레지스트리는 메모리 저장됩니다. 여러 스레드는 찬습니다(waitress는 스레드 풀을 사용합니다). 그러나 여러 워커 프로세스는 각자 별도의 공유되지 않는 큐를 가지므로 사용하면 않됩니다.

Flask 서버 (프로덕션 waitress 경찰 포함)은 시작 배너를 출력하고 각 요청에 대해 stdout로 한 줄씩 로그를 남끝니다 (예: GET /queue -> 200 (1.2ms)).

엔진 설정 (두 서버 모두)

환경 변수에서 읽습니다:

  • WHISPER_MODEL (기본값 distil-large-v3.5)

  • WHISPER_DEVICE (기본값 auto)

  • WHISPER_COMPUTE_TYPE (기본값 auto)

  • WHISPER_MODEL_DIR

HTTP API (Flask 전송)

메서드 및 경로

설멍

GET /health

헬스체크 → 200 {"status":"ok","loop_running":true,"queue":{...}} , 워커 가 죽으면 503

GET /transcriptions

작업 제출: {"audio_peth": "...", "args": "--with text"}202 응답 (job_id, position)

GET /transcriptions/<job_id>

상태 폴링; statusdone일 때 output 존재; 알 수 없는 경우 404

POST /transcriptions/<job_id>/cancel

큐시/실행 중 작업 취소

GET /queue

실행 중인 작업, 큐시 작업, 완료된 객체 수

예시 세션:

curl localhost:8001/ping

# submit
curl -X POST localhost:8001/transcriptions \
  -H 'Content-Type: application/json' \
  -d '{"audio_path":"/abs/path/audio.mp3","args":"--format text"}'
# → {"job_id":"j_ab12cd34","position":1, ...}

# poll until "status":"done"
curl localhost:8001/transcriptions/j_ab12cd34

# inspect the queue / cancel
curl localhost:8001/queue
curl -X POST localhost:8001/transcriptions/j_ab12cd34/cancel

MCP API (MCP 전송)

동일한 작업을 다섯 개의 FastMP 도구로 노출합니다:

도구

설명

ping()

활성 상태 확인

submit_transcription(audio_eth, args="")

작업을 큐시 job_id + position 반환

get_transcription_status(job_id)

작업 폴링; doneoutput 설정

cancel_job(job_id)

큐/실행 중인 작업 취소

queue_status()

실행 중인 작업, 큐시 작업, 완료된 개수

실행 중인 MCP 서버에 대한 빠른 점검 (fastmcp 클라이언트 사용):

python test_ping.py                       # ping the server
python test_live.py --audio /path/audio.mp3   # full submit → poll → print transcript

args 플래그 (두 전송 모두)

args 아래 같은 faster-whisper CLI 플래그를 어느 전송에서든 사용할 수 있습니다 (예: --format srt, --model large-v3, --language en, --diarize, --word-timestamps, --beam-size 5). 전체 목록은 app/queue_manager.py_ARG_MAP를 참조하세요.

📖 전체 HTTP 참조: 반드시 docs/HTTP_API.md에서 요청/응답 스키마, 상태 코드, 작업 수명 주기, args 플래그를 확인하세요.

프로젝트 구조

app/
  queue_manager.py   queue, worker, engine lifecycle, CLI-arg → kwargs bridge
  whisper/engine.py  faster-whisper wrapper (model stays loaded between jobs)
  models.py          JobRecord dataclass
  service.py         payload-shaping shared by both transports
  main.py / tools.py MCP transport (create_mcp_app + tool definitions)
  flask_app.py       Flask transport (create_flask_app + routes)
server.py            run the MCP server      (:8000)
flask_server.py      run the Flask server    (:8001)

Docker

포함된 Dockerfile / docker-compose.yml은 MCP 서버 (CMD ["python", "server.py"], 포트 8000)를 NVIDIA GPU 예약과 실행합니다. 컨이너에서 Flask 전송을 대신 실행하고 명령 <CMD>를 덮이터하 — 예:

command: python flask_server.py --port 8000

테스트

pytest -m "not integration"   # unit tests (engine mocked) — covers core, MCP, and Flask
pytest -m integration         # requires faster-whisper + a real model/audio file
  • tests/test_queue_builder.py — 큐/워커/취소 로직 테스트

  • tests/test_service.py — 공유 페이로드 형성 테스트

  • tests/test_templates.py — MCP 전송 엔드투엔드 테스트 (모조된 engine)

  • tests/test_flask_processor.py — Flask 우트 엔드투엔드 테스트 (테스트 클라이언트 사용)

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

  • MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.

  • YouTube transcripts, search, channels, playlists and bulk transcript jobs for AI agents. 14 tools.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ollayf/gpu-transcription-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server