MCP in media, video and streaming: what exists, and the gap nobody has filled
Two years into the Model Context Protocol, an agent can transcode a file, cut a timeline, search a video library and clone a voice. It still cannot do the thing broadcast actually is: run a channel that keeps playing after the tool call returns.
What MCP actually changed for media
Media software has never lacked APIs. Every encoder, MAM, playout system and CDN has had one for twenty years. What they lacked was a way for something that had not been programmed against them specifically to find out what they could do.
That is the whole of MCP’s contribution, and it is worth stating without inflation: a server describes its tools at runtime, and a client that has never seen it before can read that description and start calling. No SDK, no per-integration glue, no release cycle between “the vendor shipped a capability” and “my agent can use it.”
For media that matters more than for most domains, because media workflows are unusually long chains of unrelated tools. A single job might touch an asset store, a transcoder, a captioning service, a rights database and a distribution platform, none of which have ever heard of each other. Every one of those hops used to be a bespoke integration.
The map: every layer that has a server
Here is the landscape as of August 2026, organised by what the tools actually operate on rather than by vendor marketing. Names are examples, not endorsements, and the list is not exhaustive — new servers appear weekly.
| Layer | What the agent manipulates | Examples |
|---|---|---|
| Infrastructure | The asset lifecycle — upload, encode, playback policy, signed URLs, delivery analytics | Mux, Cloudflare Stream, Bunny |
| Editing & render | A timeline — layers, cuts, transitions, overlays, then a rendered file out | Shotstack (cloud), Kinocut (local, open source), Wireflow (pipelines) |
| Understanding | The contents of video — semantic search, indexing, scene and object retrieval | TwelveLabs |
| Voice & localization | Audio tracks — synthesis, dubbing, translation, transcription | AllVoiceLab and similar |
| Generation | Pixels from nothing — text-to-video and image-to-video models | The model vendors’ own endpoints |
| Playout & linear | A channel — a continuous schedule that is on air now and stays on air | Essentially empty |
Read down the third column and the pattern is hard to miss. Every mature server in media takes an asset in and gives an asset back. Upload this. Cut that. Find the scene where the logo appears. Dub it into Spanish. They are, in the precise sense, stateless with respect to time: the job finishes, the tool returns, and nothing is left running.
The layer that doesn’t
Linear playout is the one media layer where the deliverable is not a file. A channel is a process. It was playing before you called the tool, it is playing while you read the response, and it will be playing tomorrow whether or not anyone calls anything.
The video MCP ecosystem stops at the clip. Nothing on the market operates the channel.
The nearest neighbours are worth naming honestly, because “nobody has done this” is the kind of claim that ages badly:
- ErsatzTV has a Claude Code skill that writes playout JSON for 24/7 streaming. That is real and it is the closest thing in public. It is also a local file-manipulation helper for a self-hosted engine you have already installed and configured — not a hosted server that takes you from nothing to a broadcasting URL.
- The professional playout vendors — Imagine Communications, wTVision, OpenBroadcaster, Vector3, MediaCP and the rest — have deep scheduling automation and, as far as public documentation shows, no MCP surface at all. Their buyers are master control rooms, and a master control room is not looking for an agent.
- The infrastructure platforms get closest on paper. Mux’s MCP server will manage assets and read analytics; Cloudflare Stream’s will upload by URL and manage live streams. Neither models a schedule. You can hand an agent the pieces of a channel; you cannot ask it for one.
Why the gap is there
Not because nobody thought of it. Because durable state is genuinely harder to expose to an agent than a render is, in four specific ways.
1. Success now can be wrong later
A transcode either produced a file or it did not, and you know within minutes. A schedule is
a claim about the future. A tool call can return success: true and produce a
broadcast that is wrong at 6pm — the wrong programme in the wrong slot, a gap where an
asset failed, the same clip four times an hour. The feedback loop that lets an agent
self-correct is broken by default, because the error surfaces hours after the call.
2. Writes are not idempotent in the way agents assume
Agents retry. That is fine when the operation is “render this timeline” and catastrophic when it is “insert this programme into the live schedule.” Every mutating tool in a playout surface needs to answer: what happens if this runs twice? Most API designers have never had to think about it, because most APIs are called by code that was written once and does not improvise.
3. The moment a change reaches the air is not the moment you made it
This one bites everybody. In our own system, a channel builds its schedule the instant it crosses its launch threshold, from the weights present at that moment. Set a weight afterwards and it is stored faithfully, reported back correctly, and does not change what is on air until the schedule is regenerated.
An agent doing the obvious sensible thing — import everything, then tune the weights — produced a channel where a weight-3 clip and a weight-9 clip got identical airtime, and every tool call along the way returned success. We only found it because we pointed an agent at our own documentation and watched what it built.
4. Unattended operation needs a safety vocabulary
“Regenerate the schedule” is destructive: it replaces what was going to air. So is
replacing a ruleset. An agent has no way to know that unless the server says so. MCP’s
tool annotations — readOnlyHint, destructiveHint,
idempotentHint, openWorldHint — are the mechanism, and they
are widely under-used. Without them a cautious client asks permission for everything, which
trains the user to click through, which is worse than not asking.
The design rule that falls out of all four: every destructive scheduling tool needs a dry-run twin that saves nothing and returns what would happen. Ours returns a simulated 24-hour grid. It is deliberately not tier-gated, because the whole point is that an agent calls it before it commits.
What an agent-operable channel actually requires
Concretely, if you are building this layer, here is the surface that turned out to be the minimum. Nine tools of ours are read-only, and that ratio is not an accident — most of what an agent needs is the ability to find out where things stand.
- An orientation call. One endpoint that answers “what account is this, what may it do, what has it got, and what is each channel still missing before it can go live.” Agents that cannot orient themselves guess, and guessing is expensive.
- Ingestion that does not require a file handle. MCP tool arguments are JSON. There is no multipart channel, so an agent physically cannot upload a local file. Import-from-URL is not a convenience, it is the only path an agent has.
- Explicit launch semantics. The agent must be able to ask “is it on air yet” and get an unambiguous answer, plus the specific gap if not. A boolean is not enough; “needs 2 more ready assets” is.
- Simulation before mutation. As above.
- Honest annotations on every tool. Including admitting which ones are destructive.
- Recoverability. If nothing is unrecoverable — archives keep the handle, deletes are soft — then a client can afford to let an agent work, and the annotations stop being a bluff.
What we learned building one
We built this surface for My TV Channel and then did the thing that is easy to skip: gave an agent nothing but an API key and the documentation, and told it to take a channel from nothing to broadcasting.
It found nine defects. Two made the documented path impossible, and neither was findable by reading the application code:
-
Uploads larger than 1 MB failed on the canonical domain, because one nginx vhost was
missing a
client_max_body_sizeand returned an HTML error page that no client could parse as our JSON error envelope. No human user was affected — the apps post to a different host. Only an agent following the published docs hit it. - The endpoint documented as the way to check whether a channel had gone live did not return the field you were told to poll. An agent will poll it forever, correctly, and never finish.
The rest were the same shape: documentation that disagreed with the implementation, an error state that was reported on a healthy asset, a tier gate we told people to pay for that they already had. All of it invisible to a human clicking through the app, all of it fatal to something reading the docs literally.
The generalisable lesson: pointing an agent at your own public API is the cheapest documentation audit that exists. A human tester brings context and routes around the gaps without noticing. An agent has only what you wrote down, so every place the docs and reality disagree becomes a hard stop — which is exactly what you want from a test.
A note on the numbers
Articles in this space tend to open with a wall of market statistics. Most of them do not survive being chased to a source, so here are the few that do, with their provenance attached and their disagreements left visible rather than averaged away.
- ~1,870 FAST channels globally across 21 countries, offering roughly 34,000 unique titles, as of mid-2025 — Gracenote, a Nielsen company. This is the most solidly-sourced channel-count figure available. Later “1,900+” citations generally trace back to it.
- Streaming reached 77% of TV viewing time in Q1 2026, up 6% year on year, while linear TV viewership fell 17% year on year. Comscore separately reported FAST viewing hours up 43% year on year.
- US CTV ad spend in 2026 is quoted as both ~$38B and ~$36.9B depending on the source and the definition of “CTV.” That is a 3% spread on a headline number, which tells you how much weight any single figure here deserves. Linear TV is still ahead in absolute ad dollars on either reading.
The reason to care about the direction rather than the decimals: the number of linear channels is going up while the cost of originating one goes down, which is the condition under which programmatic channel creation stops being a curiosity.
Where this goes
The clip layer is close to solved and will commoditise fast; there is not much differentiation left in “call FFmpeg from an agent.” The interesting problems are the ones that involve time: scheduling, rights windows, ad insertion, continuity, what happens at 3am when a source disappears.
The 2026 protocol work on native media types will help — agents that can pass video around directly rather than trading URLs. But it does not touch the harder half. Handing an agent a video is a transport problem. Handing it a broadcast is a state problem, and state is where the design work actually is.
If you want to see the state problem solved end to end, the fastest route is to watch a channel that was built entirely through it.
Try it against a live channel
demo.my-tv-channel.com is broadcasting right now. The channel, its programmes, their weights and its 24/7 schedule were all created through the MCP tools described here — nobody opened the app.
Nineteen tools, Streamable HTTP, listed in the official MCP registry and on Smithery.
Sources
- Best MCP Servers for Video Processing — Fast.io, 2026
- Best MCP Server for Video Editing Tools in 2026 — Wireflow (vendor, read accordingly)
- Video MCP Servers: How AI Agents Process Videos — Vidocu, 2026
- The 2026-07-28 MCP Specification Release Candidate — Model Context Protocol
- ErsatzTV Channel Scheduler skill — MCP Market
- How Many FAST Channels Exist in 2026? — Adwave, citing Gracenote/Nielsen
- FAQ on FAST — eMarketer, 2026
- Connected TV Statistics 2026 — StackAdapt