← All guides

Video Processing with Cursor

Connect FFmpeg Micro to Cursor via MCP and process videos without leaving your editor. Ask Cursor's AI to transcode, crop, add overlays, or batch-convert files while you keep coding.

Setup

Add the MCP server to your project's .mcp.json in the project root:

{
  "mcpServers": {
    "ffmpeg-micro": {
      "type": "http",
      "url": "https://mcp.ffmpeg-micro.com"
    }
  }
}

Cursor will detect the MCP server automatically. On first use, it opens a browser window for OAuth sign-in with your FFmpeg Micro account.

Example prompts

  • “Transcode this demo video to WebM so I can embed it in my docs site”
  • “Crop the tutorial recording to 16:9 and compress it under 10MB”
  • “Add a 'DRAFT' watermark to this preview video”
  • “Check the status of my last transcode job”

Great for developer workflows

When you're building an app that involves video, you often need to test transcoding, generate sample outputs, or process assets. With FFmpeg Micro in Cursor, you can do all of that from the same window where you write code — no context switching to a terminal or dashboard.

The MCP server accepts public HTTPS URLs directly, so you can point it at test videos, CDN assets, or storage bucket URLs without uploading anything manually.

Troubleshooting

Common problems when running FFmpeg Micro from Cursor, and what to do about each.

No sign-in window
Sign-in happens in a browser window the first time Cursor uses the server. If no window opens, check that the server from Setup is saved with the URL https://mcp.ffmpeg-micro.com, exactly as written there.
Request timed out
transcode_and_wait and run_blueprint_and_wait hold the request open until the job is done, and a long render can outlast a 60-second client timeout. Ask Cursor to start the job and check on it instead: transcode_video then get_transcode, or run_blueprint then get_blueprint_run.
A file on your machine
The tools take URLs. A local file goes up first through request_upload_url and confirm_upload, which hands back the gs:// URL to use as the input.
Download link expired
Download links are signed and short-lived. Ask for a new one and Cursor calls get_download_url again.
Job failed
Ask Cursor what went wrong. get_transcode returns the job's error details, for example a file over your plan's size limit or an empty token balance.

Want to learn more about what you can build? Explore the FFmpeg API for complete documentation, code examples, and workflows.