Reorganizing a video library today means opening the dashboard and editing one video at a time, or writing and maintaining a script against the REST API. With MCP, you describe the task to your AI assistant and it calls your hosting account's tools.
JMVStream's MCP server connects an AI assistant to your video hosting and gives it 13 tools to manage videos you have already hosted: upload, list, rename, move between galleries, change the cover image, generate an MP4 download, check disk usage and delete. It does not generate or edit video, and it does not cover live streaming, playlists or events. Files upload straight from your computer to storage, up to 100 GiB per video, and the hosting behind it has unlimited bandwidth and a fixed price with no overage fees. The MCP is available on all video hosting plans, at no extra cost.
The server exposes 13 tools, all about videos already in your plan. You don't need to know their names: the assistant picks the tool from what you ask. The table shows what each one does and what it returns.
| Tool | What it does | What it returns |
|---|---|---|
| create_upload | Starts an upload from your computer. You give the file name, exact size in bytes (up to 100 GiB) and, optionally, the target gallery; without one, the video goes to the default gallery. | An upload_id and the curl command for each part (up to 100 MiB, a single upload; above that, up to 20 parts) |
| complete_upload | Closes the upload. The video enters the conversion queue and shows up in your plan in about 1 minute ("not found" during that window is normal). | Confirmation |
| get_video | Looks up one video by its hash: status, conversion progress and ready-made links. | HLS link (.m3u8), cover, 3 cover images, player embed code, size, duration, dates |
| list_videos | Lists your library, up to 50 videos per page. Filters by gallery and by part of the name, or shows only videos still converting. | The same fields as get_video for each video, plus total items and last page |
| update_video | Renames a video and/or moves it to another gallery. Nothing else: description, tags, privacy and cover are not editable here. | Updated video |
| delete_video | Removes the video from your plan. It is permanent. | Confirmation |
| get_download | Generates an MP4 download. The first call creates the file (processing); repeat until it returns the link. The link is valid for about 1 day. On failure it shows the error and accepts a retry. The queue is shared and generation can take a while. | processing, ready (with the URL) or failed |
| set_thumbnail | Replaces the cover image with a public image URL (JPEG, PNG or WebP, up to 1 MB, no redirects). | Confirmation |
| get_disk_usage | Shows the space used by the videos in the whole plan or in one gallery. | Total in GB, already formatted |
| list_galleries | Lists the plan's galleries as a tree (with sub-galleries). This is how the assistant finds each gallery's ID. | Name, description and ID of each gallery, plus the total |
| create_gallery | Creates a gallery at the top level or inside another one. | Confirmation |
| update_gallery | Renames a gallery and/or changes its description. Anything you don't send stays as is. | Confirmation |
| delete_gallery | Deletes a gallery, only if it is empty (no videos, no sub-galleries). | Confirmation |
Real requests in plain language, and what the assistant does underneath. The order of calls can vary between assistants.
“How much disk am I using?”
Tool: get_disk_usage
Returns: The plan's total in GB; add "in the Courses gallery" to scope it.
Tested with a real call on 23/10/2026.
“List the videos that are still converting.”
Tool: list_videos with converting=true (this filter ignores the others)
Returns: Videos in conversion with status and progress, up to 50 per page.
“Give me the embed code and HLS link for 'Lesson 01'.”
Tool: list_videos filtered by name and, if needed, get_video
Returns: The player iframe, the HLS link, the main cover and 3 cover images in the same response. No second call to build the embed.
Tested with a real call on 23/10/2026.
Press play before publishing the embed: see "Short video without HLS" in Limits, up front.
“Upload lesson-02.mp4 and put it in the Courses gallery.”
Tool: list_galleries (finds the ID of "Courses") → create_upload → file upload → complete_upload → get_video after about 1 minute
Returns: The video in the right gallery with HLS link, covers and embed.
The MCP never receives the file: it returns curl commands and the upload goes from the computer holding the file straight to storage via a pre-signed URL. The commands must run on that machine: if your assistant has terminal access it can run them; if not, you copy and paste.
“Replace the cover of video X with this image: [URL].”
Tool: set_thumbnail
The image must be at a public URL, JPEG/PNG/WebP, up to 1 MB, with no redirects. The MCP does not receive an image attached to the chat.
“Generate the MP4 of video X so I can download it.”
Tool: get_download
Returns: processing first; the assistant repeats the call until ready and hands you the MP4 URL, valid for about 1 day. We don't promise a time: the generation queue is shared and the file can stay in processing for a long while.
“Move 'Lesson 01' and 'Lesson 02' to the Module 1 gallery and rename the second one to 'Lesson 02 — revised'.”
Tool: list_galleries, list_videos (name filter) and update_video (name and gallery)
You need an active JMVStream plan and an AI assistant that speaks MCP to a remote server (Streamable HTTP) and lets you set an Authorization header. The connection uses your plan token and sees only that plan: everything the tools list or change belongs to it. Treat the token like a password: it gives access to all 13 tools, including the ones that delete.
Address: https://mcp.jmvstream.com/mcp. Transport: Streamable HTTP. Authentication: header Authorization: Bearer <plan token>. The MCP exchanges the token for access to the JMVStream API on your behalf; you never handle a JWT.
The address ends in /mcp: without it the server returns 404. Without the header it returns 401 (www-authenticate: Bearer).
The syntax below comes from each client's official documentation; replace <PLAN-TOKEN> with the token from step 1.
Claude Code (terminal)
claude mcp add --transport http jmvstream https://mcp.jmvstream.com/mcp --header "Authorization: Bearer <PLAN-TOKEN>"Cursor (.cursor/mcp.json in the project, or ~/.cursor/mcp.json for all projects)
{
"mcpServers": {
"jmvstream": {
"url": "https://mcp.jmvstream.com/mcp",
"headers": {
"Authorization": "Bearer <PLAN-TOKEN>"
}
}
}
}Other clients: any client that speaks remote MCP over Streamable HTTP and accepts a custom header connects with the same three items: address, transport and Authorization: Bearer <plan token>.
Ask: "How much disk am I using?". It is a read-only call (get_disk_usage) and changes nothing in your plan. If it returns a total in GB, you are connected.
| Response | Meaning |
|---|---|
| 404 | The address is missing /mcp at the end. |
| 401 | Token missing, invalid, regenerated after you copied it, or the plan is inactive. |
| Limit | Value |
|---|---|
| Size of each video uploaded through MCP | Up to 100 GiB (about 107 GB). Up to 100 MiB, the upload is a single PUT; above that, it is split into parts of up to 5 GiB, at most 20. |
| How the file gets there | Straight from your computer to storage via a pre-signed URL. The MCP never receives or stores the file. |
| Upload commands | curl (and dd to cut the parts), run on the machine that holds the file. |
| Videos per query | list_videos: up to 50 per page (default 10). Asking for 51 or more returns a validation error. The response includes the total and the last page. |
| Cover by URL | JPEG, PNG or WebP, up to 1 MB, public URL, no redirects |
| update_video | Changes name and gallery only. It does not change description, tags, privacy or cover (cover is set_thumbnail). |
| delete_video | Permanent. No undo is documented. Removal is asynchronous: the video becomes unavailable immediately and the file is deleted moments later. |
| delete_gallery | Empty galleries only (no videos, no sub-galleries) |
| Storage full | New uploads are refused ("no space" error) until you upgrade |
| MP4 download (get_download) | Link valid for about 1 day. The generation queue is shared: the file can stay in processing for a long time, and we don't promise a time. |
| Short video without HLS | For some short videos the status reaches COMPLETED without the HLS being generated. Those videos neither play nor download. Press play before publishing the embed and, if it happens, contact support. |
The MCP covers on-demand video, galleries, upload, download, cover images and disk usage. It does not:
The MCP manages your video hosting. The hosting has unlimited bandwidth, no overage fees and a fixed monthly price. What changes between plans is storage: Starter 250 GB, Professional 1 TB, Full 2 TB, and Enterprise sized to your case. When storage fills up, new uploads are refused until you upgrade. It runs on our own infrastructure. Human support is in Portuguese every day, and our assistant answers 24/7 in any language.
The MCP is available on all video hosting plans, at no extra cost.
MCP (Model Context Protocol) is an open standard that lets an AI assistant use tools from other systems. JMVStream's MCP server gives the assistant 13 tools to manage the videos in your hosting: upload, list, rename, move between galleries, change the cover, generate an MP4 download, check disk usage and delete.
No. It manages videos that are already hosted. It does not cut, caption or create AI video.
https://mcp.jmvstream.com/mcp, over Streamable HTTP, with the header Authorization: Bearer <plan token>. Without /mcp at the end the server returns 404; without the header, 401.
Any client that speaks remote MCP over Streamable HTTP and accepts a custom Authorization header. On this page we show the syntax for Claude Code and Cursor, as in each one's official documentation.
The MCP is available on all video hosting plans, at no extra cost. Live-only or IPTV-only plans have no API and no MCP. You need an active plan: with an inactive plan, the server returns 401.
In the Hub, "API e MCP" menu, "Token do plano" card. If the plan has no token yet: "Configurações do plano" → "API" block → "Gerar token". Generating a new token invalidates the previous one. The account owner already sees the menu; additional users only see it if the owner grants them administration.
delete_video is permanent and no undo is documented. The tool's description tells the assistant to confirm with you first, but you are the safeguard: ask "list what will be deleted and wait for my OK", and check the names. Removal is asynchronous (the video goes offline immediately; the file is deleted moments later). delete_gallery only deletes empty galleries, so it never takes videos with it.
Up to 100 GiB (about 107 GB) per video, also capped by the free storage in your plan. The file does not go through the MCP: it uploads straight from your computer to storage via a pre-signed URL. Up to 100 MiB goes in a single upload; above that, in up to 20 parts of up to 5 GiB. When storage is full, uploads are refused until you upgrade.
We don't promise a time. get_download builds the file in a shared queue and can stay in processing for a long while; once ready, the link is valid for about 1 day. For some short videos the status reaches COMPLETED without the HLS being generated, and they neither play nor download: press play before publishing the embed.
It is the same JMVStream API, in two layers. The MCP is the layer for AI agents: you ask an assistant in plain language and it calls 13 on-demand video management tools. The REST API is for code: your system calls it automatically, on a fixed routine, and the API also covers live events and playlists, which the MCP does not expose. Both run on the same hosting.
See the REST API for automating by code and the documentation.
Message us on WhatsApp: tell us which assistant you use and how many videos you have today, and we'll reply with the connection path and the plan that fits. The 30-day free hosting trial is currently released for companies with a CNPJ (Brazilian company ID), through WhatsApp.