mcp-prompt-optimizer
Version:
Professional cloud-based MCP server for AI-powered prompt optimization with intelligent context detection, team collaboration, enterprise-grade features, startup validation, and robust API key management. Universal compatibility with Claude Desktop, Curso
143 lines (122 loc) ⢠6.77 kB
JavaScript
/**
* Check Status Utility for MCP Prompt Optimizer
* Provides detailed status information about API key and service
*/
const CloudApiKeyManager = require('./api-key-manager');
async function checkStatus() {
console.log('š MCP Prompt Optimizer - API Key Status Check\n');
try {
// Get API key from environment
let apiKey;
try {
apiKey = CloudApiKeyManager.getApiKey();
} catch (error) {
console.error('ā No API key found\n');
console.log('š Setup Instructions:');
console.log(' 1. Get your API key from: https://promptoptimizer-blog.vercel.app/pricing');
console.log(' 2. Set environment variable: export OPTIMIZER_API_KEY=sk-opt-your-key-here');
console.log(' 3. Add to Claude Desktop config:');
console.log(' {');
console.log(' "mcpServers": {');
console.log(' "prompt-optimizer": {');
console.log(' "command": "npx",');
console.log(' "args": ["mcp-prompt-optimizer"],');
console.log(' "env": {');
console.log(' "OPTIMIZER_API_KEY": "sk-opt-your-key-here"');
console.log(' }');
console.log(' }');
console.log(' }');
console.log(' }');
console.log('\nš° Pricing:');
console.log(' - Explorer ($2.99/mo): 5,000 optimizations');
console.log(' - Creator ($25.99/mo): 18,000 optimizations + team features');
console.log(' - Innovator ($69.99/mo): 75,000 optimizations + enterprise features');
process.exit(1);
}
// Create manager and validate key
const manager = new CloudApiKeyManager(apiKey);
console.log(`š API Key: ${manager.formatKeyForDisplay()}`);
console.log(`š” Backend: ${manager.backendUrl}\n`);
console.log('ā³ Validating API key...');
const keyInfo = await manager.getApiKeyInfo();
if (!keyInfo.isValid) {
console.error(`ā API Key Invalid: ${keyInfo.error}\n`);
console.log('š§ Troubleshooting:');
console.log(' 1. Check your API key format (should start with sk-opt- or sk-team-)');
console.log(' 2. Verify your subscription is active at: https://promptoptimizer-blog.vercel.app/dashboard');
console.log(' 3. Get a new API key at: https://promptoptimizer-blog.vercel.app/pricing');
console.log(' 4. Contact support: support@promptoptimizer.help');
process.exit(1);
}
// Display status information
console.log('ā
API Key Status: VALID\n');
console.log('š Subscription Details:');
console.log(` Tier: ${keyInfo.tier.charAt(0).toUpperCase() + keyInfo.tier.slice(1)}`);
console.log(` Type: ${keyInfo.keyType.charAt(0).toUpperCase() + keyInfo.keyType.slice(1)}`);
if (keyInfo.quota.unlimited) {
console.log(' Quota: Unlimited optimizations');
} else {
console.log(` Quota: ${keyInfo.quota.used.toLocaleString()} / ${keyInfo.quota.limit.toLocaleString()} used`);
console.log(` Remaining: ${keyInfo.quota.remaining.toLocaleString()} optimizations`);
const usagePercent = (keyInfo.quota.used / keyInfo.quota.limit) * 100;
if (usagePercent >= 90) {
console.log(' Status: š“ Critical - Quota nearly exhausted');
} else if (usagePercent >= 75) {
console.log(' Status: ā ļø Warning - High usage');
} else {
console.log(' Status: ā
Healthy');
}
}
console.log('\n⨠Available Features:');
const features = keyInfo.features;
if (features.professional_optimization) console.log(' ā
Professional AI optimization');
if (features.auto_save_templates) console.log(' ā
Template auto-save');
if (features.template_search) console.log(' ā
Template search');
if (features.optimization_insights) console.log(' ā
Optimization insights');
// Get additional quota details
try {
console.log('\nā³ Getting detailed quota status...');
const quotaDetails = await manager.getQuotaStatus();
console.log('\nš Detailed Usage:');
if (quotaDetails.quota.unlimited) {
console.log(' Monthly Usage: Unlimited');
} else {
console.log(` Monthly Usage: ${quotaDetails.quota.usage_percentage}%`);
console.log(` Reset Type: ${quotaDetails.quota.reset_type}`);
}
if (quotaDetails.api_key_type === 'team' && quotaDetails.team_info) {
console.log('\nš„ Team Information:');
console.log(` Team: ${quotaDetails.team_info.team_name || 'Unknown'}`);
console.log(` Team ID: ${quotaDetails.team_info.team_id}`);
}
} catch (error) {
console.warn(`\nā ļø Could not get detailed quota status: ${error.message}`);
}
console.log('\nš Quick Actions:');
console.log(' š Check quota: mcp-prompt-optimizer check-status');
console.log(' š Validate key: mcp-prompt-optimizer validate-key');
console.log(' šļø Clear cache: mcp-prompt-optimizer clear-cache');
console.log(' š Dashboard: https://promptoptimizer-blog.vercel.app/dashboard');
if (!keyInfo.quota.unlimited && keyInfo.quota.remaining < keyInfo.quota.limit * 0.1) {
console.log('\nš” Upgrade Suggestion:');
console.log(' Your quota is running low. Consider upgrading:');
console.log(' - Creator ($25.99/mo): 18,000 optimizations + team features');
console.log(' - Innovator ($69.99/mo): 75,000 optimizations + enterprise features');
console.log(' Upgrade at: https://promptoptimizer-blog.vercel.app/pricing');
}
} catch (error) {
console.error(`ā Status check failed: ${error.message}`);
console.log('\nš§ Troubleshooting:');
console.log(' 1. Check your internet connection');
console.log(' 2. Verify backend URL is accessible');
console.log(' 3. Try clearing cache: mcp-prompt-optimizer clear-cache');
console.log(' 4. Contact support: support@promptoptimizer.help');
process.exit(1);
}
}
// Run if called directly
if (require.main === module) {
checkStatus();
}
module.exports = checkStatus;