Gemini Media
MCPB · GEMINI-MEDIA-MCP-1.1.0.MCPB · 2 COMPONENTS
Generate images (Nano Banana), video (Veo, Gemini Omni), speech and music (Lyria) with Google models
Available components
Last scanned (11 hours ago)
Scores higher than 84% of MCPB servers
Category Design and Media
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to mordor-forge/gemini-media-mcp). View diagnostics → Pass
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 5 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability58
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 4333 tokens (~309/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage99
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 98% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 14 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Unverified: 2 categories
Categories scored 0 because we could not verify them: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 14 Oct 26 +29
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- First check of Schema quality: fail functional
- First check of Destructive annotations: pass functional
- First check of Schema quality: fail functional
- First check of Tool coverage: 98 functional
- First check of Schema quality: good functional
- First check of Tool coverage: 100 functional
- 12 Oct 26 0
- Package version: 1.0.0 → 1.1.0 functional
- 10 Oct 26 19
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 18 Oct 2026 · Analysed mcpb/https://github.com/mordor-forge/gemini-media-mcp/releases/download/v1.1.0/gemini-media-mcp-1.1.0.mcpb@1.1.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | mcpb |
| Reason | Verified |
| Discovered via | GitHub artifact attestations |
| Source repo | mordor-forge/gemini-media-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/mordor-forge/gemini-media-mcp/.github/workflows/release.yml@refs/tags/v1.1.0 |
| Rekor log index | 3231456756 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha256:a23aac14b81d76f8bc3dd1b18867a7c8d206908143716a4e1073928f2eea8c0f |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
edit_image Edit image ~305
Change an existing image with an instruction (add/remove/replace elements, restyle, relight, change aspect ratio, fix text) while keeping everything else. Accepts extra reference images to insert or match. Say what must stay unchanged. Saves a new file; the original is kept.
| Name | Type | Req | Description |
|---|---|---|---|
| approvedCostUsd | number | – | Only needed above the confirmation threshold: the cost in USD the user approved. |
| aspectRatio | string | – | Change the aspect ratio (outpainting). Omit to keep the source ratio. |
| image | string | yes | The image to edit: file path, gemini-media:// URI from an earlier result, or data: URI. |
| imageSize | string | – | Output size: 1K, 2K or 4K (512 only on the deprecated gemini-3.1-flash-image). |
| model | string | – | Model ID or alias. Defaults to the model that created the source image, else nb2. |
| outputName | string | – | Optional base file name for the saved file. Defaults to the source name plus -edit. |
| prompt | string | yes | The change to make, stated specifically, plus what must stay the same (e.g. 'Replace the sky with a sunset; keep the people, framing and lighting on faces unchanged'). |
| referenceImages | null|array | – | Optional extra images to pull elements or style from (e.g. 'put the logo from image 2 on the mug'). |
| Name | Type | Req | Description |
|---|---|---|---|
| cost | object | yes | – |
| files | null|array | yes | – |
| grounding | null|object | – | Google Search queries the model ran and the pages it used (googleSearch only) |
| model | string | yes | – |
| text | string | – | Commentary the model returned alongside the image(s) |
| warnings | null|array | – | – |
No examples provided.
edit_video Edit video ~381
Change an existing clip with an instruction (add, remove or replace objects, restyle, relight, change the background) with Gemini Omni Flash, keeping everything else. Pass the jobId of a finished clip (Omni clips are edited in conversation) or a video file of at most 10 s. Asynchronous like generate_video; about $0.10 per second of video at 720p.
| Name | Type | Req | Description |
|---|---|---|---|
| approvedCostUsd | number | – | Only needed above the confirmation threshold: the cost in USD the user approved. |
| jobId | string | – | A completed video job to edit. Omni clips are edited in conversation (Google keeps the context); other clips are sent as their saved file. Pass jobId or video. |
| model | string | – | Model ID or alias; default omni (the only model that edits videos). |
| outputName | string | – | Optional base file name for the saved video. Defaults to the source name plus -edit. |
| prompt | string | yes | The change, stated simply, ending with 'Keep everything else the same.' (e.g. 'Make the phone invisible. Keep everything else the same.') |
| referenceImages | null|array | – | Optional images to bring into the clip; refer to them as <IMAGE_REF_0>, <IMAGE_REF_1>... in the prompt. |
| resolution | string | – | 360p, 720p (default), 1080p or 4k (1080p and 4k are upscaled). |
| video | string | – | Or a video file to edit: file path, gemini-media:// URI or data: URI. At most 10 seconds and 20 MB. |
| waitSeconds | integer | – | Block up to this many seconds for the result (default 0 = return a job handle immediately). Keep under your client's tool timeout. |
| Name | Type | Req | Description |
|---|---|---|---|
| cost | object | yes | – |
| elapsedSeconds | integer | yes | – |
| error | string | – | – |
| files | null|array | – | – |
| jobId | string | yes | Opaque handle; pass it to get_video, extend_video or edit_video |
| model | string | yes | – |
| next | string | – | Suggested next step |
| remoteExpiresAt | null|string | – | When Google deletes the server-side copy; extend before this time |
| state | string | yes | working, completed, failed or filtered |
| warnings | null|array | – | – |
No examples provided.
estimate_cost Estimate cost ~232
Estimate the cost of an image, video, speech or music request before running it, optionally comparing all models; also reports remaining budget and whether approval is needed.
| Name | Type | Req | Description |
|---|---|---|---|
| compare | boolean | – | Also estimate the same request on every other active model of this media type |
| count | integer | – | Number of images/clips/songs (default 1) |
| durationSeconds | integer | – | Video: clip length (default 8) |
| generateAudio | null|boolean | – | Video on Vertex AI: false for the cheaper silent rate |
| imageSize | string | – | Images: 512, 1K, 2K or 4K |
| inputImages | integer | – | Images: number of reference/source images |
| mediaType | string | yes | image, video, speech or music |
| model | string | – | Model ID or alias (default model when omitted) |
| resolution | string | – | Video: 720p, 1080p or 4k (Omni also 360p) |
| text | string | – | Speech: the text to be spoken (length drives cost) |
| Name | Type | Req | Description |
|---|---|---|---|
| alternatives | null|array | – | – |
| budgetRemaining | object | – | – |
| estimate | object | yes | – |
| model | string | yes | – |
| needsApproval | boolean | yes | True when the call would exceed the confirmation threshold and needs approvedCostUsd |
| note | string | yes | – |
| warnings | null|array | – | Lifecycle notices (deprecation, shutdown, replacement) and budget problems |
| wouldExceedBudget | boolean | – | True when a budget would refuse this call right now (see warnings) |
No examples provided.
extend_video Extend video ~198
Continue a completed clip from its end: omni adds up to 10 s (40 s total, keeping characters and audio coherent); Veo fast/standard add about 7 s (720p, up to 148 s, within 2 days). Asynchronous like generate_video.
| Name | Type | Req | Description |
|---|---|---|---|
| approvedCostUsd | number | – | Only needed above the confirmation threshold. |
| jobId | string | yes | Job handle of a completed generate_video or extend_video call (operation names from older versions also work). |
| negativePrompt | string | – | – |
| outputName | string | – | – |
| prompt | string | yes | What happens next. Veo adds about 7 seconds (720p) from the last second; omni adds up to 10 seconds using the last 10 seconds as context. |
| seed | null|integer | – | Vertex AI only. |
| waitSeconds | integer | – | Block up to this many seconds for the result (default 0). |
| Name | Type | Req | Description |
|---|---|---|---|
| cost | object | yes | – |
| elapsedSeconds | integer | yes | – |
| error | string | – | – |
| files | null|array | – | – |
| jobId | string | yes | Opaque handle; pass it to get_video, extend_video or edit_video |
| model | string | yes | – |
| next | string | – | Suggested next step |
| remoteExpiresAt | null|string | – | When Google deletes the server-side copy; extend before this time |
| state | string | yes | working, completed, failed or filtered |
| warnings | null|array | – | – |
No examples provided.
generate_image Generate image ~480
Create images from a text prompt, optionally guided by up to 14 reference images (subjects, products, style). Default model nb2 (Nano Banana 2.1, ~$0.04 per 1K image); pro for the densest scenes and final renders (~$0.15); nb2-lite for bulk drafts. Returns saved files with URIs you can pass to edit_image, generate_video (image) or other tools.
| Name | Type | Req | Description |
|---|---|---|---|
| approvedCostUsd | number | – | Only needed when a call exceeds the configured confirmation threshold: the cost in USD the user approved. |
| aspectRatio | string | – | e.g. 1:1, 3:2, 2:3, 4:3, 3:4, 4:5, 16:9, 9:16, 21:9 (nb2 also 1:4, 4:1, 1:8, 8:1). Defaults to 1:1 when there are no reference images; with them the model usually follows the first image's ratio. |
| count | integer | – | Number of variations to generate in parallel (1-4, default 1). Each is billed. |
| googleSearch | boolean | – | Ground the image in Google Search results (current events, real places, data for infographics). |
| imageSize | string | – | Output size: 1K (default), 2K or 4K. Larger costs more. 512 only on the deprecated gemini-3.1-flash-image. |
| model | string | – | Model ID or alias. nb2 (default: Nano Banana 2.1, fast and cheap), pro (Nano Banana Pro, highest fidelity for dense scenes), nb2-lite (cheapest inputs). See list_models. |
| outputName | string | – | Optional base file name (without extension) for the saved file(s). |
| prompt | string | yes | What to create. Describe subject, setting, composition, lighting and style in full sentences. Put any exact text to render in quotes. |
| referenceImages | null|array | – | Optional images to guide the result (subjects, products, characters, style): file paths, gemini-media:// URIs from earlier results, or data: URIs. Up to 14 for nb2/pro. |
| Name | Type | Req | Description |
|---|---|---|---|
| cost | object | yes | – |
| files | null|array | yes | – |
| grounding | null|object | – | Google Search queries the model ran and the pages it used (googleSearch only) |
| model | string | yes | – |
| text | string | – | Commentary the model returned alongside the image(s) |
| warnings | null|array | – | – |
No examples provided.
generate_music Generate music ~305
Compose music with Lyria: 30-second clips (clip, $0.04) or full songs of a few minutes with vocals and lyrics (full, $0.08). Control genre, mood, instruments, tempo and structure in the prompt; returns lyrics/structure text when available.
| Name | Type | Req | Description |
|---|---|---|---|
| approvedCostUsd | number | – | Only needed above the confirmation threshold. |
| bpm | integer | – | Optional tempo hint in beats per minute. |
| durationSeconds | integer | – | Optional target length hint for full songs (clip is always 30s). |
| format | string | – | mp3 (default) or wav (full model only). |
| images | null|array | – | Optional images (up to 10) whose mood or scene should inspire the music. |
| instrumental | boolean | – | Ask for no vocals. |
| lyrics | string | – | Optional lyrics with section tags; they are sung in the language they are written in. |
| model | string | – | clip (default: 30-second MP3, cheapest) or full (complete song up to about 3 minutes, vocals, WAV option). See list_models. |
| outputName | string | – | Optional base file name. |
| prompt | string | yes | Describe the music: genre, mood, instruments, tempo, key, production style and song structure. Use [Intro]/[Verse]/[Chorus]/[Bridge]/[Outro] tags or [0:00-0:15] timestamps to control sections. |
| Name | Type | Req | Description |
|---|---|---|---|
| cost | object | yes | – |
| durationSeconds | number | – | – |
| file | object | yes | – |
| lyrics | string | – | Lyrics or song structure returned by the model |
| model | string | yes | – |
| warnings | null|array | – | – |
No examples provided.
generate_speech Generate speech ~354
Turn text into natural speech (WAV) with one voice, or a dialogue between two speakers. Control delivery with style. About $0.01-0.02 per minute of audio. For podcasts, voiceovers, narration and dialogue.
| Name | Type | Req | Description |
|---|---|---|---|
| approvedCostUsd | number | – | Only needed above the confirmation threshold. |
| dialogue | null|array | – | Alternative to text: a conversation between up to 2 named speakers, one entry per line. |
| format | string | – | wav (default) or pcm (raw 16-bit little-endian). |
| languageCode | string | – | Optional BCP-47 code (e.g. en-US, it-IT). Usually auto-detected from the text. |
| model | string | – | Model ID or alias: tts (default, Gemini 3.8 Flash TTS), tts-lite (cheaper). See list_models. |
| outputName | string | – | Optional base file name. |
| speakers | null|array | – | Voice per dialogue speaker; unlisted speakers get distinct defaults. |
| style | string | – | How to deliver the lines, e.g. 'warm and enthusiastic', 'whispered urgently', 'slow, calm narrator'. |
| text | string | – | The exact words to speak (single speaker). Newer models read it verbatim, so put delivery directions in style, not here. Inline tags like <sigh> or <short pause> are allowed. |
| voice | string | – | Voice for single-speaker text, e.g. Kore (firm), Puck (upbeat), Charon (informative), Aoede (breezy, default), Zephyr (bright). list_models shows all 30. |
| Name | Type | Req | Description |
|---|---|---|---|
| cost | object | yes | – |
| durationSeconds | number | – | – |
| file | object | yes | – |
| model | string | yes | – |
| voices | object | yes | – |
| warnings | null|array | – | – |
No examples provided.
generate_video Generate video ~660
Start a video clip with native audio from a text prompt, optionally from a first frame, first+last frames, or reference images. Default omni (Gemini Omni Flash: 3-10s, cheap 360p drafts up to 4K, up to 10 references). On Vertex AI the default is Veo lite; fast/standard add Veo 4K and ingredients. Veo is leaving the Gemini API (list_models has the date). estimate_cost prices any option. Asynchronous: returns a jobId; then call get_video.
| Name | Type | Req | Description |
|---|---|---|---|
| approvedCostUsd | number | – | Only needed above the confirmation threshold: the cost in USD the user approved. |
| aspectRatio | string | – | 16:9 (default) or 9:16 |
| durationSeconds | integer | – | Clip length: Veo 4, 6 or 8 seconds; omni 3-10 seconds (default 8). |
| generateAudio | null|boolean | – | Vertex AI only: set false for silent video at a lower price. The Gemini API always generates audio. |
| image | string | – | Optional first frame (image-to-video): file path, gemini-media:// URI or data: URI. |
| lastFrame | string | – | Optional last frame; requires image. Veo interpolates between the two. |
| model | string | – | Model ID or alias: omni (default on the Gemini API: Gemini Omni Flash, best prompt adherence, editable and extendable to 40 s), lite (cheapest Veo; the default on Vertex AI), fast (Veo 4K, ingredient… |
| negativePrompt | string | – | What to avoid, as plain nouns (e.g. 'text overlays, blur'). For omni it is appended to the prompt. |
| outputName | string | – | Optional base file name for the saved video. |
| personGeneration | string | – | allow_all, allow_adult or dont_allow. The Gemini API requires allow_all for text-to-video and allow_adult for image-based modes. |
| prompt | string | yes | What happens in the clip: subject and action, camera movement, setting, lighting, style, and sound (dialogue in quotes, sound effects, ambience, music). |
| referenceImages | null|array | – | Images of characters, objects, products or styles to keep consistent: Veo fast/standard up to 3 (forces 8s, not with image/lastFrame); omni up to 10 including frames (name them <IMAGE_REF_0>... in th… |
| resolution | string | – | 720p (default), 1080p or 4k (not lite); omni also 360p for fast drafts. Veo 1080p and 4k require 8-second clips. |
| seed | null|integer | – | Seed for more repeatable results (Vertex AI only; ignored on the Gemini API). |
| waitSeconds | integer | – | Block up to this many seconds for the result (default 0 = return a job handle immediately). Keep under your client's tool timeout. |
| Name | Type | Req | Description |
|---|---|---|---|
| cost | object | yes | – |
| elapsedSeconds | integer | yes | – |
| error | string | – | – |
| files | null|array | – | – |
| jobId | string | yes | Opaque handle; pass it to get_video, extend_video or edit_video |
| model | string | yes | – |
| next | string | – | Suggested next step |
| remoteExpiresAt | null|string | – | When Google deletes the server-side copy; extend before this time |
| state | string | yes | working, completed, failed or filtered |
| warnings | null|array | – | – |
No examples provided.
get_config Get configuration ~42
Show the active backend and how it was chosen, output directory, default models, budgets, input-file policy and configuration warnings. Use it to troubleshoot credentials or missing files.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| authMode | string | yes | – |
| backend | string | yes | – |
| backendReason | string | yes | – |
| budget | object | yes | – |
| catalogFile | string | – | – |
| catalogVersion | string | yes | – |
| configFile | string | – | – |
| defaults | object | yes | – |
| httpAddr | string | – | Address the HTTP transport listens on |
| inlinePreviews | boolean | yes | – |
| inputPolicy | string | yes | – |
| location | string | – | – |
| outputDir | string | yes | – |
| project | string | – | – |
| settingSources | object | – | – |
| stateDir | string | yes | – |
| transport | string | yes | – |
| version | string | yes | – |
| warnings | null|array | – | – |
No examples provided.
get_usage Get usage and spend ~83
Report estimated spend for this session, today, this month or all time, broken down by model and tool, with budget remaining, recent calls and running video jobs.
| Name | Type | Req | Description |
|---|---|---|---|
| period | string | – | session (since this server started), today (default), month or all |
| recent | integer | – | How many recent entries to include (default 10, max 100) |
| Name | Type | Req | Description |
|---|---|---|---|
| activeJobs | null|array | – | – |
| budget | object | yes | – |
| extra | object | – | – |
| ledgerPath | string | yes | – |
| note | string | yes | – |
| period | string | yes | – |
| summary | object | yes | – |
No examples provided.
get_video Get video job ~102
Check a video job and wait for it (default up to 45s). When the job completes, the video is downloaded and returned; calling again is safe and returns the same files.
| Name | Type | Req | Description |
|---|---|---|---|
| jobId | string | yes | Job handle returned by generate_video, extend_video or edit_video. |
| waitSeconds | null|integer | – | Block up to this many seconds for completion (default 45, 0 = check once). The video is downloaded automatically when ready. |
| Name | Type | Req | Description |
|---|---|---|---|
| cost | object | yes | – |
| elapsedSeconds | integer | yes | – |
| error | string | – | – |
| files | null|array | – | – |
| jobId | string | yes | Opaque handle; pass it to get_video, extend_video or edit_video |
| model | string | yes | – |
| next | string | – | Suggested next step |
| remoteExpiresAt | null|string | – | When Google deletes the server-side copy; extend before this time |
| state | string | yes | working, completed, failed or filtered |
| warnings | null|array | – | – |
No examples provided.
list_models List models ~142
List current models per media type with aliases, status (GA/preview/deprecated), prices and a short guide to when to use each. detail: true adds supported aspect ratios, sizes, durations and voices; live: true checks what your API key can actually call.
| Name | Type | Req | Description |
|---|---|---|---|
| detail | boolean | – | Include full capabilities (aspect ratios, voices, rules). |
| includeInactive | boolean | – | Also list retired models and their replacements. |
| live | boolean | – | Also query the Gemini API for the models this key can use, flagging unavailable ones and media models missing from the catalog. |
| mediaType | string | – | Filter: image, video, speech or music. |
| Name | Type | Req | Description |
|---|---|---|---|
| backend | string | yes | – |
| catalogVersion | string | yes | – |
| models | null|array | yes | – |
| uncatalogued | null|array | – | Media models the API offers that the catalog does not know yet (usable by raw ID) |
| warnings | null|array | – | – |
No examples provided.
stitch_tiles Stitch upscaled tiles ~237
Upscale step 3: align each edited tile from tile_image with the image, match its broad color, blend the overlaps and save one large PNG (default 8192 px long edge). Free and local. Reports tiles it rejected (their area keeps the prior pixels) and returns a preview plus 100% crops of the seams to inspect.
| Name | Type | Req | Description |
|---|---|---|---|
| colorMatch | null|boolean | – | Match each tile's broad exposure and color to the image (default true). Fine texture is never transferred. |
| details | null|array | – | Up to 6 points to return as 100% crops for inspection. Default: where grid tiles meet, or each region's center. |
| feather | number | – | Blend width as a fraction of each tile's shorter side (default 0.2, 0.05-0.4). Between neighboring tiles it is capped at half their overlap. |
| job | string | yes | The job uri returned by tile_image. |
| outputName | string | – | Optional base name for the stitched PNG. |
| tiles | null|array | yes | The edited tiles. Tiles left out keep the underlying image. |
| Name | Type | Req | Description |
|---|---|---|---|
| details | null|array | – | What each detail preview shows, in order |
| file | object | yes | – |
| nativeLongEdge | integer | – | About how many pixels of model-rendered detail the long edge carries, limited by the least detailed tile and at most the output's long edge; 0 when unknown or when part of the image has none |
| next | string | yes | – |
| original | string | yes | – |
| pass | integer | yes | – |
| reference | string | yes | – |
| tiles | null|array | yes | – |
| warnings | null|array | – | – |
No examples provided.
tile_image Tile image for upscaling ~557
Upscale step 1: cut an image into crops shaped to the edit model's aspect ratios. longEdge sets the target (1K-16K, default 8K); with grid and imageSize omitted it picks the cheapest plan that covers it (one tile up to about 4K, a 2x2-4x4 grid beyond). regions re-render faces or text in a later pass. Free and local; reports the edit cost. Step 2: edit_image each crop as the result says. Step 3: stitch_tiles. Detail is invented, not recovered.
| Name | Type | Req | Description |
|---|---|---|---|
| grid | integer | – | Cut a grid x grid layout covering the whole image (1-4). Omit it on a first pass to let tile_image pick the cheapest grid that covers longEdge (explained in planNote); a later full-grid pass defaults… |
| image | string | yes | The image to cut: the original photo for the first pass, or the previous stitch_tiles result for a refinement pass. File path, gemini-media:// URI or data: URI. |
| imageSize | string | – | Size the tiles will be edited at (1K, 2K or 4K, as the model supports). Omit it on a first pass to pick it with the grid; otherwise it defaults to the model's largest size. |
| longEdge | integer | – | Long edge in pixels of the image stitch_tiles will produce (default 8192, 1024-16384, at most 70 megapixels). First pass only; later passes keep their input's size. |
| model | string | – | Image model the tiles will be edited with (default: the server's default image model; a refinement pass defaults to the model of the pass before). Sets the supported aspect ratios and the cost estima… |
| original | string | – | First pass only: the untouched original, sent with every tile as context (as a copy of at most 2048 px). Defaults to image. Refinement passes edit crops alone and keep the first pass's original, so i… |
| outputName | string | – | Optional base name for the crops and the stitched result. Defaults to the original's name. |
| padding | number | – | Context added around each cell or region, as a fraction of its size (default 0.2, 0.05-0.5). Tiles then grow to the nearest aspect ratio the model supports. |
| regions | null|array | – | Refinement pass: up to 12 areas to re-render (faces, hands, text, materials), as fractions of the image. Omit for a full grid. |
| Name | Type | Req | Description |
|---|---|---|---|
| cost | object | yes | Estimated cost of editing every tile once (tile_image itself is free) |
| grid | integer | – | Grid size used (grid mode): 1 is the whole image as one tile |
| image | object | yes | Size of the tiled image |
| imageSize | string | yes | – |
| job | string | yes | Pass it to stitch_tiles |
| mode | string | yes | grid or regions |
| model | string | yes | – |
| nativeLongEdge | integer | – | About how many pixels of model-rendered detail the output's long edge carries if every tile comes back at imageSize, at most the output's long edge; below it the rest is interpolated |
| next | string | yes | – |
| output | object | yes | Size stitch_tiles will produce |
| pass | integer | yes | – |
| planNote | string | – | Why this grid and imageSize were chosen, when picked automatically |
| prompt | string | yes | Base edit_image prompt for every tile of this pass: it keeps each crop's framing. The gemini-upscale skill adds clauses for skin, eyes, hair, text and other materials. |
| reference | null|object | – | First pass only: a copy of the original (at most 2048 px) to pass as edit_image referenceImages for every tile. Refinement passes edit each crop alone. |
| tiles | null|array | yes | – |
| warnings | null|array | – | – |
No examples provided.
How do I install the Gemini Media MCP server?
Gemini Media ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, a23aac14b81d76f8bc3dd1b18867a7c8d206908143716a4e1073928f2eea8c0f; the commands to do that are on this page. If it does not match, do not open it.
mcpb · gemini-media-mcp-1.1.0.mcpb
Download bundleCheck the download matches the SHA-256 the MCP registry declares before you open it. If it does not match, do not open the file.
SHA-256
a23aac14b81d76f8bc3dd1b18867a7c8d206908143716a4e1073928f2eea8c0f
macOS / Linux
echo "a23aac14b81d76f8bc3dd1b18867a7c8d206908143716a4e1073928f2eea8c0f gemini-media-mcp-1.1.0.mcpb" | shasum -a 256 -c
Windows (PowerShell)
(Get-FileHash -Algorithm SHA256 .\gemini-media-mcp-1.1.0.mcpb).Hash -eq "a23aac14b81d76f8bc3dd1b18867a7c8d206908143716a4e1073928f2eea8c0f"
Run it in the folder you saved the bundle to, then open the file with an MCPB-capable host such as Claude Desktop.
What is the Gemini Media MCP server?
Gemini Media is an MCP server listed in the public MCP registry as io.github.mordor-forge/gemini-media-mcp. Generate images (Nano Banana), video (Veo, Gemini Omni), speech and music (Lyria) with Google models. This page covers its MCPB bundle (https://github.com/mordor-forge/gemini-media-mcp/releases/download/v1.1.0/gemini-media-mcp-1.1.0.mcpb).
Is the Gemini Media MCP server safe to use?
Gemini Media scores 48 out of 100 on VerifyMCP. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Gemini Media MCP server expose?
Gemini Media exposes 14 tools: edit_image, edit_video, estimate_cost, extend_video, generate_image, and 9 more. Their descriptions and schemas cost roughly 4,078 tokens of context every time the server is loaded.
What licence is the Gemini Media MCP server under?
Gemini Media declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.