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
JavaScript
/**
* 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;