ahel is live on Product Hunt today. Upvote

@vidofy/mcp

MCP serverMedia

Generate video, images, audio and speech with Vidofy, Veo 3.1, Kling 3.0, Flux 2 and 570+ models.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use @vidofy/mcp

From the project's README

As published by vidofy/mcp in README.md.

MCP server for Vidofy — generate images, video, audio and speech from Claude Desktop, Cursor, or any MCP client, billed to your own Vidofy account, at the same prices the website charges.

Over 570 models, including Veo 3.1, Kling 3.0, Flux 2, Seedance 2.5, Wan 2.7, Hailuo 2.3, Runway, Luma Ray 2, Qwen Image 3.0, Vidu Q3 and LTX 2 — text-to-video, image-to-video, text-to-image, image editing, video and photo effects, lipsync, text-to-speech and voice cloning. The agent browses the catalogue, prices a generation before running it, and follows one to its result.

Status: v0.1.0, the first public release.

This server is for personal Vidofy accounts. It takes one credential, VIDOFY_TOKEN, and spends your own coins — the same balance the website spends, at the same prices. There is no other billing mode: VIDOFY_API_KEY is refused at startup, and that is a decision, not a feature waiting on a release.

Tools

ToolWhat it doesSpends
list_modesWhat Vidofy can generate: text-to-image, image-to-video, lipsync, speech…no
list_modelsThe models in one mode, with each one's credit cost and rough durationno
get_modelOne model's full input contract: a JSON Schema, its file slots and their limitsno
estimate_costWhat a generation will cost, before running itno
generateRuns it. The only tool that spends the balance.yes
get_statusWhether a generation has finishedno
get_resultThe finished mediano
get_balanceCoins left, and how many expire with the subscriptionno
get_usageRecent generations and what they costno

The usual order is list_modeslist_modelsget_modelestimate_costgenerateget_statusget_result.

generate is the only tool without readOnlyHint, which is what tells a client to ask the user before running it. It charges at submit, not on success, and returns immediately with an id — a generation takes from ~30 seconds to several minutes, so the agent polls get_status rather than holding the call open. Output is private by default; pass public: true only when the user asked for a permanent public link.

File inputs take a path on the machine running the server. The package reads the user's own file and streams it with the submit — it never makes a temporary copy — and checks the extension and size against that model's own limits first, so a file the server would reject never leaves the disk.

Not exposed, deliberately: checkout, auto top-up, purchases, referrals, the daily reward. Nothing in this package can buy coins or change a plan, however it is prompted.

Setup

There are two ways in. Take the first one unless your client cannot do it.

1. Remote connector — nothing to install

Give your client this URL:

https://vidofy.ai/mcp-app

You sign in in your browser and approve once. No token to copy, nothing to keep in a config file, and nothing to update when this package changes.

ClientHow
Claude.ai · Claude DesktopSettings → Connectors → Add custom connector → paste the URL → Connect, then approve the sign-in. They share one list: add it in either and it appears in both. Available on every plan, including Free — where you get one connector.
ChatGPTSettings → Connectors → add a custom connector (no such option? turn on Developer Mode in Settings first) → paste the URL → Connect, then approve. On a Business or Enterprise workspace an administrator adds it for everyone.
Claude Code · Codex · CursorEach accepts a remote MCP server URL. Follow that client's own MCP documentation and give it the URL above.

Then ask it: "list Vidofy modes" to confirm the connection, and "make me a 5-second clip of a red bicycle" — it prices the generation before running it.

2. Local stdio server — for a client that only speaks stdio

Create a personal MCP token at vidofy.ai → Studio → Account → MCP Access. It is shown once.

// claude_desktop_config.json   (Cursor: .cursor/mcp.json — same shape)
{
  "mcpServers": {
    "vidofy": {
      "command": "npx",
      "args": ["-y", "@vidofy/mcp"],
      "env": { "VIDOFY_TOKEN": "vmt_..." }
    }
  }
}

npx fetches it on first run. Prefer a pinned copy? npm i -g @vidofy/mcp, then:

{ "command": "vidofy-mcp", "env": { "VIDOFY_TOKEN": "vmt_..." } }

Both paths reach the same account, the same models and the same balance. The difference is only where the process runs and how you prove who you are.

Environment

VariableRequiredWhat it does
VIDOFY_TOKENyesPersonal MCP token (vmt_…). Spends your own Vidofy coins, exactly as the studio does.
VIDOFY_API_BASEnoOverride the origin the server talks to — an origin only, no path. Defaults to https://vidofy.ai, which is what you want.

VIDOFY_API_KEY is recognised only in order to be refused: a vky_… key bills a different balance, which this server does not serve. Setting it stops startup with a message naming the token to use instead — and setting both is refused too, since the two bill different balances and no precedence rule is worth having to remember.

Development

npm install
npm run build
npm run inspect      # MCP Inspector — spends nothing

VIDOFY_API_BASE points it at a different origin, if you are running one.

Nothing here writes to stdout. With stdio transport, stdout is the protocol channel — a single stray console.log() puts a non-JSON line in the stream and the client drops the connection with an error that explains nothing. Diagnostics go to stderr via the log() helper in src/index.ts.

Layout

src/config.ts          credential + mode + base URL, validated at startup
src/backend.ts         the only place that talks HTTP: auth, retries, multipart, errors
src/schema.ts          one model's m_options → a JSON Schema the agent can fill in
src/map/b2c.ts         both response shapes → one; strips the provider cost
src/tools/info.ts      list_modes, list_models, get_model
src/tools/generation.ts estimate_cost, generate, get_status, get_result
src/tools/account.ts   get_balance, get_usage
src/index.ts           the server: stdio transport, tool registration, annotations


server.json     MCP registry manifest (name must match package.json "mcpName")

Licence

MIT

Advanced
Delivery
mcp MCP server → your ahel gateway (mcp.ahel.ai) → every connected AI client.
Catalog kind
mcp-server
Gateway key
ai-vidofy-mcp
Source
github.com/vidofy/mcp
Hosted endpoint
https://vidofy.ai/mcp-app