mcpField
G
gemini-mcp

gemini-mcp

本地服务
github.com/chrischall媒体与设计04 天前更新

关于 gemini-mcp

面向 Google Gemini 媒体生成的 MCP 服务,可生成和迭代修改图像、视频与音乐,并支持长时任务和可复用文件引用。

主要功能

  1. 01生成、编辑和合成图像
  2. 02创建风格一致的图像组
  3. 03多轮迭代优化图像
  4. 04生成视频和音乐
  5. 05上传并管理可复用文件
  6. 06异步运行长时任务

适用场景

  1. 01根据文本提示创建图像
  2. 02逐步调整生成的图像
  3. 03制作风格协调的视觉素材
  4. 04生成短视频或音乐

MCP 相关

通过 stdio 向 MCP 客户端提供 Gemini 媒体生成和文件管理工具。本地文件上传与删除需要确认。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"chrischall-gemini": {
"command": "npx",
"args": [
"-y",
"@chrischall/gemini-mcp"
],
"env": {
"GEMINI_API_KEY": "<GEMINI_API_KEY>",
"GEMINI_IMAGE_MODEL": "<GEMINI_IMAGE_MODEL>",
"GEMINI_OUTPUT_DIR": "<GEMINI_OUTPUT_DIR>",
"GEMINI_INPUT_DIR": "<GEMINI_INPUT_DIR>",
"GEMINI_UPLOAD_DIR": "<GEMINI_UPLOAD_DIR>",
"GEMINI_REFERENCE_DIR": "<GEMINI_REFERENCE_DIR>",
"GEMINI_TIMEOUT_MS": "<GEMINI_TIMEOUT_MS>",
"GEMINI_HEARTBEAT_MS": "<GEMINI_HEARTBEAT_MS>",
"GEMINI_CHAIN_RETRY_MS": "<GEMINI_CHAIN_RETRY_MS>",
"GEMINI_DEBUG": "<GEMINI_DEBUG>",
"GEMINI_RATE_CARD": "<GEMINI_RATE_CARD>"
}
}
}
}
启动命令npx -y @chrischall/gemini-mcp
需要配置的环境变量
GEMINI_API_KEY密钥Your Google Gemini API key (aistudio.google.com/apikey)
GEMINI_IMAGE_MODELOverride the default image model (default: gemini-nano-banana-2.1)
GEMINI_OUTPUT_DIRDefault directory for generated images (default: ~/Downloads/gemini-mcp). When set, a per-call output_dir must be inside it.
GEMINI_INPUT_DIRDirectory to resolve bare input-image filenames against
GEMINI_UPLOAD_DIRRestrict local-file uploads to the Gemini Files API to these directories (path.delimiter-separated; unset = unrestricted)
GEMINI_REFERENCE_DIRRestrict local reference images (images / image paths sent to Gemini) to these directories (path.delimiter-separated), plus GEMINI_OUTPUT_DIR. Unset: GEMINI_UPLOAD_DIR applies; if that is unset too, unrestricted locally, and $MCP_DATA_DIR/uploads when MCP_DATA_DIR is set (hosted)
GEMINI_TIMEOUT_MSUpstream request timeout in ms (default: 60000, or 120000 for image_size: "4K"); each generation tool also takes a per-call timeout_ms
GEMINI_HEARTBEAT_MSProgress-notification cadence in ms while a generation runs (default: 10000; 0 disables) — keeps MCP hosts that reset their timeout on progress from timing out long generations
GEMINI_CHAIN_RETRY_MSHow long to wait out interactions-store lag when a chained call 404s (default: 120000; 0 disables retrying)
GEMINI_DEBUGWhen set, emit heartbeat diagnostics to stderr. Off by default.
GEMINI_RATE_CARDOverride/extend the shipped USD-per-1M-token rates used by gemini_token_usage's cost estimate, e.g. {"gemini-3-pro-image":{"input":2,"text_output":12,"image_output":120}}. Malformed JSON is ignored (a bad card must not fail generations).

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@chrischall/gemini-mcp2.4.2

工具

13

收录的工具列表 · 更新于 1 周前

此工具无需参数。

详细介绍

gemini-mcp

CI npm license

用于 Google Gemini 媒体生成的 MCP 服务。通过 stdio 向 Claude 提供 13 种工具:列出可用模型、生成/编辑/组合图像、根据主提示词生成一组风格一致的图像、多轮图像优化(Interactions API)、视频生成(omni)、音乐生成(Lyria)、用于长时间生成的异步结果轮询,以及用于重复使用图像参考的 Files API 上传/列出/删除。默认将输出写入磁盘(并返回路径),也可以内联 base64 形式返回。基于 Gemini v1beta API(generativelanguage.googleapis.com),使用 Nano Banana / Nano Banana Pro(图像)、omni(视频)和 Lyria(音乐)模型系列。

由 AI(Claude Code)开发和维护。

环境变量

变量必填说明
GEMINI_API_KEY是你的 Google Gemini API 密钥(aistudio.google.com/apikey)
GEMINI_IMAGE_MODEL否覆盖默认图像模型(默认值:gemini-nano-banana-2.1)
GEMINI_OUTPUT_DIR否生成图像的默认目录(默认值:~/Downloads/gemini-mcp)。设置后,每次调用的 output_dir 必须位于此目录中。
GEMINI_INPUT_DIR否用于解析不带路径的输入图像文件名的目录(这样 images: ["foo.jpg"] 就能正常工作)
GEMINI_UPLOAD_DIR否将传输至 Gemini Files API 的本地文件(gemini_upload_file 的 path、video_path)限制在这些目录中——可指定一个或多个目录,以 : 分隔(Windows 上使用 ;);允许使用 ~。超出范围的路径会在上传前被拒绝。未设置:不限制
GEMINI_REFERENCE_DIR否将本地图像参考图(读取并发送给 Gemini 的 images / master_images 路径——内联传输,或重复使用时通过 Files API 上传)限制在这些目录中——以 : 分隔(Windows 上使用 ;),允许使用 ~;GEMINI_OUTPUT_DIR 也始终允许使用,因此生成的图像可以重新作为输入。超出范围的路径(跟随符号链接后)会在读取前被拒绝。未设置:改为应用 GEMINI_UPLOAD_DIR。如果两者均未设置,则本地安装不限制参考图范围(服务器可读取的任何文件都可以发送),设置 MCP_DATA_DIR 时(托管环境)则限制在 $MCP_DATA_DIR/uploads 中
GEMINI_TIMEOUT_MS否上游请求超时时间(毫秒;默认值:60000,image_size: "4K" 时为 120000);每个生成工具也支持单次调用的 timeout_ms
GEMINI_HEARTBEAT_MS否生成期间发送进度通知的间隔(毫秒;默认值:10000;0 表示禁用)——避免那些在收到进度通知后会重置超时计时的 MCP 主机因生成时间过长而超时
GEMINI_CHAIN_RETRY_MS否链式调用返回 404 时,等待 interactions-store 延迟的最长时间(默认值:120000;0 表示禁用重试)
确认

向 Google 发送本地文件(images / master_images / video_path 输入,或 gemini_upload_file 的 path)以及每项删除操作,都需要先确认。能够显示确认提示的客户端(Claude Code)会收到实际提示,除非 MCP_CONFIRM_ELICITATION=off。其他情况下,首次调用不会执行任何操作,而是返回预览(解析后的本地路径及其 MIME 类型和大小,或要删除的方法/路径)以及一个 confirmToken;只有使用相同参数和该令牌再次调用,操作才会继续。令牌只能使用一次,会过期,并且绑定到确切的参数——两次调用之间若提示词有变或文件被替换,操作都会被拒绝。纯文本提示词、URL、files/ 引用和 base64 输入不受此限制。

变量默认值
MCP_CONFIRM_MODEask-user对于无法显示确认提示的客户端(claude.ai、Claude Desktop),写入操作的处理方式。ask-user:分两步执行——首次调用不执行任何操作,而是返回预览和令牌;模型必须先在聊天中获得你的批准,然后才能使用该令牌再次调用。auto:同样分两步执行,但模型查看预览后即可使用令牌。refuse:此类客户端上的写入操作会被拒绝。能够显示提示的客户端(Claude Code)始终会收到实际提示,除非 MCP_CONFIRM_ELICITATION=off。无法识别的值会按 refuse 处理。
MCP_CONFIRM_ELICITATIONonoff 表示绝不显示确认提示,因此所有客户端都会采用 MCP_CONFIRM_MODE 路径。对于声称支持提示、但从不显示提示的客户端(受限调用会挂起——opencode 2.0.x),请设置此项。其他任何值都会保持 on,并在 stderr 上显示警告。
MCP_CONFIRM_TTL_SECONDS600令牌的有效时长。
MCP_CONFIRM_SECRET每个进程随机生成签名密钥;仅当令牌必须在服务重启后仍然有效时才设置。
长时间生成与客户端超时

4K / Pro 模型的生成可能会超过 MCP 主机自身的 tools/call 超时(错误 -32001)。 服务会发送 notifications/progress 心跳,以便会在收到进度通知时重置超时的主机继续等待。如果主机仍然放弃等待,服务端的生成通常仍会完成:图像会写入输出目录,gemini_interact 还会写入一个 <image>.json 旁置文件,记录 interaction_id;而 continue_last: true 会恢复丢失响应所属的交互。

链式调用出现 404 时

携带 previous_interaction_id 的请求返回 404,并不能证明链已过期。目前实际观察到的唯一 404 响应正文是通用提示——"Requested entity was not found."——从未指出哪个实体未找到。未知或已重命名的模型 ID,以及已过期的 Files API files/… URI(TTL 约为 48 小时),都会返回完全相同的内容。因此,服务器不再断言它无法确认的原因:上游文本会原样呈现,而 gemini_interact 会进行实验,以查明究竟是哪种情况。

很多时候,ID 并非不存在,而只是尚未可见。交互存储采用最终一致性,新创建的 ID 可能返回 404,但几分钟后同一个 ID 就能正常解析;较重的轮次(4K、Pro、thinking_level: high)最容易遇到这种情况,而这些轮次也正是你最希望能接着调用的。因此,链式调用出现 404 时,会采用指数退避重试,最长 120s(GEMINI_CHAIN_RETRY_MS),之后才会判定失败。404 不会生成任何内容,也不会计费,所以等待只耗费时间。

重试时间用尽后,工具会查找该 ID 的 sidecar,重新附上它生成的图像,并在不带链的情况下重新发起请求:

  • 重新发起请求成功 → 问题确实出在链上,你仍会得到图像,并收到 chain_recovered: { expired_interaction_id, reanchored_on } 报告。返回 404 的尝试不会生成任何内容,因此这只需支付你手动重新锚定时原本就要支付的一次生成费用。
  • 重新发起请求也返回 404 → 问题并非由交互 ID 引起。你会收到明确说明和上游文本,并被提示检查模型 ID 和任何 files/… URI,而不是被误导去追查一个一直正常的交互。
  • 没有 sidecar 与失效的 ID 匹配 → 返回原始错误,而不是猜测。基于错误的图像重新锚定会在不知不觉中破坏编辑结果。

另外,continue_last 不再会随服务器进程结束而失效:如果内存中没有 ID,它会从输出目录中最新的 <image>.json sidecar 恢复,并报告 continued_from_sidecar: true。这种情况从来都不是链过期——交互一直在上游保持有效,只是我们丢失了对其 ID 的记录。

对于无法控制超时的宿主(例如 Claude Desktop,其固定约 30s 的超时上限会忽略进度),以下两种保护机制可确保重新发起请求安全且没有必要:

  • async: true 会立即返回 job_id,而不是图像,因此调用不会超时;使用该 job_id 轮询 gemini_get_result,直到状态变为 done。
  • idempotency_key 可确保重复调用具有幂等性——使用相同键重试时,会返回已记录的结果(reused: true),而不是再次对生成收费。(即使不使用键,两个内容相同且同时进行中的调用也会自动去重。)

工具

工具描述
gemini_list_models列出可用的 Gemini 图像模型和当前默认模型
gemini_image_generate根据文本提示词生成图像
gemini_image_edit根据文本指令进行单次编辑或多图合成(如需连续多次编辑,请使用 gemini_interact)
gemini_image_set生成一张主图以及 N 张以其为参考、风格一致的图像
gemini_interact迭代优化的首选工具:通过 Interactions API 进行多轮生成/编辑——通过 previous_interaction_id(或 continue_last: true)传入返回的 interaction_id 以继续交互
gemini_video_generate通过 Gemini omni 模型生成短视频(文本→视频、图像→视频、两张静帧插值、edit 或 extend);resolution 360p/720p/1080p/4k 是影响成本的因素;结果以 MP4 格式写入磁盘
gemini_music_generate通过 Lyria 模型根据文本提示词生成音乐——lyria-3-clip-preview(30s,默认)、lyria-3.5(完整长度,含人声)或 lyria-3-pro-preview;单轮生成;结果以 MP3 格式写入磁盘
gemini_get_result根据 job_id 获取以 async: true 启动的异步生成任务(状态从 running 变为 done 时返回结果)。可让长时间生成任务不受主机 tools/call 超时影响
gemini_token_usage查看截至目前本次会话的令牌用量和估算的 USD 成本。在工作流前后各调用一次,然后相减即可计算该工作流的开销。根据日期对应的费率表,按每次调用所用模型计价(GEMINI_RATE_CARD 可覆盖费率表);由于没有可读取账户余额的端点,因此这是计算开销的方式
gemini_upload_file将图像(或视频/音频)上传到 Gemini Files API 一次——来源可以是 url、data_base64 或本地 path——并获取可重复使用的 files/<id> 引用
gemini_list_files列出当前使用此 API 密钥上传的文件及其 MIME 类型和过期时间
gemini_delete_file在已上传文件约 48h 后过期前将其删除(需先确认——参见确认)
gemini_sign_media(仅限托管部署) 根据生成媒体的 r2_key 创建新的签名 URL——链接过期后仍可重新获取
gemini_view_media(仅限托管部署) 根据 r2_key 将生成的图像作为内嵌图像块返回,以便模型在优化前实际查看生成结果
gemini_get_upload_url(仅限托管部署) 创建一个短时有效的签名 PUT URL,使 shell 无需身份验证标头即可上传参考图像;PUT 请求会返回一个 r2_key,可用于 images_r2_keys、gemini_save_character 或 gemini_upload_file
gemini_save_character / gemini_list_characters / gemini_delete_character(仅限托管部署) 按账户持久保存的角色库:以名称保存参考图像和描述,然后在生成工具中传入 characters: ["name"]。不会过期
gemini_save_style / gemini_list_styles / gemini_delete_style(仅限托管部署) 按账户持久保存的风格预设:可重复使用的提示词片段(可选附带参考图像),在生成工具中传入 style: "name" 即可应用。不会过期

生成工具还共享三项吞吐量/延迟控制选项:async: true(立即返回 job_id)、max_wait_ms(等待至指定时长后返回 job_id——快速结果会直接返回,慢速批次则不会触发主机超时),以及 idempotency_key(重试时返回已记录的结果,而不会重复计费)。在托管部署中,包含多张图像的 gemini_image_set 结果还会附带一个 bundle_url——这是包含该集合中所有图像的 zip 文件的单个签名 URL。与所有托管链接一样,其有效期最长为 24h(受主机 blob 存储上限限制);过期后可通过 gemini_sign_media 重新生成。(如果图像集合过大,无法安全地在内存中打包成 zip,则会跳过压缩包,并通过 bundle_skipped 说明;每张图像的链接不受影响。)

查看你的图片(托管环境)

在托管部署中没有文件系统,因此生成的图片必须以你可以打开的形式返回。确实如此:每个结果都包含一个 URL,无需配置。

{
  "images": ["https://mcp.nullnet.app/b/<account>/gemini/gen/2026-07-29/ab12cd34-a-cat.png?exp=…&sig=…"],
  "media":  [{ "url": "https://…", "r2_key": "gen/2026-07-29/ab12cd34-a-cat.png",
               "expires_at": "2026-07-31T12:00:00.000Z",
               "curl_hint": "curl -sS -o a-cat.png \"https://…\"" }]
}

这些链接无需身份验证标头——签名包含在 URL 中——因此可在浏览器、curl 和聊天消息中使用。它们最多 24h 后过期——主机的 blob 存储不接受更长的签名——链接指向的对象则会按主机的保留策略清理。r2_key 是这段有效期内可持久使用的句柄:

  • gemini_sign_media(仅限托管部署)通过 r2_key 生成新的签名 URL,因此链接过期后无需重新生成图片,也无需再次付费。
  • 每张图片旁都会存储交互 ID,因此托管部署恢复丢失的对话轮次时,方式与本地部署相同:重启后 continue_last: true 仍然有效,链式调用遇到 404 时会重新锚定到该交互生成的图片,而 gemini_list_recent_media 会显示每个已存储对象的提示词、模型和交互 ID,而不是只显示一堆键。
  • gemini_view_media(仅限托管部署)通过 r2_key 内联返回图片本身。模型无法查看链接,因此没有此工具时,生成 → 优化的循环就只能盲目进行。它是单独的一次调用,而不是在每个结果中都附带图片字节:只有在实际查看的对话轮次中才会产生图片令牌费用。
  • 使用 r2_key 调用 gemini_upload_file,可将此服务生成的媒体转换为 Files API 引用(服务使用自己的密钥读取媒体,你无需生成签名),因此生成的图片只需一次成本低廉的调用,就能成为下一次生成的参考图片。
  • 幂等重放(idempotency_key)会在返回记录的结果前重新生成其中的 URL,因此重复使用结果时不会携带失效链接。

为何这很重要: MCP 的内联图片内容块(inline: true)对助手可见,但许多聊天客户端不会将其渲染给用户,而且助手无法从自身上下文中提取图片字节,以便保存到其他位置。生成可能成功计费,但结果却不可见。URL 是可移植的解决方案;inline 仍然可用,但它不再是接收媒体的唯一方式。

字节如何提供

主机会存储每个生成的对象,并通过带有签名且会过期的 URL 提供对象——https://<host>/b/<account>/gemini/<key>?exp=&sig=。无需设置,也无需身份验证标头:链接中的签名就是授权凭证,因此 curl 和浏览器都能使用。

身份验证使用带签名且会过期的 URL,而不是未列出的密钥。 随机密钥可能更简单,但它们永不过期,也无法撤销:任何曾经记录或转发过该链接的人,都能永远使用它。签名将访问权限限定为单个对象,并设定截止时间;轮换主机的签名密钥(MCP_BLOB_SIGNING_KEY,由 mcp-host 与 MCP_BLOB_BASE_URL 一同注入,本服务不会选择这两者)会立即使所有尚未过期的链接失效。代价是链接较长,无法手动缩短。

助手转发结果时

向用户展示 URL。如果你的沙盒可以通过网络访问主机,获取 URL 并将字节作为文件附上,效果最好;否则直接提供链接即可。不同客户端对 ![](url) Markdown 内联内容的渲染方式各不相同——裸 URL 是安全的形式;如果你确定客户端支持渲染,Markdown 链接也是合理的增强方式。

保留期限

保留期限由宿主决定,而非此服务的设置。在 mcp-host 上,blob 存储会按自己的计划清理生成的媒体(gen/)和签名上传内容(up/)(参见 mcp-host docs/BLOB-STORE.md;默认 30 天);角色/风格库(lib/)则标记为免于清理,因此已保存的条目永不过期。每个签名链接的有效期都限制在存储的 24 小时上限内,因此不会超过存储实际认可的期限;只要对象存在,gemini_sign_media 就会为其重新签发链接。此服务读取的相关变量由宿主注入:MCP_BLOB_BASE_URL 和 MCP_BLOB_SIGNING_KEY。

提示词也会被存储。 在托管部署中,每个生成的对象旁边都会有一条小型 JSON 记录,其中保存提示词(前 500 个字符)、模型和交互 ID——gemini_list_recent_media 显示的就是这些内容,也正是这些信息能让丢失的对话轮次得以恢复。记录与对象一起保存和清理,因此保留时长与对象相同,不会更久。在本地,gemini_interact 会在输出目录中为每张图片写入一个 <image>.json 旁路文件(包含模型、交互 ID、选项以及模型回复的任何文本,但不包含提示词);这些文件由你决定保留或删除,不会自行过期。如果你的提示词描述了真实人物,请注意它们会在你的存储桶中保留整个保留期限。

发送参考图片而不消耗上下文

所有接受参考图片的工具——gemini_image_generate、gemini_image_edit、gemini_image_set、gemini_interact,以及 gemini_video_generate(参考静帧)和 gemini_music_generate——都支持四种传递方式。其中只有一种会消耗模型上下文:

参数字节的传输方式上下文开销
images_url(master_images_url)服务下载 https URL无
images_file_uris(master_images_file_uris)已上传的 files/<id> 引用无
images_r2_keys(master_images_r2_keys)服务读取其自有存储(仅限托管部署)无
images从本地磁盘读取(仅限 stdio 构建)无
characters / style按名称附加已保存的库条目(仅限托管部署)无
images_base64通过工具调用 JSON 传递每张 JPEG 约 14k 个 token

images_base64 是万不得已时的最后选择。每张普通照片大约会消耗 14k 个 token;如果读取文件时发生截断,生成的内容就会被静默破坏——载荷看起来仍像 base64,因此最终表现为生成结果异常,而不是报错。优先使用其他方式。

images_url — 由服务获取图片
{ "prompt": "make it look like winter", "images_url": ["https://example.com/photo.jpg"] }

获取范围仅限公开的 https:// URL——私有、回环和链路本地地址都会被拒绝(会解析 IPv6 字面量,因此 [::ffff:7f00:1] 会被识别为回环地址);每次重定向都会重新验证,且每一跳都有超时限制。响应的 Content-Type 必须为 image/*,大小上限为 15MB;该上限通过流式传输期间强制执行,而非依赖 Content-Length。发生故障时会指出有问题的 URL。超过 6MB 的内容会上传到 Files API,并通过 uri 引用,而不是直接内嵌,因为 generateContent 对整个请求的大小限制约为 20MB。

images_file_uris — 上传一次,多次引用
// 1. upload
{ "tool": "gemini_upload_file", "url": "https://example.com/photo.jpg" }
// → { "file_uri": "files/abc123", "mime_type": "image/jpeg", "expires": "..." }

// 2. reference it, as many times as you like
{ "prompt": "make it winter",  "images_file_uris": ["files/abc123"] }
{ "prompt": "make it sunrise", "images_file_uris": ["files/abc123"] }

上传内容会保留 约 48 小时;之后引用将无法解析(会返回通用的 404,参见上文的连续 404 部分)。gemini_image_set 只会获取或解析此类引用一次,然后将其传递给主调用和每个场景调用。

在 stdio 构建中,如果本地 images 路径在一个会话中被引用多次,系统会自动将其上传到 Files API(以路径 + mtime + 大小作为键),这样重复编辑同一张照片时就不必再次发送字节。编辑文件会使缓存的上传内容失效。

签名上传 URL——完全无需令牌(托管版)

这是拥有 shell 的 Agent 的预期使用方式:磁盘文件 → curl → r2_key → 工具调用, 图片不会进入对话。gemini_get_upload_url 会生成一个短时有效(约 10 分钟)的签名 PUT URL,shell 无需任何身份验证标头即可上传——URL 中的签名就是授权凭证,与下载链接的工作方式相同。

# 1. tool call: gemini_get_upload_url { filename: "photo.jpg", content_type: "image/jpeg" }
#    → { upload_url, r2_key, expires_at, curl_hint }

# 2. shell:
curl -sS -X PUT -H "Content-Type: image/jpeg" --data-binary @photo.jpg "$UPLOAD_URL"
# → { "r2_key": "up/<tenant>/2026-07-31/ab12cd34-photo.jpg", "size_bytes": 812345, ... }

签名涵盖一个限定租户范围的对象键、声明的内容类型和有效期;上传大小上限为 15MB,读取数据流时会强制执行。只接受栅格图像类型(jpeg/png/webp/gif/avif/heic/heif/bmp/tiff)——有意拒绝 SVG,因为 SVG 是可执行脚本的文档,而 /media 会从服务器自身的源提供内容。返回的 r2_key 有三种用途:直接作为任何生成工具的 images_r2_keys(服务器读取自己的存储桶——对话中不会包含图像字节)、通过 gemini_save_character 永久保存,或作为 gemini_upload_file({ r2_key }) 的 Files API 引用(约 48 小时有效)。上传文件本身遵循主机的 Blob 存储保留计划(up/ 前缀)。

角色与风格库(托管版)

可按账户保存反复使用的主体与风格,一次保存,永不过期(库中的 lib/ 对象不受保留策略限制,因此主机清理时会跳过它们):

// once:
{ "tool": "gemini_save_character", "name": "finn",
  "description": "6-year-old boy, curly red hair", "image_r2_key": "up/…/photo.jpg" }
{ "tool": "gemini_save_style", "name": "bold-cartoon-sports",
  "prompt_fragment": "bold cartoon style, thick outlines, saturated colors" }

// afterwards, on any generation:
{ "tool": "gemini_image_set",
  "master_prompt": "Finn on a soccer field",
  "scenes": ["kicking the ball", "celebrating a goal"],
  "characters": ["finn"], "style": "bold-cartoon-sports" }

指定角色名称会附加其已保存的参考图像,并将描述融入提示词;指定风格名称会追加其片段(如果有参考图像,也会一并附加)。gemini_image_set 会将角色参考图像传递给主调用和每个场景调用,从而确保整组图像中的主体保持一致。

快速入门

{
  "mcpServers": {
    "gemini": {
      "command": "npx",
      "args": ["-y", "@chrischall/gemini-mcp"],
      "env": {
        "GEMINI_API_KEY": "your-api-key-here"
      }
    }
  }
}

完整用法文档请参阅 SKILL.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。