Vertex AI > Enable all recommended APIs (they should include: Vertex AI API, Cloud Storage API)service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.comimagen-3.0-generate-001) and Imagen 3 Generate Fast (imagen-3.0-fast-generate-001)imagen-3.0-capability-001)image-segmentation-001)europe-west9 in Paris)YOUR_COMPANY-imgstudio-outputYOUR_COMPANY-imgstudio-libraryYOUR_COMPANY-imgstudio-export-configexport-fields-options.json a configuration file specific to your usage that you can find an exemple of in the repository, its purpose is to setup the desired metadata you want to set for your generated content“contextAuthorTeam”), its label (ex: “In which team are you?”), its name (ex: “Associated team(s)”), its tag isMandatory (ex: true) and finally its optionsYOUR_COMPANY-imgstudioManual invocationWatch > Custom > Releases > ApplyCloud Build configuration file (yaml or json)/cloudbuild.yaml_NEXT_PUBLIC_EXPORT_FIELDS_OPTIONS_URIgs://YOUR_COMPANY-imgstudio-export-config/export-fields-options.json_NEXT_PUBLIC_GCS_BUCKET_LOCATIONeurope-west9_NEXT_PUBLIC_VERTEX_API_LOCATIONeurope-west9_NEXT_PUBLIC_GEMINI_MODEL \= gemini-1.5-flash-001_NEXT_PUBLIC_OUTPUT_BUCKETYOUR_COMPANY-imgstudio-output_NEXT_PUBLIC_TEAM_BUCKETYOUR_COMPANY-imgstudio-library_NEXT_PUBLIC_PRINCIPAL_TO_USER_FILTERSadmin-,@company.com so that the user ID jdupont can be extracted_NEXT_PUBLIC_EDIT_ENABLEDfalse if you do not have access yet_NEXT_PUBLIC_SEG_MODELPROJECT_NUMBER-compute@developer.gserviceaccount.comArtifact Registry Writer and Logs WriterInternal if you want to limit IAP users to your GCP org domainExternal if you have some users on a different domain than your GCP org’sYOUR_COMPANY-imgstudioYOUR_COMPANY_DOMAINYOUR_COMPANY-imgstudio-saCloud Datastore UserLogs WriterSecret Manager Secret AccessorService Account Token CreatorStorage Object CreatorStorage Object ViewerVertex AI UserDeploy one revision from an existing container imagelatest image you just build in Cloud BuildYOUR_COMPANY-imgstudio-appeurope-west9)Internal > Allow traffic from external Application Load Balancers3000YOUR_COMPANY-imgstudio-sagcloud beta services identity create --service=iap.googleapis.com --project=PROJECT_IDservice-PROJECT_NUMBER@gcp-sa-iap.iam.gserviceaccount.comCloud Run Invoker role to the previously created/ fetched IAP service accountimgstudioimgstudio.YOUR_COMPANY_DOMAINOffOffdig imgstudio.YOUR_COMPANY_DOMAIN NS +shortApplication Load Balancer (HTTP/HTTPS)Public Facing (external)GlobalGlobal external Application Load BalancerYOUR_COMPANY-imgstudio-lbHTTPSEphemeral (you could also configure a static IP)YOUR_COMPANY-imgstudio-certimgstudio.YOUR_COMPANY_DOMAINYOUR_COMPANY-imgstudio-backServerless Network Endpoint Group > DoneYOUR_COMPANY-imgstudio-negeurope-west9)YOUR_COMPANY-imgstudio-app > CreateOffYOUR_COMPANY-imgstudio-lbimgstudioimgstudio.YOUR_COMPANY_DOMAINYOUR_COMPANY-imgstudio-backIAP-secured Web App User, > SaveNative mode, > Continue(default) (very important you keep it that way)Regioneurope-west9 in Paris)Production rulesmetadatacombinedFilters, Index options 1: Array containstimestamp, Index options 2: Descending__name__, Index options 3: DescendingCollectionhttps://console.firebase.google.com/project/PROJECT_ID/firestore/databases/-default-/rulesYOUR_COMPANY & PROJECT_ID in the Cloud Run service account
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, get, list, create, update: if get(/databases/$(database)/documents/request.auth.uid).data.serviceAccount == 'YOUR_COMPANY-imgstudio-sa@PROJECT_ID.iam.gserviceaccount.com';
allow delete: if false;
}
}
}$ claude mcp add img-studio \
-- python -m otcore.mcp_server <graph>