Docs › AI assistants (MCP)
AI assistants (MCP)
Video Piper is an MCP server, so AI assistants such as Claude, Cursor and VS Code can work with your videos: "cut the first 30 seconds of yesterday's demo and add captions", "blur any API keys in my latest recording", "give me an embed code for the onboarding video". It's the same account, limits and billing as the API: the assistant acts with your API key, and every tool is an API call.
| Server URL | https://api.videopiper.dev/v1/mcp |
|---|---|
| Transport | Streamable HTTP (stateless: POST only, JSON answers) |
| Authentication | Authorization: Bearer vpk_…, your API key (a test key, vp_test_…, works on test videos) |
Connect your assistant
Claude Code
claude mcp add --transport http video-piper https://api.videopiper.dev/v1/mcp \
--header "Authorization: Bearer $VIDEO_API_KEY"
Cursor: ~/.cursor/mcp.json (or .cursor/mcp.json in a project)
{
"mcpServers": {
"video-piper": {
"url": "https://api.videopiper.dev/v1/mcp",
"headers": { "Authorization": "Bearer vpk_..." }
}
}
}
VS Code: .vscode/mcp.json (it asks for the key once and keeps it out of the file)
{
"inputs": [{ "type": "promptString", "id": "video-piper-key", "description": "Video Piper API key", "password": true }],
"servers": {
"video-piper": {
"type": "http",
"url": "https://api.videopiper.dev/v1/mcp",
"headers": { "Authorization": "Bearer ${input:video-piper-key}" }
}
}
}
Claude Desktop: claude_desktop_config.json, through the mcp-remote bridge (needs Node.js)
{
"mcpServers": {
"video-piper": {
"command": "npx",
"args": ["mcp-remote", "https://api.videopiper.dev/v1/mcp", "--header", "Authorization:${AUTH_HEADER}"],
"env": { "AUTH_HEADER": "Bearer vpk_..." }
}
}
}
Connectors added in Claude.ai's settings sign in with OAuth, which isn't available yet; use one of the setups above.
Tools
| Tool | What it does | API call |
|---|---|---|
list_videos | Your videos, newest first; filter by metadata | GET /videos |
get_video | Status, and once ready the playback, streaming, download and poster links, captions and chapters | GET /videos/{id} |
import_video | A new video from a URL, with trim, redactions, auto-redaction and captions | POST /videos with sourceUrl |
edit_videos | Trim one video or join several, with crossfades | POST /videos with edit |
reprocess_video | A new copy with other quality, trim, redactions, auto-redaction, captions or layout | POST /videos/{id}/reprocess |
set_chapters | Replace a video's chapters | PUT /videos/{id}/chapters |
update_video_details | Title, description and metadata | PATCH /videos/{id} |
set_embed | Turn the embeddable player on (with its iframe code) or off | PUT /videos/{id}/embed |
get_usage | A month's minutes, storage and delivery against your plan | GET /usage |
cancel_processing | Stop a video that is still processing | POST /videos/{id}/cancel |
delete_video | Delete a video for good (marked destructive: assistants ask you first) | DELETE /videos/{id} |
Good to know:
- Processing is asynchronous. A tool that makes a video returns its
videoIdstraight away; the assistant checks on it withget_video. - Local files don't go through MCP. Import from a public or pre-signed URL, or upload in the app or with the API, then work on the video with the assistant.
- Mistakes come back as the API's errors, with the field and what's wrong, so the assistant can fix the request. Tools that start work accept
dryRunto check a request first. - Your key gives the assistant your account's access. Use a test key while trying it out, and revoke a key in Account if it leaks.