BananaBanana Image, Video & Speech Generation
Server Details
Generate images, video & speech with Nano Banana, Veo, Omni and Gemini TTS. Pay as you go.
- Status
- Unhealthy
- 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
Best Image and video generation: 20+ models (Kling, Seedance, Veo, NB, FLUX.2), OAuth, pay-per-use.
Generate text, images, speech, music, and video with any AI model, from one credit balance.
Image, video, audio, face-swap, talking avatars and chat across 300+ AI models, one balance.
Generate images, video, music, voice and 3D through one API. 30 tools, 200+ models.
Related MCP Servers
- 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.1624MIT
- AlicenseNot gradedqualityBmaintenanceGenerate AI images and videos from Claude, Cursor or any MCP client: 48+ models on one account (Flux 2, Nano Banana 2, Seedream 5, Kling V3, Seedance 2.5, Veo 3.1), with the exact cost in credits returned on every call.MIT
- AlicenseBqualityBmaintenanceExecution control layer for AI agents - Reserve, execute, burn/refund pattern for media generation162MIT
- AlicenseNot gradedqualityBmaintenanceGenerate and refine AI images/audio/video through natural conversation.407Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.