Add it to Claude Code
claude mcp add -e "GEMINI_API_KEY=${GEMINI_API_KEY}" -e "QINIU_ACCESS_KEY=${QINIU_ACCESS_KEY}" -e "QINIU_SECRET_KEY=${QINIU_SECRET_KEY}" -e "QINIU_BUCKET=${QINIU_BUCKET}" -e "QINIU_CDN_DOMAIN=${QINIU_CDN_DOMAIN}" banana-image -- npx -y banana-image-mcpGEMINI_API_KEYQINIU_ACCESS_KEYQINIU_SECRET_KEYQINIU_BUCKETQINIU_CDN_DOMAINMake your agent remember this setup
banana-image's config, env vars, and the gotchas you hit — recalled in every future Claude Code, Cursor, and Codex session.
npx conare@latestFree · one command · indexes the sessions already on disk. Set up in the browser instead →
What it does
- Generates images from text prompts using Google Gemini AI
- Automatic conversion of images to WebP format with compression
- Direct upload to Qiniu Cloud storage with CDN support
- Supports date-prefixed filenames and custom upload paths
- Automatic cleanup of temporary files
Tools 3
generate_blog_coverGenerate a blog cover image (1792x1024), convert to WebP, and upload to Qiniu CDN.generate_imageGenerate an image using Gemini AI (original size), convert to WebP, and upload to Qiniu CDN.upload_imageUpload a local file or remote URL image to Qiniu CDN, with automatic WebP conversion.Environment Variables
GEMINI_API_KEYrequiredGoogle Gemini API key for image generationQINIU_ACCESS_KEYrequiredQiniu cloud access keyQINIU_SECRET_KEYrequiredQiniu cloud secret keyQINIU_BUCKETrequiredQiniu storage bucket nameQINIU_CDN_DOMAINrequiredCDN domain for generated image URLsTry it
Original README from xinpengfei520/banana-image-mcp
banana-image-mcp
An MCP (Model Context Protocol) server for image generation, processing, and CDN upload. Powered by Google Gemini AI, Sharp, and Qiniu Cloud.
Features
- Generate images from text prompts using Google Gemini AI
- Upload local or remote images to Qiniu CDN
- Automatic conversion to WebP format with compression
- Date-prefixed filenames with customizable upload paths
- Temporary files are cleaned up automatically
Quick Start
Using npx (recommended)
No installation needed — configure directly in your MCP client:
{
"mcpServers": {
"banana-image": {
"command": "npx",
"args": ["-y", "banana-image-mcp"],
"env": {
"GEMINI_API_KEY": "your-gemini-api-key",
"QINIU_ACCESS_KEY": "your-qiniu-access-key",
"QINIU_SECRET_KEY": "your-qiniu-secret-key",
"QINIU_BUCKET": "your-bucket-name",
"QINIU_CDN_DOMAIN": "https://your-cdn-domain.com"
}
}
}
}
Global installation
npm install -g banana-image-mcp
Then configure in your MCP client:
{
"mcpServers": {
"banana-image": {
"command": "banana-image-mcp",
"env": {
"GEMINI_API_KEY": "your-gemini-api-key",
"QINIU_ACCESS_KEY": "your-qiniu-access-key",
"QINIU_SECRET_KEY": "your-qiniu-secret-key",
"QINIU_BUCKET": "your-bucket-name",
"QINIU_CDN_DOMAIN": "https://your-cdn-domain.com"
}
}
}
}
Upgrade
# npx users: just clear the cache to get the latest version
npx clear-npx-cache && npx -y banana-image-mcp
# Global installation users
npm update -g banana-image-mcp
Configuration file location
- Claude Desktop (macOS):
~/Library/Application Support/Claude/claude_desktop_config.json - Claude Desktop (Windows):
%APPDATA%\Claude\claude_desktop_config.json
Environment Variables
| Variable | Description |
|---|---|
GEMINI_API_KEY |
Google Gemini API key for image generation |
QINIU_ACCESS_KEY |
Qiniu cloud access key |
QINIU_SECRET_KEY |
Qiniu cloud secret key |
QINIU_BUCKET |
Qiniu storage bucket name |
QINIU_CDN_DOMAIN |
CDN domain for generated image URLs |
Getting API Keys
Google Gemini API Key:
- Visit Google AI Studio
- Create or get an API key
Qiniu Cloud:
- Register at Qiniu Cloud
- Create a storage bucket
- Get AccessKey and SecretKey from your account settings
- Configure a CDN domain
Tools
`generate_blog_cover`
Generate a blog cover image (1792x1024), convert to WebP, and upload to Qiniu CDN.
| Parameter | Type | Required | Description |
|---|---|---|---|
prompt |
string | Yes | Text prompt describing the image to generate |
slug |
string | Yes | Slug identifier for the filename (prefixed with date) |
path |
string | No | Upload directory path (default: blog-cover) |
Returns:
{
"url": "https://your-cdn-domain.com/blog-cover/20260321-my-post.webp"
}
`generate_image`
Generate an image using Gemini AI (original size), convert to WebP, and upload to Qiniu CDN.
| Parameter | Type | Required | Description |
|---|---|---|---|
prompt |
string | Yes | Text prompt describing the image to generate |
slug |
string | Yes | Slug identifier for the filename (prefixed with date) |
path |
string | No | Upload directory path (default: aigc/image) |
Returns:
{
"url": "https://your-cdn-domain.com/aigc/image/20260321-my-image.webp"
}
`upload_image`
Upload a local file or remote URL image to Qiniu CDN, with automatic WebP conversion.
| Parameter | Type | Required | Description |
|---|---|---|---|
source |
string | Yes | Local file path or HTTP/HTTPS URL of the image |
slug |
string | Yes | Slug identifier for the filename (prefixed with date) |
path |
string | No | Upload directory path (default: images) |
Returns:
{
"url": "https://your-cdn-domain.com/images/20260321-my-photo.webp"
}
Architecture
prompt → Google Gemini API (PNG) → Sharp (WebP) → Qiniu CDN → URL
source (local/remote) ─────────→ Sharp (WebP) → Qiniu CDN → URL
- Image generation: Google Gemini 3.1 Flash Image Preview
- Image processing: Sharp (WebP conversion, optional resize)
- Cloud storage: Qiniu CDN
License
MIT