#!/usr/bin/env node
/**
* Script para validar se o servidor MCP está configurado corretamente
*/
import { existsSync, readFileSync } from 'fs';
import { resolve, dirname } from 'path';
import { fileURLToPath } from 'url';
import dotenv from 'dotenv';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
console.log('🔍 Validando configuração do MCP Spotify Server...\n');
// 1. Verificar se o build existe
const distPath = resolve(__dirname, 'dist/index.js');
if (!existsSync(distPath)) {
console.log('❌ Build não encontrado! Execute: npm run build');
process.exit(1);
}
console.log('✅ Build encontrado:', distPath);
// 2. Verificar arquivo .env
const envPath = resolve(__dirname, '.env');
if (!existsSync(envPath)) {
console.log('❌ Arquivo .env não encontrado!');
console.log(' Execute: cp env.example .env');
console.log(' E configure suas credenciais do Spotify');
process.exit(1);
}
console.log('✅ Arquivo .env encontrado');
// 3. Verificar variáveis de ambiente
dotenv.config({ path: envPath });
const requiredVars = ['SPOTIFY_CLIENT_ID', 'SPOTIFY_CLIENT_SECRET', 'SPOTIFY_REDIRECT_URI'];
const missingVars = requiredVars.filter(varName => !process.env[varName] || process.env[varName].includes('your_') || process.env[varName].includes('aqui'));
if (missingVars.length > 0) {
console.log('❌ Variáveis de ambiente não configuradas:');
missingVars.forEach(varName => console.log(` - ${varName}`));
process.exit(1);
}
console.log('✅ Variáveis de ambiente configuradas');
// 4. Verificar se o servidor pode ser importado
try {
// Não importamos o servidor completo, apenas verificamos se o arquivo existe e é válido
const distContent = readFileSync(distPath, 'utf-8');
if (!distContent.includes('Server')) {
console.log('⚠️ Build pode estar desatualizado. Execute: npm run build');
}
console.log('✅ Build válido');
} catch (error) {
console.log('❌ Erro ao validar build:', error.message);
process.exit(1);
}
// 5. Mostrar informações de configuração
console.log('\n📋 Informações de configuração:');
console.log(` CWD: ${__dirname}`);
console.log(` Build: ${distPath}`);
console.log(` Client ID: ${process.env.SPOTIFY_CLIENT_ID.substring(0, 10)}...`);
console.log(` Redirect URI: ${process.env.SPOTIFY_REDIRECT_URI}`);
// 6. Sugerir configuração do MCP client
console.log('\n📝 Configuração sugerida para ~/.cursor/mcp.json:');
console.log(JSON.stringify({
mcpServers: {
spotify: {
command: 'node',
args: ['dist/index.js'],
cwd: __dirname,
env: {
SPOTIFY_CLIENT_ID: process.env.SPOTIFY_CLIENT_ID,
SPOTIFY_CLIENT_SECRET: process.env.SPOTIFY_CLIENT_SECRET,
SPOTIFY_REDIRECT_URI: process.env.SPOTIFY_REDIRECT_URI
}
}
}
}, null, 2));
console.log('\n✅ Validação concluída!');
console.log('\n💡 Dica: Copie a configuração acima para ~/.cursor/mcp.json');