Skip to main content
Glama
README.md
# OpenAI Image MCP

Tiny remote MCP server for OpenAI image generation, designed to be easy to deploy on Render.

## What this is

This project exposes a remote MCP endpoint at `/mcp` with one main tool:

- `generate_image`: generate one or more images from a prompt using OpenAI.
- `server_info`: simple read-only check of the configured model and whether the API key is present.

It reads `OPENAI_API_KEY` from Render environment variables.

## Important model note

This project defaults to:

- `OPENAI_IMAGE_MODEL=gpt-image-1`

That is a **likely safe default, not a guaranteed final recommendation**. OpenAI image model names can change over time. If you already know the exact model you want, set `OPENAI_IMAGE_MODEL` on Render to that value instead.

## Files

- `server.js` - the remote MCP server
- `package.json` - Node package config
- `render.yaml` - optional Render blueprint
- `Procfile` - simple process declaration
- `.gitignore`
- `README.md`

## Tool interface

### `generate_image`

Inputs:

- `prompt` (required, string)
- `size` (optional): `1024x1024`, `1536x1024`, `1024x1536`, `auto`
- `quality` (optional): `auto`, `low`, `medium`, `high`
- `background` (optional): `auto`, `opaque`, `transparent`
- `output_format` (optional): `png`, `webp`, `jpeg`
- `moderation` (optional): `auto`, `low`
- `n` (optional, 1-4)
- `user` (optional string)

Output:

- a text summary
- one inline MCP image item per generated image when OpenAI returns base64 data
- a short JSON text block per image with metadata like `revised_prompt`

## Deploy on Render

### Option A: easiest manual deploy

1. Put this folder in a GitHub repo.
2. Log into Render.
3. Create a **New Web Service**.
4. Connect the GitHub repo.
5. Use these settings:
   - Runtime: **Node**
   - Build Command: `npm install`
   - Start Command: `npm start`
6. Add environment variable:
   - `OPENAI_API_KEY` = your OpenAI API key
7. Optional environment variable:
   - `OPENAI_IMAGE_MODEL` = `gpt-image-1`
8. Deploy.
9. After deploy, note your service URL, for example:
   - `https://your-app-name.onrender.com/mcp`

### Option B: Render Blueprint

If you prefer, commit `render.yaml` and create the service from that blueprint. You will still need to set `OPENAI_API_KEY` manually because secrets should not live in the repo.

## Quick checks after deploy

Open these in a browser:

- `https://your-app-name.onrender.com/`
- `https://your-app-name.onrender.com/health`

`/health` should return JSON and show `hasOpenAIKey: true` after you add the environment variable.

## How Sand should add this remote MCP

After Render is live, Sand should add the remote MCP server URL:

- MCP URL: `https://your-app-name.onrender.com/mcp`

If Sand asks for a remote MCP endpoint, use the `/mcp` URL exactly.

## Local run (optional)

```bash
npm install
OPENAI_API_KEY=your_key_here npm start
```

Then the MCP endpoint is:

- `http://localhost:3000/mcp`

## Notes and limitations

- This is intentionally tiny and simple.
- It does not store files or prompts.
- It returns inline image content from OpenAI base64 output.
- Transparent backgrounds only work on some image models and formats.
- Larger `n` values can increase cost quickly.
- If OpenAI changes supported model names or parameter rules, update `OPENAI_IMAGE_MODEL` or the tool schema accordingly.