Transcodely MCP server
2026년 11월 2일 커밋AI 에이전트가 URL이나 프롬프트를 통해 비디오를 트랜스코딩, 호스팅, 캡션 생성하고 AI 기반 인사이트와 하이라이트를 제공할 수 있게 합니다.
다른 이름 transcodely/mcp, mcp
- 스타
- 0
- Tools
- 20
- 다운로드, 30일
- —
- 최신 버전
- 1.1.0
- 마지막 커밋
- 2026년 11월 2일
- 라이선스
- MIT
Transcodely MCP란?
Transcodely은(는) MCP server입니다. AI 에이전트가 URL이나 프롬프트를 통해 비디오를 트랜스코딩, 호스팅, 캡션 생성하고 AI 기반 인사이트와 하이라이트를 제공할 수 있게 합니다. 20개 도구를 제공합니다. 예: create_job, create_preset, create_video_from_url.
프로젝트 README에서 생성된 요약
Transcodely MCP server 정보
Transcodely는 AI 에이전트가 Model Context Protocol을 통해 미디어 워크플로우를 관리할 수 있도록 설계된 전문 비디오 파이프라인을 제공합니다. 이 호스팅 서비스는 에이전트가 비디오 URL을 입력받아 적응형 비트레이트(adaptive bitrate) 계단식으로 트랜스코딩하고, 파일을 호스팅하며, 캡션을 생성할 수 있도록 지원합니다. 기존 작업물을 삭제, 취소 또는 제거할 수 있는 도구가 없는 엄격한 안전 모델로 구축되어, 에이전트가 실수로 자산을 파괴하거나 실행 중인 작업을 중단하는 것을 방지합니다.
개발자는 Claude Desktop, Cursor 또는 Claude Code와 같은 클라이언트에서 단 한 번의 OAuth 클릭으로 간편하게 인증하여 연결할 수 있습니다. 헤드리스(headless) 또는 CI 환경의 경우, 서버는 bearer token을 통한 인증을 지원합니다. 도구 세트에는 create_job, generate_insights, get_output_report와 같은 20개의 특정 함수가 포함되어 있어, 에이전트가 비용을 모니터링하고 기술 측정 보고서를 확인하며 SEO 마크업을 가져올 수 있습니다. 대부분의 도구 호출은 무료이지만, 하이라이트를 생성하거나 URL에서 비디오를 생성하는 특정 작업은 비용이 발생하는 프로세스를 트리거합니다.
활용 사례
- 1자동 비디오 호스팅에이전트가 원격 비디오 URL을 받아 단일 명령으로 호스팅 및 재생 가능한 링크로 변환할 수 있습니다.
- 2AI 기반 콘텐츠 분석에이전트에게 호스팅된 비디오에서 요약, 핵심 포인트 및 챕터를 추출하도록 지시할 수 있습니다.
- 3자동 하이라이트 생성에이전트가 인용할 만한 순간을 식별하고 이를 짧은 MP4 클립으로 자동 편집할 수 있습니다.
- 4기술 품질 검증개발자가 에이전트에게 트랜스코딩된 파일이 요청된 해상도 및 코덱 사양과 일치하는지 확인하도록 요청할 수 있습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
Transcodely MCP 설치 방법
형식 확인: 2026년 11월 10일Claude Code에 Transcodely MCP 설치
$ claude mcp add --transport http mcp https://mcp.transcodely.com/mcpCursor에 Transcodely MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"mcp": {
"url": "https://mcp.transcodely.com/mcp"
}
}
}VS Code에 Transcodely MCP 설치
.vscode/mcp.json
{
"servers": {
"mcp": {
"type": "http",
"url": "https://mcp.transcodely.com/mcp"
}
}
}Codex에 Transcodely MCP 설치
~/.codex/config.toml
[mcp_servers.mcp] url = "https://mcp.transcodely.com/mcp"
Gemini CLI에 Transcodely MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"mcp": {
"httpUrl": "https://mcp.transcodely.com/mcp"
}
}
}Transcodely MCP 도구 20
README에서 감지됨create_jobcreate_presetcreate_video_from_urlgenerate_captionsgenerate_highlightsgenerate_insightsget_ingest_ruleget_job_statusget_output_reportget_pricingget_seo_markupget_transcript
| create_job | — | |
| create_preset | — | |
| create_video_from_url | — | |
| generate_captions | — | |
| generate_highlights | — | |
| generate_insights | — | |
| get_ingest_rule | — | |
| get_job_status | — | |
| get_output_report | — | |
| get_pricing | — | |
| get_seo_markup | — | |
| get_transcript | — |
도구 20개 모두 보기도구 수 줄이기
get_usageget_videolist_ingest_eventslist_ingest_ruleslist_jobslist_presetsset_spend_limitupdate_preset
| get_usage | — | |
| get_video | — | |
| list_ingest_events | — | |
| list_ingest_rules | — | |
| list_jobs | — | |
| list_presets | — | |
| set_spend_limit | — | |
| update_preset | — |
구성
TRANSCODELY_API_KEYTRANSCODELY_API_PATH
| 이름 | 설명 | 유형 |
|---|---|---|
| TRANSCODELY_API_KEY | — | |
| TRANSCODELY_API_PATH | — |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식
- 소스 저장소 연결 및 접근 가능transcodely/mcp is public and reachablegithub.com/transcodely/mcp ↗통과
- 패키지가 이 저장소를 소스로 지정검사되지 않음
- 빌드 출처(Sigstore 증명)검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-02github.com/transcodely/mcp ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 패키지와 의존성에 심각한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음20 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨No tool named like delete, drop or exec통과
- 원격 endpoint가 MCP 핸드셰이크에 응답HTTPS endpoint answered 401 (sign-in required)통과
README
GitHub에서 보기Transcodely MCP Server
A video pipeline for AI agents, over the Model Context Protocol — with nothing on it that can delete your work.
Hand your agent a video URL and it comes back a playable link: transcoded into an ABR ladder, hosted, captioned if you ask. Then let it read back what it actually produced, what it cost, and why an upload did not become a job. No delete, no cancel, no key material. Connect with one OAuth click — no API key to create or paste.
- Server URL (streamable HTTP):
https://mcp.transcodely.com/mcp - Product page: https://www.transcodely.com/mcp
- Connect guide: https://www.transcodely.com/docs/guides/mcp
- Registry identifier:
com.transcodely/mcp
This is the public home of the hosted server: connect instructions, the tool surface, and the registry manifest. The server itself is a hosted service — there is nothing to install or run.
Connect
Claude Code
claude mcp add --transport http transcodely https://mcp.transcodely.com/mcp
Then run /mcp inside Claude Code and pick Authenticate — your browser opens, you approve, and the tools are live. No Transcodely account yet? One is created for you during authorization.
claude.ai / Claude desktop — Settings → Connectors → Add custom connector → https://mcp.transcodely.com/mcp.
Cursor — add to ~/.cursor/mcp.json:
{
"mcpServers": {
"transcodely": { "type": "http", "url": "https://mcp.transcodely.com/mcp" }
}
}
Any other client that supports remote MCP servers over streamable HTTP works the same way. For headless use (CI, server-side agents), attach a Transcodely API key as a bearer token instead — see the connect guide.
Tools (20)
Twenty tools: twelve only read, six create something — five of those start work you are billed for, and saving a preset is free — and two overwrite a setting that only affects work created after it. No tool on this surface deletes, cancels, removes or rotates anything.
| Tool | Effect | What it does |
|---|---|---|
create_job |
creates work · billable | Create a transcoding job. |
create_preset |
creates · free | Create a custom encoding preset for this app: a named, reusable bundle of encoding settings that create_job can reference by slug. |
create_video_from_url |
creates work · billable | Ingest a remote https:// video and host it in one call — this is the tool for "transcode and host this, give me a link". |
generate_captions |
creates work · billable | Generate AI captions (subtitles) for a hosted video by id (vid_...). |
generate_highlights |
creates work · billable | Cut short highlight clips (MP4) from a hosted video by id (vid_...) around the quotable moments its ready AI insights picked. |
generate_insights |
creates work · billable | Generate AI insights (title suggestions, summary, key points, chapters, questions, key terms, quotable highlights, topics) for a hosted video by id (vid_...) from its existing AI captions; nothing is re-transcribed. |
get_ingest_rule |
read | Fetch one ingest rule by id (ing_...): its origin, enabled state, filters, the job it submits, and its event/job counts. |
get_job_status |
read | Get a concise status snapshot for a transcoding job by id (job_...): overall status and progress, any error code/message, and per-output status/progress with errors. |
get_output_report |
read | Get the full measurement report for one job output (job_... plus out_...): what the produced file turned out to BE, measured from the written file, and the verdict of comparing that against what the job asked for. |
get_pricing |
read | Return the prices this app pays, in EUR: every chargeable item (encoding per codec, the resolution, quality and feature multipliers, the captions, insights and processing fees, hosting storage and delivery) with its rate and unit, custom: true where this account has a custom rate, and the public list price beside it. |
get_seo_markup |
read | Get ready-to-paste SEO markup for showing a hosted video (vid_..., ready, public or unlisted) on your own web page at watch_url: schema.org VideoObject JSON-LD (with chapter key moments when the video has insights), a video sitemap entry, and an escaped HTML fragment with the summary, chapter links and full transcript. watch_url is only embedded in the output, never fetched. |
get_transcript |
read | Get the transcript of a hosted video (vid_...) produced by its AI captions, as txt (plain text, the default), md (Markdown with timestamp links) or json (paragraphs, sentences and words with timings). |
get_usage |
read | Return hosting usage and cost for a billing month: videos encoded, encoding minutes, average storage, egress, request counts, and per-line and total cost in EUR. |
get_video |
read | Fetch a hosted video by id (vid_...): status, visibility, title, duration, poster image, encoded renditions (resolution, codec, bitrate, dimensions), and — once status is "ready" — a playback block. |
list_ingest_events |
read | List the storage deliveries this app's ingest rules received, newest first, with what became of each: the bucket and object key, the outcome (received, matched, created, skipped or failed), the REASON for a skip or failure, and the job id when one was created. |
list_ingest_rules |
read | List this app's ingest rules: the standing instructions that turn an object landing in a storage origin into a transcoding job. |
list_jobs |
read | List transcoding jobs for the authenticated app, newest first. |
list_presets |
read | List the encoding presets available to this app: the read-only ones the platform ships and the app's own custom ones. |
set_spend_limit |
overwrites a setting | Set or clear this app's monthly transcoding spend limit, in EUR. |
update_preset |
overwrites a setting | Update a custom preset's settings by id (pst_...). |
Generated from tools.json by npm run readme:gen — do not edit by hand. Read-only: 12. Writing: 8. Billable: 5.
What the surface cannot do
The promise is narrow and literal, and it is checked rather than asserted: test/vendored.mjs re-derives it from tools.json on every CI run and fails if a future release adds a tool whose name begins with delete, cancel, remove, purge, rotate or destroy.
- Nothing is deleted or cancelled. No tool removes a video, a job, an output, a preset or a rule, and none stops work that is already queued or running. An agent that decides mid-task to "clean up" has no instrument for it.
- Nothing reads key or secret material. There is no tool for API keys, and the ingest tools deliberately withhold even the prefix-and-last-four hint the REST API exposes: a rule's inbound secret is shown once, at creation, and never by this server. A tool result lands in an agent transcript, so anything a transcript should not carry is not on the surface at all.
- Nothing reaches your organization. Members, plans, invoices, team settings and the admin surface have no tools.
- The overwriting pair only ever reaches forward.
update_presetandset_spend_limitcarrydestructiveHint: true, which in the protocol means "replaces a value" rather than "additive" — not that anything is removed. A preset is read and expanded when a job is created, so editing one never reaches a job that already exists; lowering a spend limit blocks the next job and never stops one in flight.
Who can change the spend limit
set_spend_limit is the only tool with an authorization rule of its own, because it is the only one that moves money policy.
- It requires an organization owner or admin, signed in through the browser OAuth flow. That is the same membership check the REST API applies, plus one rule REST does not have.
- API-key sessions are refused outright — including the stdio bridge below, which authenticates with
ak_…. The refusal says so in words rather than failing as a generic permission error. This surface is deliberately stricter than REST here: over REST, a key can manage its own app's limit. - It reads the limit back instead of echoing what it was given: a limit set above a plan or platform ceiling stores fine and changes nothing, because the lower ceiling still binds. The result carries the previous and the new effective limit and the rung it comes from.
Auth and guardrails
- OAuth 2.1 with PKCE via browser consent; the server implements RFC 9728 Protected Resource Metadata and RFC 8707 resource indicators.
- Every tool call is scoped to one Transcodely app, resolved from the session, never from a tool argument. An agent cannot widen its own scope by passing a different id: a job, video, preset or rule belonging to another app reads back as not found rather than as a permission error, which would confirm it exists. Connect to
https://mcp.transcodely.com/mcp/app_…to pin a specific app; the bare URL resolves to your organization's oldest active app. - An
ak_…key presented at a different app's URL is rejected outright. - Every call writes the same audit trail as the equivalent REST call.
- The MCP server is free to connect. Five tools start billable work —
create_job,create_video_from_url,generate_captions,generate_insightsandgenerate_highlights— charged at the ordinary Transcodely rates. Every other tool is free to call, including the ones that write: saving a preset or setting a spend limit costs nothing.create_video_from_urldeletes the original source file 7 days after the video is ready unless you passretain_source; a retained source is billed as storage and appears on the invoice as "Retained source videos".
Try it
- "Transcode and host this video and give me a link: https://www.transcodely.com/videos/bbb-30s.mp4"
- "Generate English captions for that video."
- "Generate insights for that video, then cut highlight clips from it."
- "What's the status of my last job?"
- "Did that 1080p output actually come out as 1080p h264? Show me the measured report."
- "I uploaded a file to my bucket and no job appeared — what happened?"
- "How much have I spent on video this month, and which day cost the most?"
Run locally (stdio bridge)
Remote-capable clients should connect straight to the hosted endpoint above — that's the one-click OAuth path. For stdio-only clients, sandboxes, and headless use, this repo is also a runnable bridge that serves the same tools over stdio and forwards calls to the hosted server:
# with an API key (create one in the Transcodely dashboard):
TRANSCODELY_API_KEY=ak_... npx github:transcodely/mcp
# or via Docker:
docker build -t transcodely-mcp .
docker run -i --rm -e TRANSCODELY_API_KEY=ak_... transcodely-mcp
Without TRANSCODELY_API_KEY the bridge still starts and answers introspection
(initialize, tools/list); tool calls return an error pointing at the two auth paths.
set_spend_limit is listed but always refused over this path — see the rule above.
How tools.json is kept honest
tools.json is generated, not written: it is the byte-exact stdout of
the Transcodely API's own export, go run ./cmd/mcp --dump-tools, run in a checkout of the
release pinned in api-pin.json. The README table above is generated from
it in turn. Two checks hold that chain:
| Check | Command | Runs |
|---|---|---|
| Vendored consistency — counts, annotations, the "nothing deletes" promise, manifest versions, the README naming every tool | node test/vendored.mjs |
every push and PR |
| The bridge serves exactly the vendored surface, keyless calls guide | node test/introspect.mjs |
every push and PR |
The README table is regenerated from tools.json |
node scripts/gen-readme.mjs --check |
every push and PR |
tools.json is byte-exact with the pinned api release |
npm run tools:check |
when a token is available — see below |
To land a tool-surface change:
# 1. point api-pin.json's "ref" at the release you are vendoring
# 2. read a DETACHED WORKTREE at that tag — never the shared api checkout,
# which other sessions commit to and which sits on master
git -C ~/git/transcodely/api worktree add --detach /tmp/api-pin v5.X.0
TRANSCODELY_API_PATH=/tmp/api-pin npm run tools:sync
npm run readme:gen
git -C ~/git/transcodely/api worktree remove /tmp/api-pin
# 3. bump the version in server.json + package.json, in the same commit
npm test
Or skip step 2 entirely: with API_REPO_TOKEN set and no TRANSCODELY_API_PATH, the script
clones the pinned tag itself. That is the only mode that verifies the pin, so prefer it.
The honest limitation: transcodely/api is a private repository, so the parity job needs
a read token in API_REPO_TOKEN and cannot run on a pull request from a fork. When the token
is absent the script exits 78 and the job reports not armed rather than passing — it never
claims a parity it did not check. The always-on checks above still catch the drift that has
actually bitten here: an export that moved while the README, the manifest and the bridge kept
the old numbers.
Manifest
server.json is the manifest published to the official MCP registry. Its
version must be bumped for a republish to take effect — the registry serves the last
published version's description, so a description edit with an unchanged version is invisible.
Transcodely MCP 질문
Transcodely MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add --transport http mcp https://mcp.transcodely.com/mcp를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
Transcodely MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
Transcodely MCP는 어떤 도구를 제공하나요?
20개 도구를 제공합니다. 예: create_job, create_preset, create_video_from_url, generate_captions, generate_highlights.
이 서버가 제 비디오나 작업을 삭제할 수 있나요?
아니요, 이 서버는 어떤 도구로도 작업물을 삭제, 취소, 제거 또는 교체할 수 없도록 설계되었습니다.
도구 사용에 비용이 발생하나요?
대부분의 도구 호출은 무료이지만, 작업을 시작하는 특정 도구 5개(작업 생성 또는 캡션 생성 등)는 비용이 발생합니다.
비디오 처리 예산을 설정할 수 있나요?
네, set_spend_limit 도구를 사용하여 EUR 단위의 월간 트랜스코딩 지출 한도를 설정하거나 해제할 수 있습니다.