Skip to main content
Glama

BananaBanana Image, Video & Speech Generation

Server Details

Generate images, video & speech with Nano Banana, Veo, Omni and Gemini TTS. Pay as you go.

Ownership verified
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

A4.6/5.0

Scored across 10 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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.

  1. 2 tool updates
    • Changedgenerate_image3 fields changed
      • changedInput schema / properties / model / default
        Previous value: -"nano-banana-2"New value: +"nano-banana-2-lite"
      • changedInput schema / properties / model / description
        Previous 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."
      • changedInput schema / properties / resolution / description
        Previous 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."
    • Addedtop_up
  2. 3 tool updates
    • Changededit_image1 field changed
      • addedInput schema / properties / relaxed_filter
        Added 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"
        +}
    • Changedgenerate_image1 field changed
      • addedInput schema / properties / relaxed_filter
        Added 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"
        +}
    • Changedgenerate_video1 field changed
      • addedInput schema / properties / relaxed_filter
        Added 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"
        +}
  3. 2 tool updates
    • Changedgenerate_image1 field changed
      • addedInput schema / properties / reference_images
        Added 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"
        +}
    • Changedgenerate_video2 fields changed
      • changedInput schema / properties / first_frame / description
        Previous 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."
      • changedInput schema / properties / reference_images / description
        Previous 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."
  4. 1 tool update
    • Addedgenerate_speech
  5. 2 tool updates
    • Changededit_video3 fields changed
      • removedInput schema / properties / duration / default
        Removed value: -8
      • changedInput schema / properties / duration / description
        Previous 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."
      • addedInput schema / properties / source_ref
        Added 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"
        +}
    • Changedgenerate_video3 fields changed
      • changedInput schema / properties / edit_from_generation_id / description
        Previous 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)."
      • addedInput schema / properties / first_frame
        Added 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"
        +}
      • addedInput schema / properties / reference_images
        Added 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"
        +}
  6. 2 tool updates
    • Changededit_video2 fields changed
      • addedInput schema / properties / duration
        Added 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"
        +}
      • changedInput schema / properties / video_url / description
        Previous 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."
    • Changedgenerate_video3 fields changed
      • changedInput schema / properties / duration / description
        Previous 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."
      • changedInput schema / properties / duration / enum
        Previous value: -[
        -  4,
        -  6,
        -  8
        -]New value: +[
        +  3,
        +  4,
        +  5,
        +  6,
        +  7,
        +  8,
        +  9,
        +  10
        +]
      • addedInput schema / properties / negative_prompt / description
        Added value: +"What to avoid. On omni-flash it is appended to the prompt as plain text (the model has no separate negative field)."
  7. 1 tool update
    • Addededit_video
  8. 7 tool updates
    • First observededit_image
    • First observedgenerate_image
    • First observedgenerate_video
    • First observedget_account
    • First observedget_result
    • First observedlist_generations
    • First observedlist_models

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.