gemini-image-mcp-http

gemini-image-mcp-http

Remote MCP server (Streamable HTTP) for generating and editing images via Google Gemini, usable as a custom connector in Claude.

Category
访问服务器

README

gemini-image-mcp-http

Удалённый MCP-сервер (Streamable HTTP): генерация и редактирование изображений через Google Gemini 3.1 Flash Image («Nano Banana 2»), который можно подключить к Claude.ai в браузере (а также Claude Desktop/Cowork/мобильным приложениям) как Custom Connector.

Проверено локально: сервер поднимается, отвечает на MCP initialize/tools/list/tools/call, неверный секрет в URL получает 404. Единственное, что нельзя было протестировать здесь — сам вызов Gemini API (в песочнице нет доступа к generativelanguage.googleapis.com), но запрос к нему формируется по официальной REST-схеме Gemini.

Как это устроено

  • Один HTTP-эндпоинт: POST/GET /mcp/<MCP_SHARED_SECRET>
  • <MCP_SHARED_SECRET> — длинная случайная строка, которую вы сами зададите. Она одновременно служит и частью URL, и защитой: без неё запрос получает 404. Никому не показывайте итоговый URL целиком.
  • Внутри — два инструмента: generate_image и edit_image, оба обращаются к Gemini REST API вашим ключом (ключ хранится только на сервере, Claude его не видит).
  • Изображение возвращается сразу в чат (как картинка), без сохранения на диск — на большинстве хостингов файловая система эфемерна, так что это осознанный выбор.

⚠️ Про ключ, который вы уже присылали в чат: это больше похоже не на обычный Gemini API-ключ (те выглядят как AIzaSy...), а на другой тип токена Google. Перед деплоем зайдите на https://aistudio.google.com/apikey, создайте (или перевыпустите) именно API-ключ и используйте его — не токен из чата.


Шаг 1. Сгенерируйте секрет

openssl rand -hex 24

Сохраните результат — это будет и MCP_SHARED_SECRET, и часть URL коннектора.

Шаг 2. Задеплойте сервер

Ниже — вариант через Render.com (проще всего для одного файла, есть бесплатный план). Подойдут и Railway/Fly.io/любой VPS — везде логика одна: Node 18+, переменные окружения, публичный HTTPS-домен. В архиве есть Dockerfile, так что подойдёт и любой Docker-хостинг.

Render.com (без своего сервера)

  1. Зайдите на https://render.com → New → Web Service.
  2. Вариант «Deploy an existing image / upload code» — загрузите содержимое этой папки в свой GitHub-репозиторий (пустой репозиторий, залить файлы можно и через веб-интерфейс GitHub) и подключите его к Render.
  3. Runtime: Node. Build command: npm install. Start command: npm start.
  4. В разделе Environment добавьте:
    • GEMINI_API_KEY = ваш настоящий ключ из AI Studio
    • MCP_SHARED_SECRET = строка из шага 1
    • (необязательно) GEMINI_IMAGE_MODEL = gemini-3.1-flash-image
  5. Deploy. После сборки Render даст домен вида https://ваш-сервис.onrender.com.

Через Docker (Fly.io / Railway / свой VPS)

docker build -t gemini-image-mcp-http .
docker run -p 3000:3000 \
  -e GEMINI_API_KEY=ваш-ключ \
  -e MCP_SHARED_SECRET=строка-из-шага-1 \
  gemini-image-mcp-http

Дальше — по инструкции конкретного хостинга, как опубликовать контейнер на HTTPS-домене (на Fly.io — fly launch + fly deploy, на Railway — просто подключить репозиторий).

Шаг 3. Проверьте, что сервер отвечает

curl https://ваш-домен/           # health-check, должен вернуть "OK"

Шаг 4. Добавьте коннектор в Claude.ai

  1. В Claude.ai: Settings → Connectors (или «Настроить» → «Коннекторы»).
  2. Нажмите «+» → Add custom connector.
  3. В поле URL укажите:
    https://ваш-домен/mcp/MCP_SHARED_SECRET_СЮДА
    
    (полный секретный URL, без пробелов)
  4. Advanced settings можно оставить пустыми — авторизация уже встроена в сам URL.
  5. Нажмите «Add», затем включите коннектор для нужного чата через «+» → Connectors.

Готово — в чате можно будет попросить: «сгенерируй через Gemini картинку рыжего кота на подоконнике» или «отредактируй это изображение: сделай фон синим».


Переменные окружения

Переменная Обязательна По умолчанию Описание
GEMINI_API_KEY да Ключ Gemini API из Google AI Studio
MCP_SHARED_SECRET да Секрет в URL, защищающий эндпоинт от чужих
GEMINI_IMAGE_MODEL нет gemini-3.1-flash-image Имя модели
PORT нет 3000 Обычно задаётся хостингом автоматически
S3_ENDPOINT нет Эндпоинт S3-совместимого хранилища (см. ниже)
S3_BUCKET нет Имя бакета
S3_ACCESS_KEY_ID нет Access key
S3_SECRET_ACCESS_KEY нет Secret key
S3_REGION нет auto Регион (для R2 оставить auto)
S3_PUBLIC_URL нет собирается из endpoint+bucket Публичный базовый URL для отдачи файлов
S3_FORCE_PATH_STYLE нет true Path-style URL (нужно для R2/MinIO)
PUBLIC_BASE_URL нет определяется автоматически Базовый URL сервиса — для ссылок локального фолбэка

Постоянное хранение изображений (важно!)

Каждый вызов generate_image/edit_image всегда сохраняет файл целиком, независимо от его веса и разрешения, и возвращает в ответе текстовую ссылку Image URL: .... Инлайн-превью в самом чате при этом появляется только если файл укладывается в безопасный лимит показа (~900 КБ) — но ссылка работает всегда, для файлов любого размера.

Есть два режима:

  1. Без настройки (по умолчанию). Файлы хранятся в памяти самого сервиса и отдаются по адресу /images/<id>.<ext>. Просто и без доп. шагов, но:

    • ссылки живут максимум 6 часов;
    • на бесплатном тарифе Render контейнер засыпает при простое и теряет память при перезапуске — старые ссылки после этого перестают открываться.
  2. С постоянным хранилищем (рекомендуется) — Cloudflare R2.

    1. Зайдите в Cloudflare Dashboard → R2 → Create bucket. Название, например gemini-images.
    2. В настройках бакета включите публичный доступ (Public Access → Allow Access), скопируйте выданный публичный URL (https://pub-xxxxxxxx.r2.dev) — это и есть S3_PUBLIC_URL.
    3. R2 → Manage API Tokens → Create API Token → права Object Read & Write на этот бакет. Скопируйте Access Key ID, Secret Access Key и Account ID.
    4. В переменных окружения хостинга (Render → ваш сервис → Environment) добавьте:
      S3_ENDPOINT=https://<ACCOUNT_ID>.r2.cloudflarestorage.com
      S3_BUCKET=gemini-images
      S3_ACCESS_KEY_ID=<access key>
      S3_SECRET_ACCESS_KEY=<secret key>
      S3_PUBLIC_URL=https://pub-xxxxxxxx.r2.dev
      
    5. Redeploy. В логах при старте должно появиться: Постоянное хранилище: S3-совместимое (https://<ACCOUNT_ID>.r2.cloudflarestorage.com).
    6. Готово — теперь ссылки на изображения не пропадают ни при засыпании сервиса, ни при редеплое, и работают для файлов любого веса и разрешения (1K/2K/4K).

    Вместо R2 подойдёт любое S3-совместимое хранилище (AWS S3, Backblaze B2, MinIO) — просто укажите соответствующие S3_ENDPOINT/регион.

Безопасность и стоимость

  • Секрет в URL — единственная защита. Держите ссылку приватной, не публикуйте её, не коммитьте в открытый репозиторий вместе со значением переменных окружения.
  • Каждый вызов generate_image/edit_image тратит квоту/деньги вашего Gemini-ключа — теоретически любой, кто узнает секретный URL, сможет им пользоваться. Если нужна более серьёзная защита (OAuth, ротация секрета, лимиты запросов) — можно усилить отдельно, дайте знать.
  • Хотите вообще не выставлять свой Gemini-ключ в интернет — тогда лучше вариант из первого архива (gemini-image-mcp.zip) под Claude Desktop: там сервер работает локально на вашей машине и никуда наружу не торчит.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选