Skip to main content
Glama
README.md
# genrelay-mcp

MCP server for [GenRelay](https://genrelay.ai) — generate **video and images** from Claude Desktop, Cursor, or any MCP client.

One server, several models: **Veo 3.1**, **Grok Imagine**, **Omni Flash**, **Nano Banana Pro/2**, **GPT Image 2**.

## Install

Nothing to install — point your MCP client at it with `npx`.

**Claude Desktop** — `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "genrelay": {
      "command": "npx",
      "args": ["-y", "genrelay-mcp"],
      "env": { "GENRELAY_API_KEY": "sk-..." }
    }
  }
}
```

**Cursor** — `.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "genrelay": {
      "command": "npx",
      "args": ["-y", "genrelay-mcp"],
      "env": { "GENRELAY_API_KEY": "sk-..." }
    }
  }
}
```

Get a key at [genrelay.ai](https://genrelay.ai). Restart the client after editing the config.

## Tools

| Tool | What it does |
|---|---|
| `generate_video` | Text-to-video and image-to-video. Returns the clip, or a task id if it's still running |
| `generate_image` | Image generation and editing. Returns the picture **inline** |
| `check_job` | Pick up a job by task id |
| `list_models` | What's available and what each model is for |

Then just ask:

> Generate an 8-second video of a neon fox running through a rainy city at night, 1080p

## About the wait

Video generation takes **1–5 minutes** — longer than an MCP tool call is allowed to run. So `generate_video` waits as long as it safely can, then hands back a task id:

```
Still generating — this is normal for video.

task id: task_abc123
status: in_progress
progress: 35%

Call check_job with task id "task_abc123" in a minute or two.
```

That's a normal outcome, not a failure. The job keeps running server-side — **use `check_job`, don't resubmit** (resubmitting bills a second time).

Images usually finish inside the budget and come back inline.

## Models

**Video**

| Model | Notes |
|---|---|
| `veo_3_1` | Google Veo 3.1 — highest quality, with audio |
| `veo_3_1-fl` | first/last frame — supply both endpoints |
| `veo_3_1-components` | component-guided |
| `grok-imagine-video-1-5-preview` | xAI Grok Imagine 1.5 |
| `grok-imagine-1-0-video` | xAI Grok Imagine 1.0 |
| `omni-flash` | fast, good for longer clips |
| `omni_flash_abra_edit` | video editing from a source video |

**Image** — `nano-banana-pro`, `nano-banana-2`, `gpt-image-2`

Tiers: images `1k`/`2k`/`4k`, Veo video `720p`/`1080p`/`4k`. **Pricing is per tier**, and a `size` matching no tier falls back to the model's base rate — so set `tier` explicitly when cost matters.

## Configuration

| Variable | |
|---|---|
| `GENRELAY_API_KEY` | required |
| `GENRELAY_BASE_URL` | optional, defaults to `https://genrelay.ai/v1` |

## Also available

- **Python SDK** — [`pip install genrelay`](https://pypi.org/project/genrelay/)
- **Chat & image edits** are OpenAI-compatible: point the official `openai` package at `https://genrelay.ai/v1`

## Development

```bash
npm install
npm run build
node test/smoke.mjs   # boots the server and speaks MCP to it
```

## License

MIT

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct responsibility: generating video, generating images, checking async job status, and listing models. There is no meaningful overlap between any pair of tools.

Naming Consistency5/5

All tools follow the same snake_case verb_noun pattern: generate_video, generate_image, check_job, list_models. The naming is uniform and predictable.

Tool Count5/5

Four tools is well-scoped for a media generation relay: two generation entry points, one async status check, and one model discovery tool. Each tool earns its place without bloat or thinness.

Completeness4/5

The core workflow is covered: list available models, start generation, and poll async results. A cancellation or retry tool would make the lifecycle more complete, but it is not an obvious blocker for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues