Skip to main content
Glama
Yamidor

Gemini Image Generation MCP

by Yamidor
README.md
# Conector MCP — Generación de imágenes con Gemini

Servidor MCP remoto en Node.js/TypeScript que expone la herramienta `generate_image` para que Claude (claude.ai) genere imágenes usando la API de Google Gemini.

## Requisitos

1. **API key de Google AI Studio**: crea una gratis en https://aistudio.google.com/apikey
2. **Node.js 20+** (para probar en local)
3. **Una cuenta de hosting** que soporte Node.js: Render, Railway, Fly.io o Google Cloud Run. Render tiene plan gratuito y es el más sencillo.

## Prueba en local

```bash
npm install
cp .env.example .env        # edita .env con tu API key
npm run dev
```

El endpoint queda en `http://localhost:3000/mcp/TU_SECRETO` (POST). Verifica salud en `http://localhost:3000/health`.

Puedes probarlo con MCP Inspector:

```bash
npx @modelcontextprotocol/inspector
# Transport: Streamable HTTP
# URL: http://localhost:3000/mcp/TU_SECRETO
```

## Despliegue en Render (gratis)

1. Sube este proyecto a un repositorio de GitHub.
2. En https://render.com crea un **Web Service** apuntando al repo.
3. Configuración:
   - **Build command:** `npm install && npm run build`
   - **Start command:** `npm start`
   - **Environment variables:**
     - `GEMINI_API_KEY` = tu key de AI Studio
     - `MCP_SECRET` = un texto aleatorio largo (ej. genera uno con `openssl rand -hex 12`)
4. Render te da una URL tipo `https://gemini-mcp-xxxx.onrender.com`.

Tu endpoint MCP final será:

```
https://gemini-mcp-xxxx.onrender.com/mcp/TU_SECRETO
```

> Nota: en el plan gratuito de Render el servicio "duerme" tras 15 min de inactividad; la primera petición puede tardar ~30-50 segundos en despertar.

## Conectar en claude.ai

1. Ve a **Configuración → Conectores** (Settings → Connectors).
2. Clic en **Agregar conector personalizado** (Add custom connector).
3. Nombre: `Gemini Imágenes` — URL: tu endpoint MCP completo (con el secreto).
4. Guarda. Al iniciar un chat, activa el conector en el menú de herramientas.
5. Pídele a Claude: *"Genera una imagen de un paisaje cafetero de Ebéjico al atardecer"* — Claude llamará a `generate_image` y te mostrará el resultado.

## Seguridad

- El `MCP_SECRET` en la ruta evita que cualquiera que descubra tu dominio consuma tu cuota de la API de Gemini. No lo compartas ni lo subas a GitHub (usa variables de entorno).
- La API key de Gemini **nunca** sale del servidor; Claude solo ve la herramienta.
- Si sospechas que el secreto se filtró, cámbialo en las variables de entorno y actualiza la URL del conector.

## Cambiar de modelo

Por defecto usa `gemini-2.0-flash-preview-image-generation`. Si Google publica un modelo nuevo (o quieres usar Imagen), cambia la variable `GEMINI_IMAGE_MODEL`. Verifica los modelos disponibles para tu key en https://ai.google.dev/gemini-api/docs/models

## Estructura

```
gemini-mcp/
├── src/index.ts        # Servidor Express + MCP + llamada a Gemini
├── package.json
├── tsconfig.json
└── .env.example
```