Nanobanana MCP Server vs Replicate MCP Server
A side-by-side look at the Nanobanana MCP Server and Replicate MCP Server MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Nanobanana MCP Server for multimedia process work as a local process; choose Replicate MCP Server for multimedia process as a local process. You can also run both side by side in one mcpServers block.
Which MCP server should you choose?
Choose Nanobanana MCP Server when
- You need dedicated capabilities in the Multimedia Process domain.
- You prefer a local stdio subprocess transport.
- You have the keys it needs:
GEMINI_API_KEY, NANOBANANA_AUTH_METHOD, GCP_PROJECT_ID, GCP_REGION. - You want tools like
generate_image, upload_file, show_output_stats.
Choose Replicate MCP Server when
- You need dedicated capabilities in the Multimedia Process domain.
- You prefer a local stdio subprocess transport.
- Its auth model fits you: API key required.
- You have the keys it needs:
REPLICATE_API_TOKEN. - You want tools like
replicate_generate_image, replicate_generate_video, replicate_generate_audio.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Multimedia Process | Multimedia Process |
| Quality signal | 63/100 · Good | 65/100 · Great |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | API key required |
| Pricing | Not declared | BYOK (pay the provider) |
| Required env vars | GEMINI_API_KEYNANOBANANA_AUTH_METHODGCP_PROJECT_IDGCP_REGION | REPLICATE_API_TOKEN |
| Verified owner | Community listing | Community listing |
| GitHub stars | 402 | 4 |
| Directory activity | 1 views 0 installs 0 upvotes | 4 views 0 installs 0 upvotes |
| Tools | 4 | 36 |
| Full listing | View Nanobanana MCP Server | View Replicate MCP Server |
Tools & capabilities
Nanobanana MCP Server tools 4
generate_imageGenerate new images or edit existing images using natural language instructions. Supports multiple input modes: 1. Pure generation: Just provide a prompt to create new images 2. Multi-image conditioning: Provide up to 3 input images using input_image_path_1/2/3 parameters 3. File ID editing: Edit previously uploaded images using Files API ID 4. File path editing: Edit local images by providing single input image path Automatically detects mode based on parameters or can be explicitly controlled. Input images are read from the local filesystem to avoid massive token usage. Returns both MCP image content blocks and structured JSON with metadata.upload_fileUpload a local file through the Gemini Files API and return its URI & metadata. Useful when the image is larger than 20MB or reused across prompts.show_output_statsShow statistics about the output directory and recently generated images.maintenancePerform maintenance operations following workflows.md patterns. Available operations: - cleanup_expired: Remove expired Files API entries from database - cleanup_local: Clean old local files based on age/LRU - check_quota: Check Files API storage usage vs. ~20GB budget - database_hygiene: Clean up database inconsistencies - full_cleanup: Run all cleanup operations in sequence
Replicate MCP Server tools 36
replicate_generate_imageGenerate one or more images from a text prompt using a Replicate image model. Use this for any "draw / create / generate an image of …" request. By default it uses Flux Schnell (fast, ~2 seconds per image). DISPLAY REQUIREMENT — after this tool returns successfully, you MUST embed the image inline in your reply by pasting ONE of the three embed blocks the tool prints verbatim (Option 1 iframe, Option 2 <img>, or Option 3 markdown — try them in that order; pick the first one your chat client renders). The iframe variant scales to the chat column width with the image's native aspect ratio; the <img> variant is a responsive fallback; markdown is the universal last resort. Place the chosen embed BEFORE any descriptive prose. Do NOT paraphrase the URL or omit the embed — the user wants the image to appear in the main chat flow, not only inside the collapsed tool widget. URLs expire in ~24h. Args: - prompt (string): Text description of the image to generate. - model (string, default "flux-schnell"): Either a curated key (flux-schnell, flux-dev, flux-pro, flux-2-max, sd-3.5-large, recraft-v3, recraft-v4.1, ideogram-v2, imagen-3, seedream) or a full Replicate identifier "owner/name[:version]". - aspect_ratio ("1:1" | "16:9" | "9:16" | "4:3" | "3:4" | "21:9" | "3:2" | "2:3", optional): Aspect ratio. Default 1:1. - num_outputs (1-4, optional): How many images to generate. - seed (integer, optional): Random seed for reproducible output. - extra_input (object, optional): Model-specific extra inputs (e.g. {guidance: 3.5, num_inference_steps: 28}). Use replicate_get_model_schema if unsure. - download (boolean, default true): Download files locally to ~/Downloads/replicate-mcp/. - timeout_ms (5000-1800000, optional): Max wait. Default 300000 (5min). Returns structuredContent matching PredictionResult: { "status": "starting" | "processing" | "succeeded" | "failed" | "canceled", "prediction_id": string, "model": string, "urls": string[], // Replicate URLs (expire ~24h) "local_paths": string[], // Absolute paths on disk when download=true "metrics": { "predict_time_seconds": number } | undefined, "error": string | undefined, "pending": boolean | undefined // true if timed out — poll via replicate_get_prediction } Examples: - "An origami fox in a misty forest" → uses flux-schnell, 1:1 - prompt="logo for a coffee shop called Crema", model="recraft-v3" → for text-in-image - prompt="cinematic shot of a lighthouse", model="flux-pro", aspect_ratio="21:9", seed=42 Error handling: - If REPLICATE_API_TOKEN is missing, returns an actionable error telling the user how to set it. - Invalid model IDs return Replicate's error message verbatim.replicate_generate_videoGenerate a video clip from a text prompt (and optionally a starting image). Video generation is slow — typically 1-5 minutes per clip. DISPLAY REQUIREMENT — after this tool returns successfully, include the URL(s) printed in the tool's text content so the user can open the video. URLs expire in ~24h. Args: - prompt (string): Text description of the video. - model (string, default "kling-pro"): Curated key (kling-pro, minimax-video, hunyuan-video, luma-ray, wan-2.2, grok-video, seedance) or "owner/name[:version]". - image_url (string, optional): Starting frame for image-to-video. Not all models support this. - duration_seconds (1-60, optional): Desired duration. Model-dependent. - aspect_ratio ("16:9" | "9:16" | "1:1", optional): Aspect ratio. - extra_input (object, optional): Additional model-specific inputs. - download (boolean, default true): Download the MP4 locally. - timeout_ms: Max wait. Default 300000 (5min). For very long videos, increase or rely on the pending+poll flow. Returns: PredictionResult (see replicate_generate_image for shape). The local_paths will contain .mp4 files when downloaded. Tip: If timeout_ms is exceeded, the result will have pending=true and a prediction_id. Wait a minute, then call replicate_get_prediction.replicate_generate_audioGenerate music, ambient audio, or full songs from a text prompt. DISPLAY REQUIREMENT — after this tool returns successfully, include the URL(s) printed in the tool's text content as a markdown link `[Audio](URL)` in your reply so the user can play it. URLs expire in ~24h. Models: - "musicgen" (default): Meta MusicGen. Instrumental music up to 30s. prompt → "prompt" field. - "ace-step": Full songs with lyrics. prompt → "tags" field (style/genre tags). Pass lyrics separately via extra_input.lyrics. ~3-4 minutes runtime. - "riffusion": Loop-friendly ambient/electronic. prompt → "prompt_a" field. No duration control. - "minimax-music": MiniMax Music 2.6. Full songs up to 6min. prompt=style description; pass lyrics via extra_input.lyrics. - "lyria-3-pro": Google Lyria 3 Pro. Full songs up to 3min WITH sung vocals. Put genre, mood, lyrics, and structure ([Verse]/[Chorus]) directly in the prompt. No duration — do NOT pass duration_seconds. Also "lyria-3" (30s clips) and "lyria-2" (48kHz instrumental). Args: - prompt (string): Description of the music. For ace-step this maps to the "tags" field (style tags like "rock, guitar, upbeat"). For riffusion this maps to "prompt_a". For lyria put genre/mood/lyrics/structure here. - model (string, default "musicgen"): Curated key (musicgen, ace-step, riffusion, minimax-music, lyria-3-pro, lyria-3, lyria-2) or "owner/name[:version]". - duration_seconds (1-300, optional): Duration in seconds. Supported by musicgen and ace-step. Ignored for riffusion and the lyria models (they have no duration parameter). - extra_input (object, optional): Additional inputs. Examples: {temperature: 1.0, top_k: 250} for MusicGen; {lyrics: "verse lyrics here"} for ace-step. - download (boolean, default true): Download as MP3/WAV. - timeout_ms: Default 300000 (5min). Returns: PredictionResult. local_paths contain audio files. Examples: - prompt="upbeat synthwave with driving bassline", duration_seconds=15 → musicgen - prompt="indie folk, acoustic guitar, female vocals", model="ace-step", extra_input={lyrics: "Leaving home on a rainy day..."} - prompt="ambient lo-fi chill", model="riffusion"replicate_generate_speechConvert text to natural-sounding speech. DISPLAY REQUIREMENT — after this tool returns successfully, include the URL printed in the tool's text content as a markdown link `[Speech](URL)` in your reply so the user can play it. URLs expire in ~24h. Args: - text (string, 1-5000): Text to synthesize. - model (string, default "kokoro"): Curated key (kokoro, minimax-speech, chatterbox, gemini-tts, grok-tts) or "owner/name[:version]". - voice (string, optional): Voice ID. For Kokoro: af_bella, af_sarah, am_adam, am_michael, bf_emma, bf_isabella, etc. (a-f = American female, b-f = British female, a-m = American male, b-m = British male). - speed (0.5-2.0, optional): Speech rate. - extra_input (object, optional): Model-specific extras (e.g. {audio_prompt: "<url>"} for voice cloning with Chatterbox). - download (boolean, default true). - timeout_ms: Default 300000. Returns: PredictionResult. local_paths contain WAV/MP3 files.replicate_chatRun a large language model hosted on Replicate. Use this for free-form text generation, Q&A, code writing, summarisation, translation — anything where the input is text and the output is text. Args: - prompt (string): User message. - model (string, default "llama-3-70b"): Curated key (llama-3.1-405b, llama-3-70b, llama-3-8b, mistral-7b, mixtral-8x7b, deepseek-r1) or "owner/name". - system_prompt (string, optional): Persona / instructions. - max_tokens (1-8192, optional): Generation limit. - temperature (0-2, optional): Sampling temperature. - extra_input (object, optional): Model-specific extras (top_p, top_k, frequency_penalty, etc.). - download (boolean, default false): No file outputs; leave false. - timeout_ms (5000-1800000, optional): Default 300000. Returns: PredictionResult with text_output[0] containing the model's reply (later entries are raw streamed segments if applicable). Examples: - prompt="Explain quantum entanglement in two sentences.", model="llama-3-70b" - prompt="Write a Python function to compute Levenshtein distance.", model="mistral-large", system_prompt="You are an expert software engineer."replicate_visionRun a vision-language model to describe, caption, or answer questions about an image. Args: - image (string URL): URL of the image to analyse. - prompt (string, optional): Question or instruction (e.g. "describe this image", "count the people"). Default is a generic caption. - model (string, default "llava-13b"): Curated key (llava-13b, llava-v1.6-34b, blip-2, qwen-vl) or "owner/name". - max_tokens (1-4096, optional): Response length. - extra_input (object, optional): Model-specific extras. Returns: PredictionResult with text_output containing the model's textual answer. Examples: - image="https://example.com/photo.jpg", prompt="What objects are visible?" - image="<chart-url>", prompt="Read the values off this chart and list them.", model="llava-v1.6-34b"replicate_upscale_imageUpscale an image to higher resolution. Optional face restoration for photos. DISPLAY REQUIREMENT — after this tool returns successfully, embed the upscaled image inline using one of the three blocks (iframe / <img> / markdown) printed by the tool. Place it BEFORE descriptive prose. URLs expire ~24h. Args: - image (string URL): URL of the source image. - model (string, default "real-esrgan"): Curated key (real-esrgan, clarity-upscaler, swinir, gfpgan) or "owner/name". - scale (1-10, optional): Upscale factor. Default 4 for real-esrgan; 2 for gfpgan; 2 for clarity-upscaler. - extra_input (object, optional): Model-specific extras (e.g. {face_enhance: true} for real-esrgan). - download (boolean, default true): Download upscaled file locally. Returns: PredictionResult with urls + local_paths to the upscaled image. Examples: - image="<low-res-photo>", scale=4 → real-esrgan - image="<face-photo>", model="gfpgan", scale=2 → restoration - image="<artwork>", model="clarity-upscaler", scale=2replicate_remove_backgroundProduce a transparent-background version (PNG) of an image. DISPLAY REQUIREMENT — after this tool returns successfully, embed the cut-out image inline using one of the three blocks (iframe / <img> / markdown) printed by the tool. Args: - image (string URL): URL of the source image. - model (string, default "rembg"): Curated key (rembg, birefnet, briaai-rmbg) or "owner/name". - extra_input (object, optional): Model-specific extras. - download (boolean, default true): Download the cut-out PNG locally. Returns: PredictionResult with urls + local_paths to a transparent PNG. Examples: - image="<product-photo>" → rembg quick cut - image="<portrait>", model="birefnet" → sharper edge for hairreplicate_transcribe_audioTranscribe an audio or video file to text using Whisper-family models on Replicate. Args: - audio (URL): URL of the audio (or video) to transcribe. - model (default "incredibly-fast-whisper"): Curated key (whisper, incredibly-fast-whisper, whisperx, scribe) or "owner/name". - language (string, optional): ISO-639 hint (e.g. "en", "it"). Default: auto-detect. - translate_to_english (bool, optional): Translate the transcript to English instead of preserving source language. - extra_input (object, optional): Model-specific extras (e.g. {batch_size: 24} for incredibly-fast-whisper). Returns: PredictionResult with text_output containing the transcript.replicate_inpaintFill masked regions of an image based on a text prompt. Works for both inpainting (replace inside) and outpainting (extend canvas) when the mask covers the target area. DISPLAY REQUIREMENT — embed the result inline using one of the three blocks (iframe / <img> / markdown) printed by the tool. Args: - image (URL): Source image. - mask (URL): Mask image. White = keep, black/transparent = repaint. - prompt: Describes what should appear in the masked region. - model (default "flux-fill-pro"): Curated (flux-fill-pro, sd-inpaint, ideogram-v2-edit) or "owner/name". - extra_input (object, optional): Model-specific extras (e.g. {guidance: 30} for flux-fill-pro).replicate_segmentProduce a segmentation mask of an image. Use SAM 2 for point/box-prompt masks (auto-mask everything when no prompt given) or Grounded-SAM for text-prompt masking like "the red car". DISPLAY REQUIREMENT — embed the mask result inline using one of the three blocks printed by the tool. Args: - image (URL): Source image. - prompt (string, optional): Text prompt for grounded segmentation. Required for grounded-sam. - model (default "sam-2"): Curated (sam-2, grounded-sam) or "owner/name". - extra_input (object, optional): SAM-specific tuning (e.g. {points_per_side: 32}).replicate_embed_textConvert text(s) into numeric embedding vectors. Useful for RAG, semantic search, clustering, similarity scoring. Args: - texts: A single string or an array of strings (max 256). Each text is embedded independently. - model (default "bge-large"): Curated (bge-large, jina-embeddings-v3, all-minilm) or "owner/name". - extra_input (object, optional): Model-specific extras (e.g. {task: "retrieval.query"} for jina v3). Returns: PredictionResult — the embedding vectors are in structuredContent.output (model-specific shape).- +24 more on the listing page
Ready-to-paste client configs
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
Nanobanana MCP Server
{
"mcpServers": {
"nanobanana-mcp-server": {
"command": "uvx",
"args": [
"nanobanana-mcp-server@latest"
],
"env": {
"GEMINI_API_KEY": "YOUR_GEMINI_API_KEY_HERE",
"NANOBANANA_AUTH_METHOD": "YOUR_NANOBANANA_AUTH_METHOD_HERE",
"GCP_PROJECT_ID": "YOUR_GCP_PROJECT_ID_HERE",
"GCP_REGION": "YOUR_GCP_REGION_HERE"
}
}
}
}
Replicate MCP Server
{
"mcpServers": {
"replicate-mcp-server": {
"command": "npx",
"args": [
"-y",
"replicate-mcp-server"
],
"env": {
"REPLICATE_API_TOKEN": "YOUR_REPLICATE_API_TOKEN_HERE"
}
}
}
}
Frequently asked questions
Nanobanana MCP Server is categorized under Multimedia Process and uses a local stdio subprocess. Replicate MCP Server belongs to Multimedia Process and uses a local stdio subprocess. Pick Nanobanana MCP Server for multimedia process work and Replicate MCP Server for multimedia process.
Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.
Nanobanana MCP Server has no declared pricing — check the project's own site. Replicate MCP Server is bring-your-own-key: usage is billed by the API provider you supply a key for. Auth: api key required. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.
Yes. MCP clients support multiple servers: add nanobanana-mcp-server and replicate-mcp-server as separate keys in the same mcpServers object, and your assistant will call tools from either one.
On AllMCPs, Nanobanana MCP Server has a quality signal of 63/100 (Good) with 1 views, 0 installs and 402 GitHub stars. Replicate MCP Server has 65/100 (Great) with 4 views, 0 installs and 4 GitHub stars.