In-depth architectural comparison of the Magic Hour MCP Server and Runapi AI MCP MCP servers. Compare execution transports, security boundaries, tool capabilities, quality scores, and ready-to-paste client installation snippets for Claude, Cursor, Windsurf, and VS Code.
At a Glance & Executive Verdict
Magic Hour MCP Server
Multimedia Process · Remote HTTP/SSE
Quality: 60/100 (Good) | Auth: No auth required
Runapi AI MCP
Multimedia Process · Local stdio
Quality: 68/100 (Great) | Auth: API Key required
Verdict Summary: Choose Magic Hour MCP Server if you need specialized Multimedia Process tools running via a hosted cloud SSE transport. Choose Runapi AI MCP if your workspace requires Multimedia Process integration with local subprocess execution. Both servers can be configured concurrently in your client's mcpServers manifest.
Which MCP Server Should You Choose?
Choose Magic Hour MCP Server when:
You need dedicated capabilities in the Multimedia Process domain.
You prefer remote streaming HTTP/SSE transport architecture.
Your security boundary fits: No auth required (Free / Open Source).
Create and edit AI videos, images, GIFs, and audio through 44 MCP tools.
Unified AI model API for 130+ models across 18 providers. Browse models, check pricing, create image/video/music/audio tasks, poll results, check balance, and call LLM endpoints. Free catalog tools work without an API key. npx @runapi.ai/mcp
Check that the Magic Hour MCP server is reachable.
wait_for_video_project
Poll a video project until it completes, errors, is canceled, or times out. Returns sanitized download fields. Use `exact_download_urls[n]` or `downloads[n].url` exactly as returned; do not shorten it, remove query parameters, or append expiration metadata.
wait_for_image_project
Poll an image project until it completes, errors, is canceled, or times out. Returns the final project JSON and, when complete, attempts to inline image downloads for Inspector or compatible clients. Returns sanitized download fields. Use `exact_download_urls[n]` or `downloads[n].url` exactly as returned; do not shorten it, remove query parameters, or append expiration metadata.
wait_for_audio_project
Poll an audio project until it completes, errors, is canceled, or times out. Returns the final project JSON and, when complete, attempts to inline audio downloads for Inspector or compatible clients. Returns sanitized download fields. Use `exact_download_urls[n]` or `downloads[n].url` exactly as returned; do not shorten it, remove query parameters, or append expiration metadata.
Ready-to-Paste Client Configurations
Paste either (or both) of these JSON server blocks into your client config file (e.g. claude_desktop_config.json or ~/.cursor/mcp.json).
Magic Hour MCP Server is categorized under Multimedia Process and uses a remote streaming HTTP/SSE transport. In contrast, Runapi AI MCP belongs to Multimedia Process using local stdio subprocess. Select Magic Hour MCP Server when you need capabilities focused on multimedia process and Runapi AI MCP when you require tools for multimedia process.
Fetch a image `downloads[n].url` from a completed image project and return it as inline MCP image content for compatible clients. Pass the exact full signed URL from `downloads[n].url` without trimming query parameters; `expires_at` is separate metadata, not part of the URL.
fetch_audio_download
Fetch a audio `downloads[n].url` from a completed audio project and return it as inline MCP audio content for compatible clients. Pass the exact full signed URL from `downloads[n].url` without trimming query parameters; `expires_at` is separate metadata, not part of the URL.
fetch_video_download
Fetch a video `downloads[n].url` from a completed video project and return it as an embedded MCP binary resource for compatible clients. Pass the exact full signed URL from `downloads[n].url` without trimming query parameters; `expires_at` is separate metadata, not part of the URL.
account_retrieve
Get the current credit balance and subscription details of the account that owns the API key.
saved_items_list
Returns active saved items owned by the authenticated account, newest first. Each item includes every saved asset with a durable file_path for reuse in compatible generation APIs and a temporary signed URL for previewing or downloading. Filter by type to find characters, references, voices, moodboards, or brand kits. To fetch the next page, pass the response's next_cursor as cursor.
video_assets_generate_presigned_url
Generates a list of pre-signed upload URLs for the assets required. This API is only necessary if you want to upload to Magic Hour's storage. Refer to the [Input Files Guide](https://docs.magichour.ai/integration/inputs-and-outputs) for more details.
The response array will match the order of items in the request body.
**Valid file extensions per asset type**:
- video: mp4, m4v, mov, webm
- audio: mp3, wav, aac, flac, webm, weba, m4a, opus, ogg, oga, aiff, amr
- image: png, jpg, jpeg, jfif, heic, heif, webp, avif, jp2, tiff, tif, bmp
- gif: gif, webp, webm
> Note: `gif` is only supported for face swap API `video_file_path` field.
Once you receive an upload URL, send a `PUT` request to upload the file directly.
Example:
```
curl -X PUT --data '@/path/to/file/video.mp4' \
https://videos.magichour.ai/api-assets/id/video.mp4?<auth params from the API response>
```
MCP guidance:
- This only creates presigned upload URLs. For local files, upload the raw bytes to each returned `upload_url` outside the generation call, then pass the matching `file_path` into the create tool.
- For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.
face_detection_retrieve_details
Get the details of a face detection task.
Use this API to get the list of faces detected in the image or video to use in the [face swap photo](https://docs.magichour.ai/api-reference/image-projects/face-swap-photo) or [face swap video](https://docs.magichour.ai/api-reference/video-projects/face-swap-video) API calls for multi-face swaps.
face_detection_detect_faces
Detect faces in an image or video.
Use this API to get the list of faces detected in the image or video to use in the [face swap photo](https://docs.magichour.ai/api-reference/image-projects/face-swap-photo) or [face swap video](https://docs.magichour.ai/api-reference/video-projects/face-swap-video) API calls for multi-face swaps.
Note: Face detection is free to use for the near future. Pricing may change in the future.
MCP guidance:
- This starts an async face-detection task and returns an `id`. Use the face-detection details endpoint with that id to retrieve detected faces before doing individual face swaps.
- For `*_file_path` values, prefer an existing Magic Hour file path or a `file_path` returned by the upload-URL endpoint after the file bytes are uploaded. Direct public media URLs may work when they are stable, fetchable, and return raw file bytes, but hotlinked URLs can fail; when in doubt, use the presigned upload flow first and pass the returned `file_path`.
+33 more tools listed on main page
Runapi AI MCP Tools (9)
list_models
List RunAPI models from the embedded catalog. Optional filters: modality, service, or action.
get_model_info
Get supported endpoint, current runtime pricing, and input constraints for a RunAPI model slug. Add service and action when the model supports multiple endpoints.
list_actions
List RunAPI endpoint names grouped by output modality.
check_pricing
Return current runtime pricing for a RunAPI model/action pair.
search_prompts
Search RunAPI prompt examples by modality, category, tags, text query, model, or featured status. Free, no API key required.
check_balance
Return the authenticated RunAPI account balance and spending metrics.
create_task
Run a RunAPI operation with a caller-generated idempotency key. Asynchronous operations can optionally poll until completion.
get_task
Fetch the current status and latest payload for an existing RunAPI task.
login
Authenticate RunAPI by opening a browser PKCE login flow and saving the API key to ~/.config/runapi/config.json.