"""
Script de prueba para verificar que los servidores MCP están configurados correctamente.
"""
import sys
import subprocess
import json
def test_mcp_server(server_name, python_path, script_path):
"""Prueba un servidor MCP enviando un mensaje de inicialización."""
print(f"\n{'='*60}")
print(f"Probando servidor: {server_name}")
print(f"Python: {python_path}")
print(f"Script: {script_path}")
print(f"{'='*60}\n")
try:
# Mensaje de inicialización MCP
init_message = {
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {
"name": "test-client",
"version": "1.0.0"
}
}
}
# Convertir a JSON y añadir nueva línea
message_str = json.dumps(init_message) + "\n"
# Ejecutar el servidor
process = subprocess.Popen(
[python_path, script_path],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True
)
# Enviar mensaje de inicialización
stdout, stderr = process.communicate(input=message_str, timeout=5)
print("STDOUT:")
print(stdout)
if stderr:
print("\nSTDERR:")
print(stderr)
print(f"\n✓ Servidor {server_name} responde correctamente")
return True
except subprocess.TimeoutExpired:
process.kill()
print(f"\n✗ Timeout: El servidor {server_name} no respondió en 5 segundos")
return False
except Exception as e:
print(f"\n✗ Error al probar {server_name}: {str(e)}")
return False
def main():
python_path = "c:/Users/Melvisoft/Downloads/chatIA/backend/venv/Scripts/python.exe"
servers = [
{
"name": "melvichat",
"script": "c:/Users/Melvisoft/Downloads/chatIA/mcp_server/server.py"
},
{
"name": "sqlserver-retailpos",
"script": "c:/Users/Melvisoft/Downloads/chatIA/mcp_server/sql_server_mcp.py"
}
]
print("Iniciando pruebas de servidores MCP...")
results = []
for server in servers:
result = test_mcp_server(server["name"], python_path, server["script"])
results.append((server["name"], result))
print("\n" + "="*60)
print("RESUMEN DE PRUEBAS")
print("="*60)
for name, result in results:
status = "✓ OK" if result else "✗ FALLO"
print(f"{name:30} {status}")
all_passed = all(result for _, result in results)
if all_passed:
print("\n✓ Todos los servidores MCP están funcionando correctamente")
print("\nSi no aparecen en la lista de MCP, intenta:")
print("1. Reiniciar la aplicación Antigravity/Claude Desktop")
print("2. Verificar que el archivo mcp_config.json esté en la ubicación correcta")
print("3. Revisar los logs de la aplicación cliente MCP")
else:
print("\n✗ Algunos servidores tienen problemas")
return 0 if all_passed else 1
if __name__ == "__main__":
sys.exit(main())