585c6a4ca4
- server.py: MCP-сервер (stdio + streamable HTTP), инструменты generate_image / list_image_models - два бэкенда: chat/completions (Gemini Image, понимает правку по референсу) и images/generations (FLUX, GPT-Image) - ключ RouterAI берётся из env или ~/.hermes/models.yaml автоматически - retry на 429/5xx, картинка сохраняется файлом (~/.hermes/image_cache/mcp-gen) - test_client.py / test_edit.py: проверка по протоколу, включая image-to-image - README: установка, настройка, подключение к Hermes/opencode, питфоллы
31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
|
"""Проверка image-to-image: правка существующей картинки по референсу."""
|
|
import asyncio, os, sys
|
|
from mcp import ClientSession, StdioServerParameters
|
|
from mcp.client.stdio import stdio_client
|
|
|
|
PY = "/usr/local/lib/hermes-agent/venv/bin/python"
|
|
SERVER = "/opt/routerai-image-mcp/server.py"
|
|
REF = sys.argv[1]
|
|
|
|
|
|
async def main() -> None:
|
|
params = StdioServerParameters(
|
|
command=PY, args=[SERVER],
|
|
env={**os.environ, "IMAGE_MCP_OUT_DIR": "/tmp/mcp-img-test"},
|
|
)
|
|
async with stdio_client(params) as (r, w):
|
|
async with ClientSession(r, w) as s:
|
|
await s.initialize()
|
|
res = await s.call_tool("generate_image", {
|
|
"prompt": "Оставь кота как есть, но поменяй фон на зимний: падает снег, ёлки.",
|
|
"model": "google/gemini-3.1-flash-image",
|
|
"reference_images": [REF],
|
|
"filename": "kot-edit.png",
|
|
})
|
|
print(res.content[0].text)
|
|
print("isError:", res.isError)
|
|
|
|
|
|
asyncio.run(main())
|