/ Directorio / Playground / tda
● Comunidad irockel ⚡ Instantáneo

tda

por irockel · irockel/tda

Dale a Claude la capacidad de leer volcados de hilos de Java — bloqueos mutuos, hilos de larga duración, fijación de hilos virtuales, bloqueadores de métodos nativos.

TDA (Thread Dump Analyzer) incluye interfaz gráfica y modo MCP. En modo JAR sin interfaz gráfica, expone 6+ herramientas para analizar registros de volcados, resumir estado, detectar bloqueos mutuos, localizar hilos de larga duración y analizar la fijación de portadores de hilos virtuales.

Por qué usarlo

Características clave

Demo en vivo

Cómo se ve en la práctica

tda.replay ▶ listo
0/0

Instalar

Elige tu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "tda": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/irockel/tda"
      ],
      "_inferred": true
    }
  }
}

Abre Claude Desktop → Settings → Developer → Edit Config. Reinicia después de guardar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "tda": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/irockel/tda"
      ],
      "_inferred": true
    }
  }
}

Cursor usa el mismo esquema mcpServers que Claude Desktop. La configuración del proyecto prevalece sobre la global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "tda": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/irockel/tda"
      ],
      "_inferred": true
    }
  }
}

Haz clic en el icono MCP Servers de la barra lateral de Cline y luego en "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "tda": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/irockel/tda"
      ],
      "_inferred": true
    }
  }
}

Mismo formato que Claude Desktop. Reinicia Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "tda",
      "command": "TODO",
      "args": [
        "See README: https://github.com/irockel/tda"
      ]
    }
  ]
}

Continue usa un array de objetos de servidor en lugar de un mapa.

~/.config/zed/settings.json
{
  "context_servers": {
    "tda": {
      "command": {
        "path": "TODO",
        "args": [
          "See README: https://github.com/irockel/tda"
        ]
      }
    }
  }
}

Añádelo a context_servers. Zed recarga en caliente al guardar.

claude mcp add tda -- TODO 'See README: https://github.com/irockel/tda'

Un solo comando. Verifica con claude mcp list. Quita con claude mcp remove.

Casos de uso

Usos del mundo real: tda

Diagnosticar un bloqueo de JVM a partir de volcados de hilos con TDA

👤 Ingenieros backend de Java ⏱ ~20 min advanced

Cuándo usarlo: La JVM de producción se volvió no responsiva; tienes una serie de volcados kill -3.

Requisitos previos
  • tda.jar descargado — github.com/irockel/tda releases
  • Java 21+ instalado — Para características de análisis de Project Loom
Flujo
  1. Analiza el registro
    parse_log en /tmp/threaddumps.log. Resume: cuántos volcados, hilos por volcado.✓ Copiado
    → Resumen de volcados
  2. Verifica bloqueos mutuos
    check_deadlocks en todos los volcados. ¿Qué hilos, qué bloqueos?✓ Copiado
    → Ciclos de bloqueo si los hay
  3. Encuentra hilos de larga duración
    find_long_running hilos persistentes en todos los volcados. ¿Qué están haciendo?✓ Copiado
    → Lista con cabeceras de pila

Resultado: Un hilo específico + bloqueo + ruta de código responsable del bloqueo.

Errores comunes
  • Los scripts que imprimen en stdout corrompen el flujo JSON-RPC — Usa java -Djava.awt.headless=true -jar tda.jar --mcp sin envolverlo en ningún script que también imprima

Busca fijación de portadores de hilos virtuales en una aplicación Loom

👤 Equipos que adoptan Project Loom ⏱ ~30 min advanced

Cuándo usarlo: Los hilos virtuales no proporcionan la concurrencia esperada — sospecha de fijación.

Flujo
  1. Captura volcados durante la carga
    Recopila volcados de hilos en carga máxima; analízalos en TDA con parse_log.✓ Copiado
    → Volcados cargados
  2. Analiza
    analyze_virtual_threads. Muestra puntos críticos de fijación de portadores y el código Java que los fija (típicamente bloques sincronizados o métodos nativos).✓ Copiado
    → Lista de fijación con pistas de origen

Resultado: Correcciones específicas (ReentrantLock en lugar de synchronized, etc.) respaldadas por evidencia.

Identifica hilos atrapados en métodos nativos

👤 Ingenieros de desempeño en aplicaciones pesadas en JNI ⏱ ~15 min advanced

Cuándo usarlo: Tu aplicación se integra con librerías nativas y sospechas llamadas nativas bloqueantes.

Flujo
  1. Lista hilos bloqueados por nativos
    get_native_threads para volcado #3. ¿En qué métodos nativos están atrapados?✓ Copiado
    → Lista de hilos + marcos nativos

Resultado: Revisión específica de sitios de llamadas JNI específicas.

Combinaciones

Combínalo con otros MCPs para multiplicar por 10

Correlaciona hallazgos a nivel de hilos con métricas de JVM

TDA dice que el bloqueo X está siendo disputado — muestra JVM thread_blocked_seconds para la misma ventana de Prometheus.✓ Copiado
tda + github

Convierte hallazgos en problemas con punteros de código

Para los 3 principales hallazgos de TDA, abre un problema de GitHub vinculando las líneas de código fuente Java sospechosas.✓ Copiado

Herramientas

Lo que expone este MCP

HerramientaEntradasCuándo llamarCoste
parse_log path: str Primer paso, siempre local CPU
get_summary Resumen antes de profundizar 0
check_deadlocks Diagnóstico de bloqueo 0
find_long_running min_dumps?: int Hilos persistentes 0
analyze_virtual_threads Diagnósticos de Loom 0
get_native_threads dump_index?: int Sospecha de JNI 0
get_zombie_threads Reubicaciones de memoria sin resolver 0
clear Reinicia antes de analizar un nuevo registro 0

Coste y límites

Lo que cuesta ejecutarlo

Cuota de API
Ninguno
Tokens por llamada
Los volcados de hilos son enormes — 20k+ tokens por volcado completo. Resume antes de volcar al chat
Monetario
Gratuito
Consejo
Usa get_summary/find_long_running para reducir antes de pedir pilas completas

Seguridad

Permisos, secretos, alcance

Almacenamiento de credenciales: Ninguno
Salida de datos: Ninguno — análisis completamente local de archivos

Resolución de problemas

Errores comunes y soluciones

Corrupción del protocolo de enlace MCP

Ejecuta JAR exactamente según el README (sin interfaz gráfica + --mcp, sin scripts envolventes que impriman en stdout)

parse_log falla en formatos de volcado personalizados

Asegúrate de que los volcados estén en formato HotSpot estándar; algunos APM añaden prefijos que TDA no puede analizar

La memoria se agota con registros muy grandes

Aumenta el montón de JVM para tda.jar: -Xmx4g o divide el registro en fragmentos

Alternativas

tda vs otros

AlternativaCuándo usarlaContrapartida
FastThread / otros analizadores en líneaTe parece bien cargar volcados a un terceroLos datos salen de tu red
async-profiler + flame graphsTienes control en vivo y quieres un perfilador de muestreo en lugar de volcadosArtefacto diferente; requiere adjudicación de agente

Más

Recursos

📖 Lee el README oficial en GitHub

🐙 Ver issues abiertas

🔍 Ver todos los 400+ servidores MCP y Skills