@enhancor/mcp-happy-horse
v0.2.0
Published
MCP server for the Enhancor Happy Horse video generation API — text-to-video, image-to-video, multi-reference, and video editing for Claude and any MCP client.
Downloads
61
Maintainers
Readme
@enhancor/mcp-happy-horse
Official MCP server for the Enhancor Happy Horse video generation API.
Plug Enhancor into Claude (or any MCP-compatible client) and let the model generate videos from text, animate images, mix multiple references, or edit existing videos — natively. No middleware, no glue code.
What's in the box
Four tools mapping to the Happy Horse API:
| Tool | What it does |
| --- | --- |
| happy_horse_submit_job | Submit a video job. Returns a requestId immediately. |
| happy_horse_check_status | One-shot status check. Returns the result video URL when COMPLETED. |
| happy_horse_wait_for_completion | PREFERRED for video — long-poll a job server-side. Pair with submit_job for clean UX without client-side sleep loops. Each call blocks up to 45s; just call again if still in progress. |
| happy_horse_submit_and_wait | Convenience: submit + block in one call. Default 45s cap. Only useful for tests / very short jobs. |
The MCP does not expose webhook_url — it manages that internally (see How it works below).
Modes
| Mode | input_media |
| --- | --- |
| text-to-video | none |
| image-to-video | exactly 1 image |
| multi-reference-image-to-video | 1–9 images |
| video-editing | exactly 1 video + 0–5 reference images |
Audio is not accepted in input_media. Images must be ≥400×400px and ≤10MB.
Install
Requires Node.js 18+.
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"enhancor-happy-horse": {
"command": "npx",
"args": ["-y", "@enhancor/mcp-happy-horse"],
"env": {
"ENHANCOR_API_KEY": "sk_your_key_here"
}
}
}
}Restart Claude Desktop.
Claude Code
claude mcp add enhancor-happy-horse \
-s user \
--env ENHANCOR_API_KEY=sk_your_key_here \
-- npx -y @enhancor/mcp-happy-horseCursor, Cline, Continue, or any MCP client
Point it at npx -y @enhancor/mcp-happy-horse as the command, set ENHANCOR_API_KEY in env.
Getting an API key
- Sign up at https://app.enhancor.ai/api-dashboard
- Create an API key
- Per-product pricing lives inline in each product's docs on the dashboard. Per-job cost also returns in every
/statusresponse.
Example prompts
Once installed, ask Claude things like:
Generate a 5-second 720p text-to-video shot of a drone flying over a mountain range at golden hour, cinematic wide shot.
Take this image [URL] and animate it: gentle camera push-in, 4 seconds, 1080p.
Combine these 3 reference images [URL1] [URL2] [URL3] into a 6-second 1080p clip — slow pan from left to right, soft cinematic lighting.
Edit this video [URL] to add a sunset color grade and slow it down to half speed. Use these stills as style references [URL_a] [URL_b].
Claude will pick the right mode, fill the params, call Enhancor, and return the output video URL.
Pricing
Cost is per-second based on resolution:
| Resolution | Credits/second | | --- | --- | | 720p | 70 | | 1080p | 115 |
Total cost = credits/second × duration. Per-job cost also returns in every /status response. For live per-plan USD pricing and credit balance, see the dashboard: https://app.enhancor.ai/api-dashboard.
Configuration
| Environment variable | Required | Default | Notes |
| --- | --- | --- | --- |
| ENHANCOR_API_KEY | yes | — | Your Enhancor API key |
| NGROK_AUTHTOKEN | no | — | If set, the MCP uses ngrok (free tier is fine) for the webhook tunnel instead of localtunnel. More reliable for production. Get a token at https://dashboard.ngrok.com/get-started/your-authtoken |
| ENHANCOR_AUTO_DOWNLOAD | no | 1 (on) | When on, the MCP downloads result videos to a local folder and includes a local_path in the response. Critical for sandboxed MCP clients (Claude Code, Cowork) where Cloudfront URLs are blocked. Set to 0 to disable. |
| ENHANCOR_DOWNLOAD_DIR | no | ./enhancor-downloads | Folder for auto-downloaded result files. Defaults to a subfolder of the current working directory so the file is reachable from sandboxed clients. |
| ENHANCOR_HAPPY_HORSE_BASE_URL | no | https://apireq.enhancor.ai/api/happy-horse-1/v1 | Override for staging / self-host |
Supported parameters
prompt(required, max 2,500 characters) — scene, camera, style, dialoguemode(required) —text-to-video,image-to-video,multi-reference-image-to-video,video-editingresolution(required) —720por1080pduration(required) — integer seconds, 3–15fast_mode(optional, defaulttrue) — fast model when true, standard model when false. Not supported forvideo-editing.aspect_ratio(optional, default16:9) —16:9,9:16,1:1,4:3,3:4. Only applies totext-to-videoandmulti-reference-image-to-video.input_media(optional, required for non-text-to-videomodes) — array of{ url, type? }items. See Modes above for per-mode rules.
How it works
The Happy Horse API delivers results via webhook. Since an MCP server runs locally on the user's machine with no public URL, this package does the webhook setup for you:
- On the first tool call, it spins up a local HTTP listener on a random loopback port.
- It exposes that listener publicly: ngrok if
NGROK_AUTHTOKENis set, otherwiselocaltunnel(no signup needed). - Every
/queuerequest sends that public URL aswebhook_urlautomatically. wait_for_completionandsubmit_and_waitrace the webhook against a 15-second/statuspoll — whichever reports completion first wins. That means you always get your result, even if the tunnel is flaky or a webhook is delayed for a particular request.
No configuration is required. The tunnel lifecycle is transparent. For best webhook latency and reliability (e.g. in production or long-running sessions), set NGROK_AUTHTOKEN — ngrok's free tier is sufficient.
Support & community
https://www.skool.com/publicai
License
MIT
