Zobrazit stránkuStarší verzeZpětné odkazyNahoru Tato stránka je pouze pro čtení. Můžete si pouze prohlédnout zdrojový kód, ale ne ho měnit. Zeptejte se správce, pokud si myslíte, že něco není v pořádku. ====== OpenCode: MCP server pro generování obrázků přes Gemini ====== ===== Úvodní Kontext ===== Potřeboval jsem v OpenCode zprovoznit MCP server, který umí generovat obrázky přes Gemini, a chtěl jsem to mít reprodukovatelné v projektech bez úniku API klíče do gitu. Začal jsem s ''%%nano-banana-pro%%'' MCP serverem, ale kvůli limitacím se zdrojovými obrázky jsem přešel na ''%%ultimate-gemini-mcp%%''. ===== Předpoklady ===== * Mám nainstalovaný OpenCode a používám konfiguraci ''%%opencode.json%%''. * Mám přístup ke Gemini API klíči (''%%GEMINI_API_KEY%%''). * Pro variantu ''%%nano-banana-pro%%'' mám k dispozici ''%%npx%%'' (Node.js). * Pro variantu ''%%ultimate-gemini-mcp%%'' mám k dispozici ''%%uv%%''/''%%uvx%%''. ===== Klíčové Kroky / Konfigurace ===== ===== A) Konfigurace nano-banana-pro MCP v opencode.json ===== ==== Konfigurace MCP serveru ==== Takto jsem měl nakonfigurovaný MCP server v ''%%opencode.json%%'': <code json> { "$schema": "https://opencode.ai/config.json", "mcp": { "nano-banana-pro": { "type": "local", "command": ["npx", "-y", "@rafarafarafa/nano-banana-pro-mcp@latest"], "environment": { "GEMINI_API_KEY": "{file:./gemini.key}" } } } } </code> ==== Uložení GEMINI_API_KEY přes {file:./gemini.key} ==== Konfiguraci si zálohuji přes git, proto jsem nechtěl, aby byl klíč přímo v ''%%opencode.json%%''. Použil jsem referenci na soubor: - ''%%"GEMINI_API_KEY": "{file:./gemini.key}"%%'' Tím držím tajemství mimo repozitář a v gitu zůstává jen reprodukovatelná konfigurace. ==== Kam umístit gemini.key a co obsahuje ==== Soubor ''%%gemini.key%%'' musí být umístěn ve stejném adresáři jako konfigurační soubor a musí obsahovat čistě API klíč. ==== Co přesně se spouští ==== Volání MCP serveru funguje tak, že se zavolá příkaz ''%%npx -y @rafarafarafa/nano-banana-pro-mcp@latest%%'' a zároveň se provede případná aktualizace MCP serveru. ==== Ověření připojení ==== Takto ověřím, zda OpenCode přijal konfiguraci MCP serveru: <code bash> opencode mcp list ┌ MCP Servers │ ● ✓ nano-banana-pro connected │ npx -y @rafarafarafa/nano-banana-pro-mcp@latest │ └ 1 server(s) </code> ==== Poznámka k lokální konfiguraci ==== Pokud server není globálně, musím spouštět příkaz v projektové složce, ve které mám konfiguraci. ===== B) Proč jsem měnil server (limitace se zdrojovými obrázky / base64) ===== Protože jsem MCP serveru nemohl dávat zdrojové obrázky, spoléhal na base64 na vstupu a to by musel LLM poslat textově nesmyslně dlouhý řetězec, zvolil jsem jiný MCP server: [[https://github.com/anand-92/ultimate-image-gen-mcp|anand-92/ultimate-image-gen-mcp]] ===== C) Instalace uv a spuštění ultimate-gemini-mcp ===== Zdrojový kód MCP serveru: [[https://github.com/anand-92/ultimate-image-gen-mcp|github.com/anand-92/ultimate-image-gen-mcp]] Pro instalaci jsem musel nainstalovat nejdříve uvw a pak nainstalovat MCP server: <code bash> # Install uv if you haven't already curl -LsSf https://astral.sh/uv/install.sh | sh # Install and run the server uvx ultimate-gemini-mcp </code> ===== D) Konfigurace ultimate-gemini-mcp v opencode.json ===== Takto vypadá moje konfigurace ''%%opencode.json%%'': <code json> { "$schema": "https://opencode.ai/config.json", "mcp": { "ultimate-gemini-mcp": { "type": "local", "command": ["uvx", "ultimate-gemini-mcp@latest"], "environment": { "GEMINI_API_KEY": "{file:./gemini.key}", "OUTPUT_DIR": "/home/ubuntu/gemini_images" } } }, "tools": { "ultimate-gemini-mcp_*": false } } </code> ==== OUTPUT_DIR (proč ho nastavuji a proč volím absolutní cestu) ==== Musel jsem nastavit výstupní složku. Je nastavena na defaultní ''%%~/gemini_images%%'', ale raději jsem ji dal do absolutní cesty a dal jsem informace i agentovi. Prakticky mi to zjednodušuje práci napříč projekty: absolutní cesta neřeší, odkud OpenCode/MCP server běží, a výsledky ukládám konzistentně na jedno místo. ==== @latest a automatická aktualizace ==== Tím, že je na konci ''%%latest%%'', tak by se měl MCP server automaticky aktualizovat. ===== E) Omezení přístupu k MCP nástrojům jen pro vybraného agenta ===== Protože mám agenta přímo na psaní promptů pro nano banana, rozhodl jsem se MCP server zpřístupnit jenom jemu. Udělám to ve dvou krocích: - Globálně zakážu přístup všem agentům přes ''%%tools%%'' v ''%%opencode.json%%'' (pattern ''%%ultimate-gemini-mcp_*%%''). - V konfiguraci konkrétního agenta přístup explicitně povolím (poslední pravidlo přebíjí). Tady je konfigurace agenta: <code markdown> --- description: Orchestrates the complete website creation workflow from initial inputs to final HTML, managing 5 specialized subagents through a structured pipeline. Supports both single-page and multi-page websites with shared design system. mode: primary permission: task: "*": "deny" "01-strategicky-analytik": "allow" "02-informacni-architekt": "allow" "03-web-design-director": "allow" "04-konverzni-copywriter": "allow" "05-frontend-developer": "allow" permission: external_directory: "/home/ubuntu/gemini_images": "allow" "/home/ubuntu/gemini_images/*": "allow" --- </code> Agenta budu volat z různých projektů, tak jsem mu dal i právo přístupu do složky ''%%gemini_images%%'', aby se mě pořád neptal na svolení. ===== Bezpečnost a doporučení ===== * **Neukládám ''%%GEMINI_API_KEY%%'' do ''%%opencode.json%%''**; používám ''%%{file:./gemini.key}%%''. * **''%%gemini.key%%'' nepřidávám do gitu**; typicky ho dávám do ''%%.gitignore%%'' (doporučení) a sdílím ho jen bezpečným kanálem. * ''%%OUTPUT_DIR%%'' držím mimo repozitář a beru ho jako pracovní výstupní složku. ===== Troubleshooting ===== * ''%%opencode mcp list%%'' neukazuje server: spouštím příkaz v projektové složce, kde mám ''%%opencode.json%%'' (pokud konfiguraci nemám globálně). * Server je nakonfigurovaný, ale negeneruje výstupy: ověřím, že existuje a je zapisovatelný adresář nastavený v ''%%OUTPUT_DIR%%''. * Autentizace nefunguje: ověřím, že ''%%gemini.key%%'' leží vedle ''%%opencode.json%%'' a obsahuje pouze samotný API klíč bez dalších znaků. ===== Závěr / Výstupy ===== Zprovoznil jsem MCP generování obrázků v OpenCode nejdřív přes ''%%nano-banana-pro%%'' a po narážení na limitace se vstupními obrázky jsem přešel na ''%%ultimate-gemini-mcp%%'' s explicitním ''%%OUTPUT_DIR%%'' a kontrolou přístupů na úrovni agentů. ai/platformy/opencode/gemini-mcp.txt Poslední úprava: 2026/03/12 20:17autor: Petr Nosek