Skip to main content
Glama

OpenXAI MCP Server

by Cappybara12
deploy-openxai-studio.js11.7 kB
#!/usr/bin/env node import axios from 'axios'; import fs from 'fs-extra'; import { createInterface } from 'readline'; class OpenXAIStudioDeployer { constructor() { this.apiUrl = 'https://api.openxai.studio'; this.studioUrl = 'https://studio.openxai.ai'; this.config = {}; this.rl = createInterface({ input: process.stdin, output: process.stdout }); } async question(prompt) { return new Promise((resolve) => { this.rl.question(prompt, resolve); }); } async loadConfig() { try { this.config = await fs.readJSON('config/openxai-studio.json'); } catch (error) { console.log('⚠️ No OpenXAI Studio config found. Run `npm run setup:openxai-studio` first'); process.exit(1); } } async deploy() { console.log('🌐 OpenXAI Studio Deployment Guide'); console.log('Decentralized AI Model Deployment'); console.log('===============================\n'); console.log('🎯 To deploy your model, follow these steps:'); console.log(''); console.log('1. 🌐 Visit OpenXAI Studio App Store:'); console.log(' https://studio.openxai.org/app-store'); console.log(''); console.log('2. 🔗 Connect your Web3 wallet (MetaMask, WalletConnect, etc.)'); console.log(''); console.log('3. 🤖 Browse and select your model from these categories:'); console.log(' • General: qwen, deepseek-r1, llama models'); console.log(' • Vision: llama-3.2-vision, qwen2-vl'); console.log(' • Embedding: text-embedding models'); console.log(' • Code: codelama, qwen2.5-coder'); console.log(''); console.log('4. ⚙️ Choose model parameters (1.5b, 7b, 32b, etc.)'); console.log(''); console.log('5. 🚀 Select deployment type (X node for decentralized)'); console.log(''); console.log('6. 🔥 Click deploy button and wait 2-5 minutes'); console.log(''); console.log('7. 📊 Go to /deployments section to access your deployment'); console.log(''); console.log('8. 🔑 Use provided credentials to login to your deployed model'); console.log(''); const shouldContinue = await this.question('Would you like to simulate the deployment process? (y/n): '); if (shouldContinue.toLowerCase() !== 'y') { console.log(''); console.log('🎉 Happy deploying! Visit https://studio.openxai.org/app-store to get started!'); console.log(''); return; } await this.loadConfig(); try { // Step 1: Connect Web3 wallet console.log('🔗 Step 1: Connect Web3 Wallet'); const walletConnection = await this.connectWallet(); // Step 2: Select model and configure console.log('🤖 Step 2: Configure Model Deployment'); const modelDeployment = await this.configureModelDeployment(); // Step 3: Initialize X node deployment console.log('⚙️ Step 3: Initialize X Node Deployment'); const xnodeConfig = await this.initializeXNodeDeployment(modelDeployment); // Step 4: One-click deployment console.log('🚀 Step 4: One-Click Deployment'); const deployment = await this.executeOneClickDeployment(xnodeConfig); // Step 5: Monitor deployment progress console.log('⏳ Step 5: Monitoring Deployment (2-5 minutes)'); const deploymentResult = await this.monitorDeployment(deployment.id); // Step 6: Get credentials and access info console.log('🔑 Step 6: Retrieving Access Credentials'); const credentials = await this.getDeploymentCredentials(deployment.id); // Step 7: Save deployment info await this.saveDeploymentInfo(deployment, credentials); console.log('\n✅ Deployment completed successfully!'); console.log('🎉 Your model is now deployed on OpenXAI Studio!'); console.log('═══════════════════════════════════════════════════════════════'); console.log(`🌐 Access URL: ${credentials.accessUrl}`); console.log(`👤 Username: ${credentials.username}`); console.log(`🔐 Password: ${credentials.password}`); console.log(`🤖 Model: ${this.config.openxai_studio.model.displayName}`); console.log(`📊 Parameters: ${this.config.openxai_studio.model.parameterSize}`); console.log(`⚡ Resources: ${this.config.openxai_studio.resources.ram} RAM, ${this.config.openxai_studio.resources.cpu} CPU cores`); console.log(`💳 Subscription: ${this.config.openxai_studio.subscription.name}`); console.log('═══════════════════════════════════════════════════════════════'); console.log('\n🎯 Next steps:'); console.log('1. Visit the access URL'); console.log('2. Login with your credentials'); console.log('3. Start using your decentralized AI model!'); console.log('\n📊 Check status: npm run status'); } catch (error) { console.error('❌ Deployment failed:', error.message); throw error; } finally { this.rl.close(); } } async connectWallet() { console.log(` Connecting ${this.config.openxai_studio.wallet.type} wallet...`); // Simulate wallet connection process console.log(' 📱 Opening wallet connection...'); console.log(' ✅ Wallet connected successfully'); console.log(' 🔐 Decentralized access enabled'); return { type: this.config.openxai_studio.wallet.type, connected: true, address: '0x' + Math.random().toString(16).substr(2, 40), // Simulate wallet address timestamp: new Date().toISOString() }; } async configureModelDeployment() { const modelConfig = this.config.openxai_studio.model; const resourceConfig = this.config.openxai_studio.resources; console.log(` Model: ${modelConfig.displayName}`); console.log(` Parameters: ${modelConfig.parameterSize}`); console.log(` Type: ${modelConfig.type}`); console.log(` RAM: ${resourceConfig.ram}`); console.log(` Storage: ${resourceConfig.storage}`); console.log(` CPU: ${resourceConfig.cpu} cores`); console.log(' ✅ Configuration validated'); return { model: modelConfig, resources: resourceConfig, validated: true }; } async initializeXNodeDeployment(modelDeployment) { console.log(' 🔍 Finding available X nodes...'); console.log(' 📊 Analyzing resource requirements...'); console.log(' 🌐 Selecting optimal node distribution...'); // Simulate X node selection process await new Promise(resolve => setTimeout(resolve, 2000)); const xnodeConfig = { nodes: [ { id: 'xnode-us-east-1', location: 'US East', cpu: '25%', status: 'selected' }, { id: 'xnode-eu-west-1', location: 'EU West', cpu: '35%', status: 'selected' }, { id: 'xnode-asia-1', location: 'Asia Pacific', cpu: '40%', status: 'selected' } ], distribution: 'load-balanced', redundancy: 'high' }; console.log(' ✅ X nodes selected:'); xnodeConfig.nodes.forEach(node => { console.log(` - ${node.id} (${node.location}) - CPU: ${node.cpu}`); }); return xnodeConfig; } async executeOneClickDeployment(xnodeConfig) { console.log(' 🚀 Initiating one-click deployment...'); console.log(' 📦 Preparing deployment package...'); console.log(' 🔄 Distributing to X nodes...'); // Simulate deployment initiation const deployment = { id: 'deploy-' + Date.now(), status: 'initializing', model: this.config.openxai_studio.model.name, subscription: this.config.openxai_studio.subscription.type, xnodes: xnodeConfig.nodes, startTime: new Date().toISOString() }; console.log(` ✅ Deployment initiated: ${deployment.id}`); return deployment; } async monitorDeployment(deploymentId) { console.log(` 📊 Monitoring deployment ${deploymentId}...`); const stages = [ { name: 'Initializing X nodes', duration: 30 }, { name: 'Loading model weights', duration: 60 }, { name: 'Distributing computation', duration: 45 }, { name: 'Testing connections', duration: 30 }, { name: 'Finalizing deployment', duration: 15 } ]; for (const stage of stages) { console.log(` ⏳ ${stage.name}...`); // Simulate progress for (let i = 0; i <= 100; i += 20) { process.stdout.write(`\r 📈 Progress: ${i}% - ${stage.name}`); await new Promise(resolve => setTimeout(resolve, stage.duration * 10)); } console.log(`\r ✅ ${stage.name} completed`); } console.log(' 🎉 Deployment successful!'); return { id: deploymentId, status: 'completed', completedAt: new Date().toISOString(), totalTime: '3m 45s' }; } async getDeploymentCredentials(deploymentId) { console.log(' 🔑 Generating access credentials...'); // Simulate credential generation await new Promise(resolve => setTimeout(resolve, 1000)); const credentials = { deploymentId: deploymentId, username: 'user_' + Math.random().toString(36).substr(2, 8), password: Math.random().toString(36).substr(2, 12), accessUrl: `https://deploy-${deploymentId}.openxai.studio`, apiEndpoint: `https://api-${deploymentId}.openxai.studio`, validUntil: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString() // 30 days }; console.log(' ✅ Credentials generated'); console.log(' 🔐 Access configured'); return credentials; } async saveDeploymentInfo(deployment, credentials) { const deploymentInfo = { id: deployment.id, provider: 'openxai-studio', type: 'decentralized', model: this.config.openxai_studio.model, resources: this.config.openxai_studio.resources, subscription: this.config.openxai_studio.subscription, credentials: credentials, deployment: deployment, status: 'active', deployed_at: new Date().toISOString(), config: this.config }; await fs.ensureDir('deployments'); await fs.writeJSON(`deployments/${deployment.id}.json`, deploymentInfo, { spaces: 2 }); // Update main deployments list let deployments = []; try { deployments = await fs.readJSON('deployments/list.json'); } catch (error) { // File doesn't exist, start with empty array } deployments.push(deploymentInfo); await fs.writeJSON('deployments/list.json', deployments, { spaces: 2 }); // Create quick access file const quickAccess = { url: credentials.accessUrl, username: credentials.username, password: credentials.password, model: this.config.openxai_studio.model.displayName, deployed: new Date().toISOString() }; await fs.writeJSON('deployments/quick-access.json', quickAccess, { spaces: 2 }); console.log('\n💾 Deployment info saved'); } } // Run the deployment const deployer = new OpenXAIStudioDeployer(); deployer.deploy().catch(console.error);

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Cappybara12/mcpopenxAI'

If you have feedback or need assistance with the MCP directory API, please join our Discord server