Streamloop
by @streamloop · io.github.streamloop/mcp
Manage cloud-hosted 24/7 video streams, playlists, destinations, schedules, media and workspaces.
- Category
- Images, video and audio
- Connection
- Remote (HTTP)
- Tools
- 60 reported
- Status
- Online
Connect it to your AI
Claude Code
claude mcp add --transport http streamloop https://mcp.streamloop.app/mcpClaude, ChatGPT, Cursor and other apps
Add it as a custom connector with this URL (Streamable HTTP):
https://mcp.streamloop.app/mcpCursor, VS Code and other apps (mcp.json)
{
"mcpServers": {
"streamloop": {
"url": "https://mcp.streamloop.app/mcp"
}
}
}Tools it offers
60 tools, as the server itself reported during our check on Oct 31, 2026.
list_streamsFind streams and their ids — the starting point for every other stream tool. Each row carries the name, current state, scheduled start and whether that schedule repeats, which is enough to tell a one-off from a daily looget_streamOne stream's full configuration: current state, output quality and framerate, the destinations it publishes to (each enabled or not, with its delivery state), and its scheduled window including recurrence and repeat weekstart_streamStart streaming now, looping the stream's playlist (or playing its scene) until it is stopped. THIS PUTS VIDEO IN FRONT OF THE PUBLIC, so confirm with the user first unless they just asked for it. Requires a destinationstop_streamStop a stream that is live or starting. It stops publishing and becomes inactive; nothing is deleted and it can be started again with the same configuration. Does NOT cancel a recurring schedule — a daily or weekly streadelete_streamPermanently delete a stream, its playlists and its schedule. Irreversible, and it cannot be undone by re-creating the stream: uploads survive but the arrangement does not. Stop the stream first if it is live. To keep a screate_streamUse this to set up a new loop or a stream for a scene. The stream is created empty and CANNOT start until it has (1) a destination — add_stream_destination with one from list_destinations, or get_connection_hints for howupdate_streamChange a stream's settings (name, quality, framerate, duration, storage, backup ingest) and/or its YouTube broadcast settings via the `youtube` object. Where it publishes is add_stream_destination / set_stream_destinatioschedule_streamSet the window a stream runs in, once or on a repeat, and arm it. The stream must already be startable — a destination plus either a playable video playlist or an attached published scene (check_stream_readiness) — othercancel_stream_scheduleDisarm a scheduled stream and return it to an unscheduled, inactive state, clearing any daily or weekly repeat. Use this to stop a recurring stream coming back; it has no effect on a stream that is currently live (stop_scheck_stream_readinessAnswer 'would start_stream work right now?' without changing anything. Runs the same pre-flight configuration checks a start does and returns ready plus every blocking issue — typically a missing or archived destination,get_stream_live_statsHow a live stream is doing ON YOUTUBE: watch URL, broadcast status, concurrent viewers, views and likes. Only meaningful while the stream is live to a YouTube channel connected through Streamloop — a custom RTMP destinatlist_stream_destinationsWhere a stream publishes, in the order they were added: each destination, whether it is enabled, and while the stream runs its delivery state (connecting, live, reconnecting, failed with a reason). Returns the stream idadd_stream_destinationMake a stream also publish to one of the workspace's destinations (list_destinations), enabled. Up to 5 per stream and one YouTube channel at most (DESTINATION_LIMIT, YOUTUBE_DESTINATION_LIMIT, DESTINATION_DUPLICATE). Aset_stream_destination_enabledStop or resume sending to one of a stream's destinations without removing it. Disabling works while the stream is live — that output goes off the air at once — except for its last enabled destination (LAST_DESTINATION: sremove_stream_destinationTake a destination off a stream (the destination itself stays in the workspace). Refused while the stream is live (STREAM_LIVE): disable it with set_stream_destination_enabled instead. Returns the stream's whole destinatget_connection_hintsUse this FIRST when the user names a platform they want to stream to ("put this on YouTube", "also send it to Twitch") and there is no destination for it yet. Returns, for that platform: the connection methods, the exactlist_destinationsFind the places this workspace can publish to — connected YouTube channels and custom RTMP endpoints — and their ids, which is what add_stream_destination needs. Check `status`: only an `active` destination can carry a screate_rtmp_destinationCreate a destination for any platform that gives out an RTMP ingest URL and stream key (Twitch, Facebook, Kick, X, TikTok, Telegram, a self-hosted server, or YouTube when its channel is not connected here). Take rtmpUrlupdate_destinationMaintain an existing destination: rename it, replace the stream key after the platform rotated it (custom RTMP only — a connected YouTube channel has no key to set), and archive or restore it. Archiving hides a destinatistart_youtube_connectionBegin connecting a Google account so its YouTube channels can be streamed to with managed broadcasts (titles, privacy, thumbnails, live stats). Returns a Google consent URL — give it to the user to open in a browser; conlist_youtube_channelsThe YouTube channels this workspace has Google consent for, with live channel data (title, handle, country, subscriber count, connection status). These are NOT destinations yet: pass a channel's `id` to create_youtube_decreate_youtube_destinationTurn an already-consented YouTube channel into a destination a stream can publish to, with managed broadcasts (update_stream's `youtube` settings, get_stream_live_stats). Takes the channel `id` from list_youtube_channelslist_playlistsUse this to get from a stream to something you can edit: pass streamId and you get the two playlists that stream owns — one video, one audio, created empty with it. Pass sceneId for the playlists a scene's sources play.create_playlistAn empty playlist owned by a scene, for one of its playlist sources to play (a stream's own two playlists come with the stream). Fill it with apply_playlist_operations. Each call creates another. Returns the new playlistget_playlistUse this before editing a playlist (item ids for remove and reorder come from here, and so does the `version` the edit tools take) and after swapping one onto a live stream (to see the swap finished). Returns the draft iapply_playlist_operationsUse this for every playlist change: add media, remove items, reorder, or switch between sequential and shuffle, as one ordered batch. All-or-nothing — if any operation is invalid, nothing is written. A stream that is NOTcopy_playlistUse this to reuse an arrangement on a second stream instead of rebuilding it: copies one playlist's contents into another playlist of the same kind. The target must be EMPTY — this never merges or overwrites. The targetswap_live_playlistUse this ONLY to put an edited playlist on the air while its stream is LIVE — the hot swap the product calls publishing. The stream changes over to the new arrangement without going off the air. NOT needed to set a strealist_playlist_ordersFind saved custom playback orders (order sequencers) and their ids. Use it before creating one — an order the user already has can be assigned to another playlist instead of rewritten. Pass streamId to see only orders thget_playlist_orderOne saved order: its description, how many playlists use it, and its newest usable version with any validation problems. Pass playlistId as well to get the answer that actually matters before assigning — whether this ordcreate_playlist_orderDescribe a playback order in plain language and have one written and validated. Pass the playlist it is for as playlistId: the order is written against that playlist's REAL items, so leaving it out produces a rule aimedrefine_playlist_orderContinue the conversation about an existing order — 'never end on an instrumental', 'put the announcement second instead' — producing a new version. Use this rather than creating a second order for the same purpose. Passassign_playlist_orderMake a playlist play in a saved order. This is the step that changes playback, and unlike a playlist edit it needs no swap_live_playlist — a running stream picks the new order up for its next items. The version in use isunassign_playlist_orderStop a playlist using a custom order; it returns to playing in its own item order (or shuffled, per the playlist's mode). The order itself is kept and can be assigned again. Like assigning, it takes effect on a running slist_uploadsFind media and their ids (obj_...) — what apply_playlist_operations adds to a playlist. Removed media is not listed. `uploaded` false means the media is still arriving or processing and cannot be streamed yet. Returns aget_uploadOne media file in detail: duration, resolution, framerate, whether it has video and audio (probed from the file itself, not from its name), a temporary download URL, a thumbnail, and — for a URL import — how far the downcreate_uploadStep 1 of uploading a LOCAL file: reserves the media record and returns `uploadUrl`, a presigned PUT you can use immediately. This server does not relay bytes, but YOU probably can — if the client can run a command or macomplete_uploadStep 2 of uploading a local file: call it once the bytes have been PUT to the url create_upload returned — by you, or by the user — which starts processing. Until this is called the media is unusable, and calling it befodiscover_external_mediaLook at any media url and report what could be imported from it: each asset with its quality options, sizes and duration. REQUIRED BEFORE import_upload_from_url, which takes the opaque asset and quality ids only this tooimport_upload_from_urlImport chosen assets from a media url — a page, a direct file link, or a file the user attached in this conversation — straight into the workspace, with no local file and no PUT. Each selection must echo an assetId and q
Questions
What is the Streamloop MCP server?
Manage cloud-hosted 24/7 video streams, playlists, destinations, schedules, media and workspaces. It is made by @streamloop and listed in the official MCP Registry as io.github.streamloop/mcp. MCP (Model Context Protocol) is the open standard that lets AI apps like Claude, ChatGPT and Cursor use outside tools.
How do I add Streamloop to Claude?
In the Claude app or claude.ai, open Settings, then Connectors, choose "Add custom connector" and paste https://mcp.streamloop.app/mcp. In Claude Code, run: claude mcp add --transport http streamloop https://mcp.streamloop.app/mcp
How do I add Streamloop to ChatGPT?
ChatGPT can use remote MCP servers as connectors. In ChatGPT settings, under Apps and Connectors, turn on developer mode if asked, create a new connector and paste https://mcp.streamloop.app/mcp.
How do I add Streamloop to Cursor?
Open Cursor settings, go to MCP, choose "Add new MCP server" (or edit ~/.cursor/mcp.json) and add: { "mcpServers": { "streamloop": { "url": "https://mcp.streamloop.app/mcp" } } }
Does Streamloop work right now?
Yes. It responded when we last checked on 31 Oct 2026. We check remote MCP servers every day.
What can Streamloop do?
It gives your AI 60 tools, including list_streams, get_stream, start_stream, stop_stream, delete_stream. The full list is on this page.
Is this your server? Get the badge for your README
Markdown (GitHub README)
[](https://chen.media/mcp/github-streamloop-mcp)HTML (switches to dark mode on its own)
<a href="https://chen.media/mcp/github-streamloop-mcp"><picture><source media="(prefers-color-scheme: dark)" srcset="https://chen.media/mcp/badge/github-streamloop-mcp.svg?theme=dark"><img src="https://chen.media/mcp/badge/github-streamloop-mcp.svg" alt="Listed on chen.media/mcp" height="40"></picture></a>More in Images, video and audio
See allElevenLabsVerified maker
elevenlabs.ioManage ElevenLabs voice agents and generate speech, music, sound effects, images, and video.
WebflowVerified maker
webflow.comAI-powered design and management for Webflow Sites
Digital Gemology cut library
digitalgemology.comGem cuts with ray-traced brilliance, fire and scintillation in 7 stones, plus 3D and faceting files.
Perigee
@dlamarre-devPositions, distances, mission facts and 3D views of objects orbiting the Earth, Moon, Mars and Sun.
R3
r3js.orgBuild 3D web apps: physics, audio, music, Blender import. Live edits, undo, versions, publishing.
OndaCast
ondacast.comFind live radio stations, podcasts, free audiobooks, song charts and the radio guide on OndaCast.