UNPKG

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

111 lines (92 loc) • 4.61 kB
#!/usr/bin/env node /** * Validate Key Utility for MCP Prompt Optimizer * Focused validation without full status display */ const CloudApiKeyManager = require('./api-key-manager'); async function validateKey() { console.log('šŸ”‘ MCP Prompt Optimizer - API Key Validation\n'); try { // Get API key from environment let apiKey; try { apiKey = CloudApiKeyManager.getApiKey(); } catch (error) { console.error('āŒ No API key found'); console.log('\nšŸ“ Set your API key:'); console.log(' export OPTIMIZER_API_KEY=sk-opt-your-key-here'); console.log('\nšŸ†“ Get your API key:'); console.log(' https://promptoptimizer-blog.vercel.app/pricing'); process.exit(1); } console.log(`šŸ”‘ Testing API key: ${apiKey.substring(0, 16)}...`); // Validate format first if (!apiKey.startsWith('sk-opt-') && !apiKey.startsWith('sk-team-')) { console.error('āŒ Invalid API key format'); console.log('\nāœ… Valid formats:'); console.log(' - Individual: sk-opt-...'); console.log(' - Team: sk-team-...'); console.log('\nšŸ”§ Get a properly formatted key at:'); console.log(' https://promptoptimizer-blog.vercel.app/pricing'); process.exit(1); } // Create manager and validate const manager = new CloudApiKeyManager(apiKey); console.log('ā³ Connecting to backend...'); const validation = await manager.validateAndPrepare(); console.log('āœ… API Key Validation: SUCCESS\n'); console.log('šŸ“Š Key Details:'); console.log(` Tier: ${validation.tier}`); console.log(` Type: ${apiKey.startsWith('sk-team-') ? 'Team' : 'Individual'}`); if (validation.quotaStatus.unlimited) { console.log(' Quota: Unlimited optimizations ✨'); } else { console.log(` Quota: ${validation.quotaStatus.remaining}/${validation.quotaStatus.limit} remaining`); } console.log('\n✨ Available Features:'); const features = validation.features || {}; console.log(' āœ… Professional AI optimization'); console.log(' āœ… AI context detection'); console.log(' āœ… Template management'); console.log(' āœ… Cloud processing'); if (validation.tier !== 'explorer') { console.log(' āœ… Team collaboration'); console.log(' āœ… Optimization insights'); } console.log('\nšŸš€ Your API key is ready to use!'); console.log('\nšŸ“– Next Steps:'); console.log(' 1. Add to Claude Desktop config:'); console.log(' "env": { "OPTIMIZER_API_KEY": "' + apiKey + '" }'); console.log(' 2. Start optimizing: Use the optimize_prompt tool'); console.log(' 3. Check status: mcp-prompt-optimizer check-status'); } catch (error) { console.error(`āŒ Validation Failed: ${error.message}\n`); if (error.message.includes('Network error')) { console.log('🌐 Connection Issue:'); console.log(' - Check your internet connection'); console.log(' - Verify firewall/proxy settings'); console.log(' - Try again in a moment'); } else if (error.message.includes('401') || error.message.includes('Invalid')) { console.log('šŸ”‘ API Key Issue:'); console.log(' - Verify your subscription is active'); console.log(' - Check key format (sk-opt-* or sk-team-*)'); console.log(' - Get a new key: https://promptoptimizer-blog.vercel.app/pricing'); } else if (error.message.includes('quota')) { console.log('šŸ“Š Quota Issue:'); console.log(' - Your monthly quota is exhausted'); console.log(' - Upgrade: https://promptoptimizer-blog.vercel.app/pricing'); console.log(' - Check usage: mcp-prompt-optimizer check-status'); } else { console.log('šŸ”§ Troubleshooting:'); console.log(' 1. Clear cache: mcp-prompt-optimizer clear-cache'); console.log(' 2. Check dashboard: https://promptoptimizer-blog.vercel.app/dashboard'); console.log(' 3. Contact support: support@promptoptimizer.help'); } process.exit(1); } } // Run if called directly if (require.main === module) { validateKey(); } module.exports = validateKey;