Vivu MCP server: source-backed video search for AI agents.
The Vivu MCP server lets an AI agent search a team's indexed video the same way a person does. An MCP-compatible client connects to it, signs in to a Vivu account, and calls tools that index authorised folders and run plain-language searches against one project. Results come back as exact moments: the source video, a start and end timestamp, the spoken or on-screen evidence the match rests on, and a short-lived link to play that moment. Vivu retrieves from footage that already exists — it does not edit or generate video.
What the server does
Vivu indexes each recording once, when it is taken in, across what is said and what is on screen. The MCP server exposes that index to an agent as a small set of tools: authorise a folder, index it, search one project, and open the moments that come back. The agent does not receive the video and does not receive a transcript dump — it receives the moments that answer the question, with the evidence attached.
Search has two modes. Fast returns candidate moments directly. Precise runs a refinement pass on top of retrieval; it returns a search id and a progress handoff, and the client polls until the job reports complete. Partial refined results are never returned, so an agent cannot quote a half-finished ranking.
Clients and availability
The server implements the Model Context Protocol, so an MCP-compatible client can connect to it. Which clients Vivu formally supports, and the release status of each, is confirmed with the Vivu team rather than listed here — contact sales for the current list. Installing the MCP server is a setup step, not an evaluation: the question worth answering is whether retrieval is right on your own footage.
Tools
| Tool | What it does |
|---|---|
| vivu_sign_in / vivu_sign_out | Authenticate the client against a Vivu account and end that session. |
| vivu_status | Report local configuration, sign-in state, and whether the Vivu backend is reachable. |
| vivu_list_projects / vivu_create_project | List the projects the account can reach, or create one. A search runs inside exactly one project. |
| vivu_grant_directory_access | Authorise a local folder. Vivu can only read folders that were explicitly granted, and access can be listed and revoked. |
| vivu_index_folder / vivu_index_files | Queue a folder or specific files for upload and cloud indexing. Returns a batch id immediately. |
| vivu_get_upload_batch | Report upload progress for a batch and indexing progress for files whose upload finished. |
| vivu_search_videos | Search one project in fast or precise mode. Precise returns a search id and a progress handoff instead of partial results. |
| vivu_get_search_results | Wait on a precise search and return final results once the job completes, with one result page URL. |
| vivu_get_preview_links | Create short-lived playable links for selected results — playback, not download or export. |
| vivu_export_results | Export selected results as local clips, after the user confirms. |
Example request
An agent asks in plain language; the client turns that into a vivu_search_videos call scoped to one project.
// What the operator types
"Find where the CEO talks about the pricing change in the Q3 recordings."
// What the client calls
vivu_search_videos({
project_id: "prj_q3_recordings",
query: "the CEO explaining the pricing change",
mode: "precise",
maximum_results: 20
})
// Precise mode hands back a search id, not results
{ "search_id": "srch_8f21c4", "status": "refining" }
// Poll until complete
vivu_get_search_results({ search_id: "srch_8f21c4", wait_seconds: 45 })Example source-backed response
Every result names its source, its exact span, and the evidence it matched on. That is the contract an agent can act on: it can open the moment, quote the evidence, and show where it came from.
{
"complete": true,
"query": "the CEO explaining the pricing change",
"results": [
{
"source_id": "vid_4a19",
"source_title": "q3-all-hands.mp4",
"start_ms": 754000,
"end_ms": 791000,
"evidence": "spoken: \"...so from October the tiers collapse into two...\"",
"why": "Direct statement of the pricing change by the speaker on screen.",
"open": "https://<vivu-result-page>/s/…"
}
]
}Playable links are created separately with vivu_get_preview_links, are short-lived, and stream the moment rather than handing over the file. Exporting a local clip is a separate, user-confirmed step.
Setup
- Install the Vivu MCP server and add it to your MCP client's server list.
- Call
vivu_sign_inand complete sign-in with your Vivu account. - Check
vivu_status— it reports configuration, sign-in state, and backend reachability. - Grant access to a folder with
vivu_grant_directory_access. Vivu reads nothing you have not authorised. - Index it with
vivu_index_folder, then watchvivu_get_upload_batchuntil indexing finishes. - Search with
vivu_search_videos, scoped to one project.
Authentication
The server authenticates against a Vivu account and holds a session with an expiry; vivu_status reports whether that session is valid. There is no anonymous mode: an unauthenticated caller cannot list projects or search. Folder access is a second, separate grant — signing in does not give Vivu the run of the disk.
Current limits
- A search runs inside exactly one project. There is no cross-project search.
- Precise mode is asynchronous; the client must poll until the job reports complete.
- Indexing is a background job — a file is searchable when its indexing finishes, not when its upload does.
- Only authorised directories can be read, and authorisation can be revoked.
- The public one-video trial on /try is a separate path and does not use MCP.
Privacy and the data path
Indexing reads the files in the folders you authorise and builds the index in your Vivu workspace. Footage stays private to that workspace, with access the customer controls. Search results carry evidence from your own material and nobody else's. Full detail is on the security page.
Troubleshooting
- Tools return an authentication error. The session expired — run
vivu_sign_inagain and confirm withvivu_status. - A folder cannot be indexed. It was never granted, or the grant was revoked. Re-authorise it with
vivu_grant_directory_access. - Search returns nothing. Check the files finished indexing rather than only uploading, and that you are searching the project they landed in.
- A precise search never completes. Keep polling
vivu_get_search_resultswith the same search id; each call waits and returns progress rather than partial results.
The tool-by-tool contract, including request and response shapes and error behaviour, is on the documentation page.
Point an agent at your own footage.
Try Vivu on one video to see what retrieval returns, or talk to us about connecting a team library.