Sprint 2 — mcp-replicate-hosted
Image-Generation via MCP statt Bedrock-direkt (Begruendung: bedrock-eu-image-gen-limitation).
Ausgangslage
- mcp-replicate existiert als active local MCP (replicate) — 35 Tools, Flux/SDXL/Whisper/Llama. Laeuft heute lokal via HTTP auf
127.0.0.1:8769/mcp - Hosting-Pattern mcp-hosting-fargate-tunnel bewiesen via mcp-vf-hosted (Fargate + cloudflared-Sidecar, kein ALB)
- Open WebUI fuer VF laeuft mit mcp-vf-hosted als externen MCP-Server angebunden ueber streamable-http
- Marvin’s Vault hat Replicate-API-Token fuer den Account (privat oder VF-spezifisch, je nach Setup)
Ziel
mcp-replicate-hosted als zweiter hosted MCP analog mcp-vf-hosted in av-production deployen, unter eigener Domain mit eigener Scalekit-Resource. Open WebUI bei VF (und ggf. weiteren Kunden) bindet ihn als zweiten External-MCP-Server an.
Konkret: VF-User tippt im Chat „erstelle ein Bild von einem Wein-Tasting-Event-Plakat” → Open WebUI sieht das replicate_create_prediction-Tool → ruft den Replicate-MCP → Bild kommt als URL zurueck → Open WebUI rendert inline.
Architektur
claude.ai / Open WebUI
│ OAuth 2.1 (Scalekit EU) + JWT
▼
Cloudflare Edge (replicate.agenticventures.de)
│
▼
Cloudflare Tunnel (eigene Resource)
│
▼
AWS Fargate Task (av-production, eu-central-1)
├── Container 1: cloudflared (Sidecar)
└── Container 2: mcp-replicate-hosted (FastMCP v2 + ScalekitProvider)
│
▼
Replicate REST API (https://api.replicate.com)
- Token: REPLICATE_API_TOKEN aus AWS Secrets Manager
Konsequenter Mirror des mcp-vf-hosted-Patterns — gleicher Stack-Aufbau, andere Sub-MCP-Inhalte.
Phasen
Phase 1 — Repo + FastMCP-Wrapper (0.5 Tag)
- Neues Repo
~/source/mcps/mcp-replicate-hosted/analog mcp-vf-hosted:src/mcp_replicate_hosted/main.pymit FastMCP v2 + ScalekitProvider + GuardMiddleware (Rate-Limit + Audit + EMERGENCY_DISABLE)- EIN Sub-MCP (mcp-replicate als stdio-Subprozess, via create_proxy)
- Plus Workflow-Prompts (
/image_for_event,/marketing_banner, etc.) wenn sinnvoll
- Kein Dockerfile-Refactor noetig — mcp-replicate ist Python, existing Dockerfile-Pattern wiederverwenden
- CDK-Stack
infra/lib/mcp-replicate-hosted-stack.tsals Copy-Adapt von mcp-vf-hosted-Stack mit angepasstem Service-Name + Secret-Namen + Tunnel-Hostname
Phase 2 — AWS-Deploy (0.5 Tag)
- Secrets Manager in av-production:
mcp-replicate-hosted/upstream-tokensJSON mitREPLICATE_API_TOKENmcp-replicate-hosted/cloudflared-tokenneuer Tunnel-Token
- Cloudflare-Tunnel anlegen via CF-API: „mcp-replicate-hosted” mit Ingress
replicate.agenticventures.de → http://localhost:8080 - Scalekit-Resource anlegen in EU-Region: neuer MCP-Server-Eintrag, Identifier
https://replicate.agenticventures.de/mcp - DNS-Record
replicate.agenticventures.de→<tunnel-id>.cfargotunnel.comproxied - Image bauen + ECR push + Stack deploy
Phase 3 — Integration in VF Open WebUI (0.25 Tag)
- Admin-UI von vf-chat.agenticventures.de → Tools → Add MCP Server
- URL:
https://replicate.agenticventures.de/mcp, Type: Streamable HTTP, OAuth 2.1 - OAuth-Flow durchspielen (mit Andre + Christoph + Marvin)
- Smoke: „erstelle ein Bild von einem Logo fuer VF im minimalist style” → ruft
replicate_create_prediction(model="black-forest-labs/flux-1.1-pro", ...)→ Bild kommt zurueck
Phase 4 — Doku + AVV-Update (0.25 Tag)
- Pattern-File open-webui-fargate-bedrock um Replicate-MCP-Section ergaenzen (Beispiel-Setup im UI)
- Capability-File
intern/capabilities/mcps/mcp-replicate-hosted.mdanalog mcp-vf-hosted - Capability-File
intern/capabilities/repos/mcp-replicate-hosted.mdanalog - VF-AVV: Subprozessor-Liste um Replicate Inc. erweitern, AVV mit Replicate einholen
- DSGVO-Briefing fuer Christoph erweitern: Replicate-Datenflusswege transparent machen
- VF-Kunden-File update mit zweitem hosted MCP
Cost
- Hosting: ~33 €/Mo (gleicher Fargate-Footprint wie mcp-vf-hosted)
- Replicate-API-Calls: Pass-Through an VF
- Flux 1.1 Pro: $0.04/Bild
- SDXL: $0.0025/Bild
- Image-to-Image (Photon, Flux Fill): $0.04-0.06/Bild
- Realistic fuer 10 Bilder/Woche pro User × 3 User × 4 Wochen = 120 Bilder/Mo × 5/Mo
- Bei intensiver Nutzung (Marketing-Material-Generation): kann auf $50-100/Mo gehen
Decision-Forks
| Fork | Empfehlung | Wenn anders |
|---|---|---|
| Wer zahlt Replicate? | Pass-Through an VF (eigener Account oder unser Account mit Klausel) | Wir zahlen + im Recurring-Pricing einkalkulieren |
| Wo Replicate-API-Token? | Eigener VF-spezifischer Token mit Spending-Limit | Unser Sammel-Token (Risk: Cost-Vermischung) |
| Welche Models freigeben? | Whitelist: Flux 1.1 Pro, SDXL, ggf. Recraft fuer Vector | alle Models frei (Risk: User waehlt $1/Bild-Model) |
| Multi-Tenant-Replicate-MCP? | nein, ein hosted-MCP-Stack pro Kunde | wenn 5+ Kunden Image-Gen brauchen, Multi-Tenant via Forward-User-Info-Headers + Token-Mapping |
Sicherheits-Notizen
- Prompt-Injection-Risk ist hier real — User-Prompts gehen direkt in Image-Model. Replicate hat Content-Moderation eingebaut, aber nicht 100% zuverlaessig. Bei Production: GuardMiddleware-Check auf NSFW-Keyword-Whitelist
- Spending-Limit im Replicate-Dashboard setzen ($50/Mo Initial) — verhindert Cost-Explosion bei Bug oder Missbrauch
- Rate-Limit im hosted MCP analog mcp-vf-hosted (60/min, 1000/h pro Subject-Hash)
- Audit-Log pro Image-Gen-Call: Model, Prompt-Length, Cost-Estimate (von Replicate-Response), Output-URL
Related
- _index — Open WebUI fuer VF (Sprint 1)
- bedrock-eu-image-gen-limitation — Begruendung warum Image-Gen via MCP
- replicate — bestehendes lokales mcp-replicate
- mcp-hosting-fargate-tunnel — Hosting-Pattern
- mcp-vf-hosted — Vorbild-Stack