Droid Apps MCP Server
Connect any MCP-compatible AI agent to the Droid Apps FFmpeg API in under two minutes. One tool to submit any video or audio job. One tool to get the result.
What is the Droid Apps MCP server?
Droid Apps exposes a native Model Context Protocol (MCP) server at https://app.droidapps.one/mcp over Streamable HTTP transport. Any MCP-compatible client — Claude Desktop, Cursor, Continue, or a custom agent — can connect with an API key and immediately call FFmpeg operations on video and audio.
The server exposes a generic async job API: call submit_job with an operation path and JSON body, then call wait_for_task to retrieve the processed file. There are no operation-specific tools — one tool covers all 11+ API endpoints, keeping the surface minimal and the integration uniform.
The server name is droidapps-ffmpeg. Authentication uses your Droid Apps API key via X-API-Key header or Authorization: Bearer.
How do I connect an AI agent to the MCP server?
Step 1 — Get an API key
Subscribe to any plan, sign in, and generate a key under API Keys. The same key works for both REST and MCP.
Step 2 — Configure your client
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"droidapps-ffmpeg": {
"type": "streamable-http",
"url": "https://app.droidapps.one/mcp",
"headers": {
"X-API-Key": "YOUR_DROID_APPS_API_KEY"
}
}
}
}Cursor / VS Code MCP extension (.cursor/mcp.json)
{
"mcpServers": {
"droidapps-ffmpeg": {
"url": "https://app.droidapps.one/mcp",
"headers": {
"X-API-Key": "YOUR_DROID_APPS_API_KEY"
}
}
}
}Step 3 — Submit a job and wait
The core pattern is always the same: submit_job → wait_for_task.
// 1. Submit a job — trim a video to 30 seconds starting at 0
const job = await mcp.callTool("submit_job", {
path: "/cut",
body: {
video_url: "https://cdn.example.com/source.mp4",
start: 0,
duration: 30
}
})
// Returns: { task_id: "abc123", status: "queued", ... }// 2. Wait for the result (polls automatically)
const result = await mcp.callTool("wait_for_task", {
task_id: job.task_id
})
// Returns: { status: "completed", download_url: "https://..." }More submit_job examples
Merge two clips with fade transition
// Merge two clips with a fade transition
const job = await mcp.callTool("submit_job", {
path: "/merge_urls",
body: {
urls: [
"https://cdn.example.com/clip1.mp4",
"https://cdn.example.com/clip2.mp4"
],
transition: "fade",
duration: 0.75
}
})Replace /merge_urls with any of the paths below for other operations. The body fields match the REST API parameters documented in API Docs.
Which paths can I pass to submit_job?
Pass any of these as the path argument to submit_job. The body fields for each path are documented on the corresponding tool page.
/cutTrim a clip — start offset + duration/cropCrop a rectangle — w, h, x, y in pixels/merge_urlsConcatenate clips with optional transitions/redubReplace or mix audio tracks/redub_ttsDub video with TTS from a script/redub_vcVoice conversion on video audio/captions/autoAuto-generate subtitles / captions/visualizeAudio visualizer overlay on video/animate_photoAnimate a still image to MP4/WebM/GIF/silence_processRemove silence / dead air from video/frame/lastExtract the final frame as a JPEG
Full tool list
submit_jobPost any FFmpeg operation. Takes path (e.g. /cut, /crop, /merge_urls) and a JSON body with media URLs and parameters. Returns a task_id.
get_taskCheck the status of an async job by task_id. Returns current state: queued, processing, completed, or failed.
wait_for_taskPoll a task until it reaches a terminal state. Returns the download URL on success. Use this after submit_job.
delete_taskDelete a completed task and its stored output file.
health_checkVerify the Droid Apps API is reachable. No API key forwarded to upstream.
api_infoRetrieve current API information and available endpoints.
list_eleven_voicesList ElevenLabs voices available for TTS dubbing (/redub_tts). Requires your ElevenLabs API key.
list_tasksList your recent FFmpeg processing tasks with status and result URLs.
list_api_keysList your active API keys (names and metadata only — never raw secrets).
list_api_logsRetrieve recent API request logs for your account.
usage_summaryGet a summary of API usage: total requests, today's count, active keys, and last request timestamp.
subscription_statusCheck your active subscription tier and billing status.
Connection details
https://app.droidapps.one/mcpStreamable HTTP (MCP spec)droidapps-ffmpegX-API-Key: YOUR_KEY or Authorization: Bearer YOUR_KEYPOST /mcp without Mcp-Session-Id to initializeFrequently asked questions
What MCP tools does Droid Apps expose?
The server exposes submit_job (post any FFmpeg operation), get_task (check status), wait_for_task (poll until done), delete_task, health_check, api_info, and list_eleven_voices. Dashboard tools include list_tasks, list_api_keys, list_api_logs, usage_summary, and subscription_status.
How do I authenticate with the MCP server?
Pass your Droid Apps API key as X-API-Key header or Authorization: Bearer <key>. Generate a key from your dashboard after subscribing. The key authorizes both REST and MCP calls against the same account.
What MCP transport does the server use?
Streamable HTTP — the standard transport defined in the MCP specification. This works with Claude Desktop, Cursor, and any MCP-compatible client that supports HTTP-based servers. The server name is droidapps-ffmpeg.
Do I need a subscription to use the MCP server?
Yes. The MCP server authenticates via your Droid Apps API key, which requires an active Basic, Boost, or Elite subscription. Rate limits and feature access match your plan tier.
Can I use the MCP server without knowing FFmpeg?
Yes. submit_job handles all FFmpeg invocation. You specify the operation path (/cut, /crop, /merge_urls, etc.) and a JSON body with the media URL and parameters. The server processes asynchronously and returns a download link via wait_for_task.
Ready to connect?
Subscribe, grab an API key, and your agent is processing video in minutes.