Eyevinn Open Source Cloud MCP Server

Official
import { Context, createInstance, getInstance } from '@osaas/client-core'; import { delay, waitForInstanceReady } from './util.js'; import * as Minio from 'minio'; import { MinioMinio, MinioMinioConfig } from '@osaas/client-services'; import { randomBytes } from 'crypto'; const SERVICE_ID = 'minio-minio'; export interface MinioBucket { name: string; endpoint: string; accessKeyId: string; secretAccessKey: string; } export async function createMinioInstance( ctx: Context, name: string ): Promise<MinioBucket> { const serviceAccessToken = await ctx.getServiceAccessToken(SERVICE_ID); let instance: MinioMinio = await getInstance( ctx, SERVICE_ID, name, serviceAccessToken ); if (!instance) { const rootPassword = randomBytes(16).toString('hex'); const config: MinioMinioConfig = { name, RootUser: 'root', RootPassword: rootPassword }; const newInstance = await createInstance( ctx, SERVICE_ID, serviceAccessToken, config ); if (!newInstance) { throw new Error(`Failed to create instance with name ${name}`); } instance = newInstance; await waitForInstanceReady(SERVICE_ID, name, ctx); await delay(2000); const minioClient = new Minio.Client({ endPoint: new URL(instance.url).hostname, accessKey: 'root', secretKey: instance.RootPassword || '' }); await minioClient.makeBucket(name); } return { name: instance.name, endpoint: instance.url, accessKeyId: 'root', secretAccessKey: instance.RootPassword || '' }; } export async function getMinioInstance(ctx: Context, name: string) { const serviceAccessToken = await ctx.getServiceAccessToken(SERVICE_ID); const instance: MinioMinio = await getInstance( ctx, SERVICE_ID, name, serviceAccessToken ); if (!instance) { throw new Error(`Minio Instance ${name} not found`); } return { name: instance.name, endpoint: instance.url, accessKeyId: 'root', secretAccessKey: instance.RootPassword || '' }; }