diagnose-connection.sh•6.89 kB
#!/bin/bash
# 🔧 Solucionador de Problemas de Conexión MCP
# Diagnostica y arregla problemas de conexión entre Claude Desktop y el servidor MCP
echo "🔧 DIAGNÓSTICO DE CONEXIÓN MCP"
echo "=============================="
cd /Users/janetsepulvedacorrea/Desktop/AGENTES/treepod-financial-mcp
echo "📍 Directorio actual: $(pwd)"
echo ""
# 1. Verificar que el archivo de configuración sea válido
echo "🔍 PASO 1: Verificando configuración de Claude Desktop..."
CONFIG_FILE="$HOME/Library/Application Support/Claude/claude_desktop_config.json"
if [ -f "$CONFIG_FILE" ]; then
echo "✅ Archivo de configuración existe"
# Verificar que sea JSON válido
if python3 -m json.tool "$CONFIG_FILE" > /dev/null 2>&1; then
echo "✅ JSON válido"
else
echo "❌ JSON inválido - corrigiendo..."
cat > "$CONFIG_FILE" << 'EOF'
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/janetsepulvedacorrea/Desktop",
"/Users/janetsepulvedacorrea/Downloads"
]
},
"treepod-financial": {
"command": "node",
"args": [
"/Users/janetsepulvedacorrea/Desktop/AGENTES/treepod-financial-mcp/index.js"
],
"env": {}
}
}
}
EOF
echo "✅ JSON corregido"
fi
else
echo "❌ Archivo de configuración no existe - creando..."
mkdir -p "$HOME/Library/Application Support/Claude"
cat > "$CONFIG_FILE" << 'EOF'
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/janetsepulvedacorrea/Desktop",
"/Users/janetsepulvedacorrea/Downloads"
]
},
"treepod-financial": {
"command": "node",
"args": [
"/Users/janetsepulvedacorrea/Desktop/AGENTES/treepod-financial-mcp/index.js"
],
"env": {}
}
}
}
EOF
echo "✅ Archivo de configuración creado"
fi
echo ""
# 2. Verificar problema común: proceso en segundo plano
echo "🔍 PASO 2: Verificando procesos en conflicto..."
if pgrep -f "treepod-financial" > /dev/null; then
echo "⚠️ Procesos treepod-financial ejecutándose - eliminando..."
pkill -f "treepod-financial"
sleep 2
echo "✅ Procesos eliminados"
else
echo "✅ No hay procesos en conflicto"
fi
echo ""
# 3. Verificar que el servidor responde correctamente al protocolo MCP
echo "🔍 PASO 3: Verificando protocolo MCP..."
# Crear un script de prueba que simule la conexión de Claude Desktop
cat > test_mcp_connection.js << 'EOF'
#!/usr/bin/env node
// Script para probar la conexión MCP
import { spawn } from 'child_process';
console.log('🧪 Probando conexión MCP...');
const child = spawn('node', ['index.js'], {
stdio: ['pipe', 'pipe', 'pipe']
});
// Enviar mensaje de inicialización MCP
const initMessage = {
jsonrpc: "2.0",
id: 1,
method: "initialize",
params: {
protocolVersion: "2024-11-05",
capabilities: {},
clientInfo: {
name: "test-client",
version: "1.0.0"
}
}
};
setTimeout(() => {
try {
child.stdin.write(JSON.stringify(initMessage) + '\n');
} catch (error) {
console.log('❌ Error enviando mensaje:', error.message);
}
}, 1000);
child.stdout.on('data', (data) => {
console.log('📥 Respuesta del servidor:', data.toString());
});
child.stderr.on('data', (data) => {
console.log('📥 Mensaje del servidor:', data.toString());
});
child.on('close', (code) => {
console.log(`🔚 Servidor cerrado con código: ${code}`);
});
child.on('error', (error) => {
console.log('❌ Error:', error.message);
});
// Terminar después de 5 segundos
setTimeout(() => {
child.kill();
console.log('✅ Prueba completada');
}, 5000);
EOF
chmod +x test_mcp_connection.js
echo "▶️ Ejecutando prueba de protocolo MCP..."
node test_mcp_connection.js
echo ""
# 4. Verificar el problema más común: conflicto de versiones
echo "🔍 PASO 4: Verificando versiones..."
echo "Node.js: $(node --version)"
echo "npm: $(npm --version)"
# Verificar que las dependencias sean las correctas
if [ -d "node_modules/@modelcontextprotocol/sdk" ]; then
echo "✅ @modelcontextprotocol/sdk instalado"
SDK_VERSION=$(node -p "require('./node_modules/@modelcontextprotocol/sdk/package.json').version" 2>/dev/null || echo "unknown")
echo " Versión: $SDK_VERSION"
else
echo "❌ @modelcontextprotocol/sdk NO instalado"
fi
echo ""
# 5. Crear un servidor MCP mínimo para probar
echo "🔍 PASO 5: Creando servidor MCP mínimo para diagnóstico..."
cat > minimal_test_server.js << 'EOF'
#!/usr/bin/env node
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
console.error('🧪 Servidor MCP mínimo iniciando...');
const server = new McpServer({
name: 'test-server',
version: '1.0.0',
});
// Registrar una herramienta simple de prueba
server.registerTool(
'test_tool',
{
title: 'Herramienta de prueba',
description: 'Una herramienta simple para probar la conexión MCP',
inputSchema: {
type: 'object',
properties: {},
},
},
async () => {
return {
content: [{
type: 'text',
text: '✅ ¡Conexión MCP funcionando correctamente!'
}]
};
}
);
const transport = new StdioServerTransport();
server.connect(transport).then(() => {
console.error('🎯 Servidor MCP mínimo listo para conexiones');
}).catch((error) => {
console.error('❌ Error conectando servidor:', error);
});
EOF
chmod +x minimal_test_server.js
echo "✅ Servidor mínimo creado: minimal_test_server.js"
echo ""
# 6. Limpiar archivos temporales
rm -f test_mcp_connection.js
echo "🔧 SOLUCIONES RECOMENDADAS:"
echo "=========================="
echo ""
echo "1. 🔄 REINICIO COMPLETO DE CLAUDE:"
echo " killall Claude"
echo " sleep 5"
echo " # Abrir Claude Desktop manualmente"
echo ""
echo "2. 🧪 PROBAR SERVIDOR MÍNIMO:"
echo " - Reemplaza temporalmente la configuración con:"
echo " \"command\": \"node\","
echo " \"args\": [\"$(pwd)/minimal_test_server.js\"]"
echo ""
echo "3. 🔧 SI EL PROBLEMA PERSISTE:"
echo " - Ejecuta: sudo npm install -g @modelcontextprotocol/cli"
echo " - Prueba: mcp-server-test $(pwd)/index.js"
echo ""
echo "4. 📋 VERIFICAR LOGS DE CLAUDE:"
echo " - Abre: ~/Library/Logs/Claude/"
echo " - Busca errores relacionados con 'treepod-financial'"
echo ""
echo "✅ Diagnóstico completado"
echo ""
echo "💡 PRÓXIMO PASO:"
echo "1. Ejecuta: killall Claude"
echo "2. Abre Claude Desktop"
echo "3. Ve a conectores y verifica si treepod-financial tiene toggle"
echo "4. Si no, comparte los logs de Claude Desktop"