media-gen-mcp
media-gen-mcp
A remote MCP server that lets Claude / ChatGPT generate images (meta.ai) and videos (vibes.ai). Hosted on Render, kept alive 24/7 by UptimeRobot.
Tools
Tool | Backend | Returns |
| meta.ai | inline image + CDN URL(s) |
| meta.ai | edited image inline + URL |
| meta.ai | transparent PNG asset |
| meta.ai | animated GIF |
| meta.ai | full suite: sandbox files, docs, conversions |
| meta.ai | cited web answer |
| meta.ai | structured report |
| meta.ai | IG/FB/Threads summary |
| meta.ai | places w/ address/hours/price |
| vibes.ai | video URL(s) + poster preview |
| vibes.ai i2v | video URL |
| vibes.ai | lip-synced video URL |
| vibes.ai | TTS voice IDs |
| vibes.ai | past media + IDs |
| vibes.ai | ok |
| vibes.ai | ok |
| both | session health |
Media delivery: images are embedded inline in the chat (MCP image content blocks) and returned as public CDN URLs for download. A hourly janitor purges stray temp files so Render's free disk never fills.
Endpoints
GET /health— keep-alive probe (UptimeRobot: HTTP monitor, every 5 min)GET /— info JSONPOST /mcp— MCP Streamable HTTP transport (stateless)
Run locally
pip install -r requirements.txt
python -m uvicorn server:app --host 0.0.0.0 --port 8000Deploy on Render
Push this repo to GitHub.
Render → New → Web Service → connect the repo. It reads
render.yaml, or manually:Build:
pip install -r requirements.txtStart:
uvicorn server:app --host 0.0.0.0 --port $PORTHealth check path:
/health
Optional env var:
META_TOKEN(overrides embedded token).Free plan sleeps after ~15 min idle → UptimeRobot pings
/health.
Connect clients
Claude: Settings → Connectors → Add custom connector →
https://<your-app>.onrender.com/mcpChatGPT: Settings → Apps & Connectors → Create (Developer mode) → MCP Server URL:
https://<your-app>.onrender.com/mcp(no auth)