gemini-mcp
An MCP server that enables agents to generate and edit images using Google Gemini models. It supports direct image generation, saving characters and styles to a library for consistency, and uploading files via the Files API for reference.
Package and access
Local package with source-attributed installation metadata. Koskamo does not execute packages during review.
What you can do with it
- Generate images using Gemini Nano Banana models
- Save and reuse character descriptions and style fragments
- Upload files to a blob store for image reference
Source and maintenance
- Maintenance checked
Packages and installation
Source-provided package data. Koskamo has not executed or live-probed this package.
@chrischall/gemini-mcp 2.4.2
{
"version": "2.4.2",
"transport": "stdio",
"identifier": "@chrischall/gemini-mcp",
"registryType": "npm",
"environmentVariables": [
{
"name": "GEMINI_API_KEY",
"format": "string",
"description": "Your Google Gemini API key (aistudio.google.com/apikey)"
},
{
"name": "GEMINI_IMAGE_MODEL",
"format": "string",
"description": "Override the default image model (default: gemini-nano-banana-2.1)"
},
{
"name": "GEMINI_OUTPUT_DIR",
"format": "string",
"description": "Default directory for generated images (default: ~/Downloads/gemini-mcp). When set, a per-call output_dir must be inside it."
},
{
"name": "GEMINI_INPUT_DIR",
"format": "string",
"description": "Directory to resolve bare input-image filenames against"
},
{
"name": "GEMINI_UPLOAD_DIR",
"format": "string",
"description": "Restrict local-file uploads to the Gemini Files API to these directories (path.delimiter-separated; unset = unrestricted)"
},
{
"name": "GEMINI_REFERENCE_DIR",
"format": "string",
"description": "Restrict 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)"
},
{
"name": "GEMINI_TIMEOUT_MS",
"format": "string",
"description": "Upstream request timeout in ms (default: 60000, or 120000 for image_size: \"4K\"); each generation tool also takes a per-call timeout_ms"
},
{
"name": "GEMINI_HEARTBEAT_MS",
"format": "string",
"description": "Progress-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"
},
{
"name": "GEMINI_CHAIN_RETRY_MS",
"format": "string",
"description": "How long to wait out interactions-store lag when a chained call 404s (default: 120000; 0 disables retrying)"
},
{
"name": "GEMINI_DEBUG",
"format": "string",
"description": "When set, emit heartbeat diagnostics to stderr. Off by default."
},
{
"name": "GEMINI_RATE_CARD",
"format": "string",
"description": "Override/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)."
}
]
}Tools
Reported by the attributed source; not independently observed by Koskamo.
Connect from your client
Each snippet configures the same source-provided package; replace placeholders before use.
Cursor
{
"mcpServers": {
"gemini-mcp": {
"command": "npx",
"args": [
"-y",
"@chrischall/gemini-mcp@2.4.2"
],
"env": {
"GEMINI_API_KEY": "<YOUR_GEMINI_API_KEY>",
"GEMINI_IMAGE_MODEL": "<YOUR_GEMINI_IMAGE_MODEL>",
"GEMINI_OUTPUT_DIR": "<YOUR_GEMINI_OUTPUT_DIR>",
"GEMINI_INPUT_DIR": "<YOUR_GEMINI_INPUT_DIR>",
"GEMINI_UPLOAD_DIR": "<YOUR_GEMINI_UPLOAD_DIR>",
"GEMINI_REFERENCE_DIR": "<YOUR_GEMINI_REFERENCE_DIR>",
"GEMINI_TIMEOUT_MS": "<YOUR_GEMINI_TIMEOUT_MS>",
"GEMINI_HEARTBEAT_MS": "<YOUR_GEMINI_HEARTBEAT_MS>",
"GEMINI_CHAIN_RETRY_MS": "<YOUR_GEMINI_CHAIN_RETRY_MS>",
"GEMINI_DEBUG": "<YOUR_GEMINI_DEBUG>",
"GEMINI_RATE_CARD": "<YOUR_GEMINI_RATE_CARD>"
}
}
}
}Cline
{
"mcpServers": {
"gemini-mcp": {
"command": "npx",
"args": [
"-y",
"@chrischall/gemini-mcp@2.4.2"
],
"env": {
"GEMINI_API_KEY": "<YOUR_GEMINI_API_KEY>",
"GEMINI_IMAGE_MODEL": "<YOUR_GEMINI_IMAGE_MODEL>",
"GEMINI_OUTPUT_DIR": "<YOUR_GEMINI_OUTPUT_DIR>",
"GEMINI_INPUT_DIR": "<YOUR_GEMINI_INPUT_DIR>",
"GEMINI_UPLOAD_DIR": "<YOUR_GEMINI_UPLOAD_DIR>",
"GEMINI_REFERENCE_DIR": "<YOUR_GEMINI_REFERENCE_DIR>",
"GEMINI_TIMEOUT_MS": "<YOUR_GEMINI_TIMEOUT_MS>",
"GEMINI_HEARTBEAT_MS": "<YOUR_GEMINI_HEARTBEAT_MS>",
"GEMINI_CHAIN_RETRY_MS": "<YOUR_GEMINI_CHAIN_RETRY_MS>",
"GEMINI_DEBUG": "<YOUR_GEMINI_DEBUG>",
"GEMINI_RATE_CARD": "<YOUR_GEMINI_RATE_CARD>"
}
}
}
}VS Code
{
"servers": {
"gemini-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@chrischall/gemini-mcp@2.4.2"
],
"env": {
"GEMINI_API_KEY": "<YOUR_GEMINI_API_KEY>",
"GEMINI_IMAGE_MODEL": "<YOUR_GEMINI_IMAGE_MODEL>",
"GEMINI_OUTPUT_DIR": "<YOUR_GEMINI_OUTPUT_DIR>",
"GEMINI_INPUT_DIR": "<YOUR_GEMINI_INPUT_DIR>",
"GEMINI_UPLOAD_DIR": "<YOUR_GEMINI_UPLOAD_DIR>",
"GEMINI_REFERENCE_DIR": "<YOUR_GEMINI_REFERENCE_DIR>",
"GEMINI_TIMEOUT_MS": "<YOUR_GEMINI_TIMEOUT_MS>",
"GEMINI_HEARTBEAT_MS": "<YOUR_GEMINI_HEARTBEAT_MS>",
"GEMINI_CHAIN_RETRY_MS": "<YOUR_GEMINI_CHAIN_RETRY_MS>",
"GEMINI_DEBUG": "<YOUR_GEMINI_DEBUG>",
"GEMINI_RATE_CARD": "<YOUR_GEMINI_RATE_CARD>"
}
}
}
}Claude Desktop
{
"mcpServers": {
"gemini-mcp": {
"command": "npx",
"args": [
"-y",
"@chrischall/gemini-mcp@2.4.2"
],
"env": {
"GEMINI_API_KEY": "<YOUR_GEMINI_API_KEY>",
"GEMINI_IMAGE_MODEL": "<YOUR_GEMINI_IMAGE_MODEL>",
"GEMINI_OUTPUT_DIR": "<YOUR_GEMINI_OUTPUT_DIR>",
"GEMINI_INPUT_DIR": "<YOUR_GEMINI_INPUT_DIR>",
"GEMINI_UPLOAD_DIR": "<YOUR_GEMINI_UPLOAD_DIR>",
"GEMINI_REFERENCE_DIR": "<YOUR_GEMINI_REFERENCE_DIR>",
"GEMINI_TIMEOUT_MS": "<YOUR_GEMINI_TIMEOUT_MS>",
"GEMINI_HEARTBEAT_MS": "<YOUR_GEMINI_HEARTBEAT_MS>",
"GEMINI_CHAIN_RETRY_MS": "<YOUR_GEMINI_CHAIN_RETRY_MS>",
"GEMINI_DEBUG": "<YOUR_GEMINI_DEBUG>",
"GEMINI_RATE_CARD": "<YOUR_GEMINI_RATE_CARD>"
}
}
}
}Let your agent find its tools
Find servers like gemini-mcp from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.