BananaBanana Image, Video & Speech Generation
Server Details
Images, video & speech: Nano Banana, GPT Image, Veo, Omni, Wan, Grok, Gemini TTS. Crypto or card.
Glama couldn't complete the latest health check. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- Uptime
- 3.4% over 47 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- bananabanana-pro-mcp/bananabanana-mcp
- GitHub Stars
- 2
- Server Listing
- BananaBanana MCP Server
TDQS
Scored across 10 tools
Each tool targets a distinct resource and action: generate/edit for each media type, plus account/result/model/generation utilities. No two tools overlap in purpose; even edit_video vs generate_video are clearly differentiated by source requirement.
All tools follow a consistent verb_noun snake_case pattern: generate_*, edit_*, get_*, list_*, top_up. The pattern is predictable across the entire surface, with no mixed conventions or vague verbs.
10 tools is well-scoped for a media generation server: three generation tools, two editing tools, and the supporting utility tools (account, result, listing, models, top-up) each earn their place. Not bloated or thin.
The surface covers the full lifecycle for image/video/speech generation and editing (where applicable), plus account management, cost checking, and job polling. There are no obvious dead ends; the only minor absence (e.g., job cancellation) is easily worked around and not essential.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
generate_image3 fields changed- changed
Input schema / properties / model / defaultPrevious value: -"nano-banana-2"New value: +"nano-banana-2-lite" - changed
Input schema / properties / model / descriptionPrevious value: -"nano-banana-2-lite: cheapest, 1K only. nano-banana-2: balanced default. nano-banana-pro: top quality, up to 4K."New value: +"nano-banana-2-lite: cheapest default, 1024 only. nano-banana-2: choose for 512, 2048 or 4096 output. nano-banana-pro: top quality, up to 4K." - changed
Input schema / properties / resolution / descriptionPrevious value: -"512 only on nano-banana-2; 1024 only on lite; 4096 costs the most."New value: +"Lite requires 1024. Choose nano-banana-2 for 512, 2048 or 4096; 4096 costs the most."
- Added
top_up
3 tool updates
- Changed
edit_image1 field changed- added
Input schema / properties / relaxed_filterAdded value: +{ + "default": false, + "description": "Switch this call to Google's own permissive presets: safety thresholds OFF and person generation allowed for adults (safetySettings and personGeneration=ALLOW_ADULT — documented Vertex AI parameters, not a way around Google's rules). Google filters in two independent stages and this flag only affects the first: (1) a check on the request before anything is rendered — this is what refuses legitimate prompts about real-looking people, swimwear or sportswear, medical and anatomical subjects, mild fictional violence and edgy artwork (upstream_reason SAFETY_BLOCK), and it is the stage relaxed_filter relaxes; (2) a classifier that scores the finished image, which no parameter can switch off (upstream_reason IMAGE_SAFETY). Stage 2 judges the actual pixels and every run renders a different image, so a borderline but legitimate subject rejected there often passes on a plain retry or with slightly less ambiguous wording — retrying is reasonable (failures are fully refunded, so an attempt costs only time), just don't expect the flag itself to bypass that stage. What Google refuses outright — sexual content, minors, real public figures — stays blocked in every attempt. Both stages surface as error_code SAFETY_FILTERED; upstream_reason in get_result tells them apart.", + "type": "boolean" +}
- Changed
generate_image1 field changed- added
Input schema / properties / relaxed_filterAdded value: +{ + "default": false, + "description": "Switch this call to Google's own permissive presets: safety thresholds OFF and person generation allowed for adults (safetySettings and personGeneration=ALLOW_ADULT — documented Vertex AI parameters, not a way around Google's rules). Google filters in two independent stages and this flag only affects the first: (1) a check on the request before anything is rendered — this is what refuses legitimate prompts about real-looking people, swimwear or sportswear, medical and anatomical subjects, mild fictional violence and edgy artwork (upstream_reason SAFETY_BLOCK), and it is the stage relaxed_filter relaxes; (2) a classifier that scores the finished image, which no parameter can switch off (upstream_reason IMAGE_SAFETY). Stage 2 judges the actual pixels and every run renders a different image, so a borderline but legitimate subject rejected there often passes on a plain retry or with slightly less ambiguous wording — retrying is reasonable (failures are fully refunded, so an attempt costs only time), just don't expect the flag itself to bypass that stage. What Google refuses outright — sexual content, minors, real public figures — stays blocked in every attempt. Both stages surface as error_code SAFETY_FILTERED; upstream_reason in get_result tells them apart.", + "type": "boolean" +}
- Changed
generate_video1 field changed- added
Input schema / properties / relaxed_filterAdded value: +{ + "default": false, + "description": "Veo only (omni-flash ignores it), and much weaker than its image counterpart: Google's video API exposes no configurable safety settings at all, so this flag can do only one thing — pin personGeneration=allow_adult, which is already the default for Veo 3.1 here. Expect it to change little. Video is filtered both before generation and again on the finished clip (rai_media_filtered_reasons), and neither check can be turned off. When a clip is refused, the levers that actually work are: retry (each run renders different footage, and failures are fully refunded), reword the people-related part of the prompt, or move an omni-flash idea to veo-3.1-fast, whose filter is noticeably looser.", + "type": "boolean" +}
2 tool updates
- Changed
generate_image1 field changed- added
Input schema / properties / reference_imagesAdded value: +{ + "description": "Actual visual references for the generated image. Each item is a job_id of a completed image generation on this account, a public http(s) image URL, or an inline data:image/png|jpeg|webp;base64,... URL (max 10 MB each). For a local file, read and base64-encode its bytes into a data URL; a bare local path such as C:\\\\photo.jpg cannot be read by this remote server.", + "items": { + "type": "string" + }, + "maxItems": 14, + "type": "array" +}
- Changed
generate_video2 fields changed- changed
Input schema / properties / first_frame / descriptionPrevious value: -"Start the clip from a still image, which is then animated. Either a job_id of a completed image generation on this account (see list_generations) or a public http(s) image URL — including a signed url returned by get_result, which is how you pick one variant of a multi-image generation. On omni-flash it can be combined with reference_images; on Veo it cannot."New value: +"Start the clip from a still image, which is then animated. Either a job_id of a completed image generation on this account (see list_generations), a public http(s) image URL, or an inline data:image/png|jpeg|webp;base64,... URL for a local file (max 10 MB; a bare local filesystem path cannot be read by this remote server). This includes a signed URL returned by get_result, which is how you pick one variant of a multi-image generation. On omni-flash it can be combined with reference_images; on Veo it cannot." - changed
Input schema / properties / reference_images / descriptionPrevious value: -"Reference images that keep a subject, character or style consistent (they are NOT used as literal frames). Each item is a job_id of a completed image generation on this account or a public http(s) image URL. omni-flash: up to 10 images in total together with first_frame. Veo: at most 3, only with duration 8 and without first_frame."New value: +"Reference images that keep a subject, character or style consistent (they are NOT used as literal frames). Each item is a job_id of a completed image generation on this account, a public http(s) image URL, or an inline data:image/png|jpeg|webp;base64,... URL. For a local file, pass a base64 data URL rather than its filesystem path. omni-flash: up to 10 images in total together with first_frame. Veo: at most 3, only with duration 8 and without first_frame."
1 tool update
- Added
generate_speech
2 tool updates
- Changed
edit_video3 fields changed- removed
Input schema / properties / duration / defaultRemoved value: -8 - changed
Input schema / properties / duration / descriptionPrevious value: -"Length of the edited clip in seconds ($0.10/s)."New value: +"Optional: trim the source to the first N seconds and edit only that part ($0.10/s). Values above the source length are ignored — the clip cannot be made longer." - added
Input schema / properties / source_refAdded value: +{ + "description": "Returned by the quote when video_url is used: pass it back with confirm_cost to reuse the already downloaded clip instead of downloading it again.", + "type": "string" +}
- Changed
generate_video3 fields changed- changed
Input schema / properties / edit_from_generation_id / descriptionPrevious value: -"omni-flash only: job_id of a completed omni video to refine conversationally; prompt describes the changes."New value: +"omni-flash only: job_id of a completed omni video to refine conversationally; prompt describes the changes. Duration, aspect ratio and the scene are inherited from that clip — duration is ignored here (use edit_video to shorten a clip)." - added
Input schema / properties / first_frameAdded value: +{ + "description": "Start the clip from a still image, which is then animated. Either a job_id of a completed image generation on this account (see list_generations) or a public http(s) image URL — including a signed url returned by get_result, which is how you pick one variant of a multi-image generation. On omni-flash it can be combined with reference_images; on Veo it cannot.", + "type": "string" +} - added
Input schema / properties / reference_imagesAdded value: +{ + "description": "Reference images that keep a subject, character or style consistent (they are NOT used as literal frames). Each item is a job_id of a completed image generation on this account or a public http(s) image URL. omni-flash: up to 10 images in total together with first_frame. Veo: at most 3, only with duration 8 and without first_frame.", + "items": { + "type": "string" + }, + "maxItems": 10, + "type": "array" +}
2 tool updates
- Changed
edit_video2 fields changed- added
Input schema / properties / durationAdded value: +{ + "default": 8, + "description": "Length of the edited clip in seconds ($0.10/s).", + "enum": [ + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "type": "integer" +} - changed
Input schema / properties / video_url / descriptionPrevious value: -"Public http(s) URL of the source video (mp4/mov/webm/mkv, max 200 MB). Use instead of source_generation_id."New value: +"Public http(s) URL of the source video (mp4/mov/webm/mkv/avi/wmv/flv/3gpp, max 200 MB). Use instead of source_generation_id."
- Changed
generate_video3 fields changed- changed
Input schema / properties / duration / descriptionPrevious value: -"Seconds. Ignored by omni-flash (the model picks 3–10 s itself)."New value: +"Clip length in seconds. Veo accepts only 4, 6 or 8; omni-flash accepts any value from 3 to 10." - changed
Input schema / properties / duration / enumPrevious value: -[ - 4, - 6, - 8 -]New value: +[ + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 +] - added
Input schema / properties / negative_prompt / descriptionAdded value: +"What to avoid. On omni-flash it is appended to the prompt as plain text (the model has no separate negative field)."
1 tool update
- Added
edit_video
7 tool updates
- First observed
edit_image - First observed
generate_image - First observed
generate_video - First observed
get_account - First observed
get_result - First observed
list_generations - First observed
list_models
Related MCP Connectors
AI video, images, music & SFX: Seedance 2.5, Veo 3.1, Kling 3.0, Nano Banana Pro, 20+ models.
Image, video, audio, face-swap, talking avatars and chat across 300+ AI models, one balance.
247 LLMs + image/video/voice/music gen + crypto/DeFi/markets/web-search. Pay-per-call USDC, no key.
Generate AI images, video, voiceovers and music from Claude, ChatGPT or Cursor through 50+ models (Veo 3.1, Kling 3, Seedance, Nano Banana, GPT Image, ElevenLabs). Also image editing, upscaling, background removal, face swap, transcription, voice cloning and UGC-style video ads. Sign in with OAuth — no API key to paste. Tools are annotated (read-only vs. credit-spending); failed generations are refunded.
Related MCP Servers
- AlicenseAqualityCmaintenanceAI image and video generation, editing, and region repair via Gemini, OpenAI, and Grok1170 npm5MIT
- AlicenseNot gradedqualityFmaintenanceEnables AI-powered image generation and editing with Nano Banana, plus professional video creation with Veo3, all through Kie.ai's APIs. Includes task tracking, status monitoring, and 1080p video upgrades.34 npm24MIT
- AlicenseAqualityBmaintenanceUnified MCP server for Gemini media generation --Nano Banana (images), Veo 3.1 (video), TTS, and Lyria 3 (music). Single Go binary, 12 tools, supports Gemini API key and Vertex AI.129Apache 2.0
- AlicenseAqualityFmaintenanceEnables AI assistants to generate images from text prompts and transform existing images using Google Gemini's nano banana model through the Nanana AI service. Supports both text-to-image generation and image-to-image transformation capabilities.2139 npm10MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.