Server data from the Official MCP Registry
Image, video, chat and speech models with one API key. The model can review its own images.
About
Image, video, chat and speech models with one API key. The model can review its own images.
Security Report
This is a well-structured MCP server for the apimodels.app API with proper authentication, input validation, and error handling. The server requires an API key for all operations and implements reasonable permission scoping. Minor findings include broad exception handling in some places and the helper scripts in the skills directory that could benefit from additional validation, but these do not represent security vulnerabilities. Supply chain analysis found 3 known vulnerabilities in dependencies (0 critical, 3 high severity). Package verification found 1 issue.
5 files analyzed · 10 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Permissions Required
This plugin requests these system permissions. Most are normal for its category.
What You'll Need
Set these up before or after installing:
Environment variable: APIMODELS_API_KEY
Environment variable: APIMODELS_BASE_URL
Environment variable: APIMODELS_WAIT_SECONDS
Environment variable: APIMODELS_TIMEOUT_MS
How to Install
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-stimqq-apimodels-mcp": {
"env": {
"APIMODELS_API_KEY": "your-apimodels-api-key-here",
"APIMODELS_BASE_URL": "your-apimodels-base-url-here",
"APIMODELS_TIMEOUT_MS": "your-apimodels-timeout-ms-here",
"APIMODELS_WAIT_SECONDS": "your-apimodels-wait-seconds-here"
},
"args": [
"-y",
"apimodels-mcp"
],
"command": "npx"
}
}
}Documentation
View on GitHubFrom the project's GitHub README.
apimodels-mcp
MCP server for apimodels.app — call image, video, LLM chat and text-to-speech models with one API key, from Claude Desktop, Cursor, or any MCP client.
One key unlocks GPT-5.5, Claude, Gemini, GLM, DeepSeek, Qwen, Seedance, Veo, Kling, gpt-image-2, Gemini Image, MiniMax speech and more — billed in USD, you only pay for successful generations.
Tools
| Tool | What it does |
|---|---|
list_models | List available model ids (chat / image / video / audio). |
chat | Chat / text completion with any LLM (gpt-5-5, claude-opus-4-8, gemini-3-pro-preview, …). |
generate_image | Text-to-image or image edit; returns the image URL(s) plus a downscaled preview the model can look at. |
review_image | A vision model critiques an image against your brief and proposes a revised prompt. |
generate_video | Text-to-video (optional reference image); returns the video URL(s), or a task id if it is not done within wait_seconds. |
get_task | Wait for / check on a task that generate_image, generate_video or text_to_speech handed back as still running. |
text_to_speech | Text-to-speech (MiniMax voices); returns the audio URL. ElevenLabs TTS is not exposed here — it streams raw bytes from POST /v1/tts/stream rather than returning a URL. |
Long generations do not get lost
Every generation is asynchronous on apimodels, and video is slow: a median of about 2.5 minutes, 9 in 10 within 8 minutes (production, week to 2026-09-22). Images take about 50 seconds. Meanwhile Codex aborts an MCP tool call after 60 seconds by default, and the MCP SDK's own client timeout is 60 seconds too. A tool that blocks until the video is ready therefore gets killed mid-wait — the task keeps running, the account is billed when it finishes, and the assistant never sees the URL. Versions up to 0.2.x did exactly that.
Since 0.3.0 the generation tools wait at most wait_seconds (default 50) and then return the task id with a "still running" note; the assistant calls get_task, which waits up to another wait_seconds and returns the URL(s) — with the image preview for image tasks — or "still running" again. Nothing is resubmitted and nothing is billed twice. The assistant does this on its own; you just ask for the video.
- Codex: keep the default. Or raise
tool_timeout_secfor this server inconfig.tomland pass a largerwait_seconds. - Claude Code / Claude Desktop / Cursor: no 60-second limit, so
wait_seconds: 600ongenerate_videogets the URL in one call.APIMODELS_WAIT_SECONDS=600in the server's env makes that the default.
The model can check its own work
Ask for an image and let the assistant iterate until it is right — "make a 16:9 banner that says SAVE 10%, check the spelling, fix it if needed":
generate_imagereturns the URL and a preview of the image itself (max 1024px JPEG). Clients that pass tool-result images to the model — Claude Desktop, Claude Code, Cursor — let it see what it made. Passreturn_image: falseto skip the preview.review_imageworks everywhere, including clients that show tool-result images to you but not to the model (Cherry Studio is one). It sends the image and your brief to a vision model and returns what matches, what is wrong (garbled text, composition, aspect ratio, artifacts) and a revised prompt. One review costs well under $0.01 on the defaultgpt-5.6-luna.
The assistant picks aspect_ratio and resolution itself from what you ask for, so "make it 16:9" in plain words is enough.
Local images just work
image_url on generate_image and generate_video takes any of these:
- a public
https://…URL — passed through untouched - a local file path —
/Users/me/photo.png,./ref.jpg,~/Pictures/x.webp - a URL on your own machine —
http://127.0.0.1:8000/photo.png,http://localhost:3000/… - a
data:image/png;base64,…URI
The last three are uploaded for you first, and the resulting public URL is what gets
generated from. This has to happen here rather than server-side: the file exists only on
your machine, and 127.0.0.1 means our server when our server resolves it — which is why
passing one to the REST API directly fails with private/reserved IP addresses not allowed.
This MCP server runs next to your files, so it can do what our servers cannot.
Uploads land in your account's R2 space and are auto-deleted after 7 days.
Setup
- Get an API key at https://apimodels.app/console/api-keys (it looks like
sk_…). - Add the server to your MCP client.
Claude Desktop
Edit claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"apimodels": {
"command": "npx",
"args": ["-y", "apimodels-mcp"],
"env": {
"APIMODELS_API_KEY": "sk_your_key_here"
}
}
}
}
Restart Claude Desktop. You can now ask it to "generate an image of …" or "make a 5-second video of …".
Cursor
Settings → MCP → Add new MCP server, or add to ~/.cursor/mcp.json:
{
"mcpServers": {
"apimodels": {
"command": "npx",
"args": ["-y", "apimodels-mcp"],
"env": { "APIMODELS_API_KEY": "sk_your_key_here" }
}
}
}
Codex CLI
Add to ~/.codex/config.toml:
[mcp_servers.apimodels]
command = "npx"
args = ["-y", "apimodels-mcp"]
env = { APIMODELS_API_KEY = "sk_your_key_here" }
# Optional. Codex aborts a tool call after 60 s by default; the tools stay under that
# on their own (see "Long generations do not get lost"), so this is only needed if you
# want generate_video to return the URL in one call — then also pass wait_seconds: 600.
# tool_timeout_sec = 660
Cherry Studio
In Settings → MCP Servers, add a new server of type stdio:
- Command:
npx - Arguments:
-y apimodels-mcp - Environment variables:
APIMODELS_API_KEY=sk_your_key_here
Enable the server, then select it for your conversation from the MCP control under the chat box. Use a chat model that supports tool calls (Claude, GPT, Gemini …) as the conversation model — it calls the image model for you. Cherry Studio needs Node.js installed for npx; on Windows install it from https://nodejs.org.
Any other MCP client works the same way — run npx -y apimodels-mcp over stdio with APIMODELS_API_KEY in the environment.
Models, docs and pricing
Everything the tools call is documented on apimodels.app:
- API documentation · pricing · full model catalog
- Image: GPT Image 2.5 API (model page), GPT Image 2 API, all image models
- Video: Seedance 2.5 API, Google Veo API, MiniMax H3 API, FlashVSR video upscaling
- Chat and speech: LLM API (GPT, Claude, Gemini, DeepSeek, GLM, Qwen), audio and text-to-speech
- Other ways in: Claude Code setup, chat clients, Agent Skills, free calculators and tools
- Prompt libraries with example outputs: GPT Image 2.5 prompts, GPT Image 2 prompts, Seedance 2.5 prompts, MiniMax H3 prompts
Configuration
| Env var | Default | Description |
|---|---|---|
APIMODELS_API_KEY | — (required) | Your sk_… key. |
APIMODELS_BASE_URL | https://api.apimodels.app/v1 | API base URL. |
APIMODELS_WAIT_SECONDS | 50 | Default wait_seconds for generate_image, generate_video, text_to_speech and get_task: how long a call waits before handing back a task id. Max 900. |
APIMODELS_TIMEOUT_MS | — | Deprecated (0.2.x): the same wait in milliseconds. Still honoured if set. |
Local development
pnpm install
pnpm build
APIMODELS_API_KEY=sk_... node dist/index.js # runs over stdio
License
MIT
Reviews
No reviews yet
Be the first to review this server!
More Developer Tools MCP Servers
Git
Freeby Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
Fetch
Freeby Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
Paperclip
Freeby Paperclipai · Developer Tools
Trending hip-hop artist momentum scores across four cultural dimensions.
Toleno
Freeby Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
mcp-creator-python
Freeby mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.
MCP Marketplace
Freeby mcp-marketplace · Developer Tools
Search and install MCP servers from inside your AI client.
