Saltar al contenido
cajulang

Caju para asistentes de IA

caju mcp es un servidor de Model Context Protocol integrado en el comando caju. Claude Code, Claude Desktop, Cursor y otros asistentes usan el compilador mediante herramientas con resultados estructurados: leen la referencia del lenguaje, consultan la biblioteca estándar y comprueban, ejecutan y prueban código.

$ claude mcp add caju -- caju mcp

CLI o MCP: medido

Las mismas tres tareas, hechas por Claude Code solo con el comando caju en una shell o solo con las herramientas MCP. Mismo modelo, mismo prompt, un directorio vacío con los archivos de la tarea; cada resultado se verificó después.

cli5/6Correcto
mcp6/6Correcto
Turnos3,3×
cli30,3
mcp9,2
Llamadas al compilador10,5×
cli17,8
mcp1,7
Tokens de entrada (miles)4,2×
cli540
mcp129
Tiempo (s)4×
cli48,6
mcp12,2
Costo (US$)2,1×
cli0,168
mcp0,079
TareaCorrectoTurnosLlamadas al compiladorTiempo (s)
Escribir un programaLas 5 palabras más frecuentes de un texto, ordenadas por número de apariciones y luego alfabéticamente.
cli2/2161023,7
mcp2/25,51,59,7
De Go a CajuUn programa escrito al estilo de Go debe convertirse en Caju válido e imprimir dos líneas dadas.
cli1/2533188,1
mcp2/2101,512
Escribir pruebasAl menos 4 pruebas para un módulo de pila que tiene un error oculto.
cli2/22212,534
mcp2/212214,8

Lee antes de escribir

Con MCP, cada ejecución empezó con caju_reference y caju_docs y después escribió el programa de una vez. La mayoría de los programas salieron bien a la primera.

Sin él, el compilador es el manual

Con la CLI, el asistente aprendió Caju a partir de los mensajes de error: caju --help, luego pequeños programas de prueba, una construcción a la vez, reescribiendo tras cada error. Una ejecución llegó al límite de 40 turnos todavía tanteando la sintaxis.

Los errores señalan la corrección

Un diagnóstico con línea, columna y etapa lleva al asistente directo a la línea que debe cambiar, en lugar de leer texto y adivinar.

Fue a buscar el servidor

En una primera ronda en la que caju mcp no estaba bloqueado, las ejecuciones con CLI lo encontraron en caju --help y le hablaron en JSON-RPC desde la shell para leer la referencia.

Dos ejecuciones por tarea y modo, un solo modelo y tareas pequeñas: la tendencia es clara, las proporciones exactas no. Las ejecuciones con CLI no podían usar otros comandos de la shell. Programas, resumen de los registros y método en bench/mcp del repositorio del lenguaje. bench/mcp/RESULTS.md

Una sesión real

Un asistente (Claude Sonnet 5.5) convierte un programa al estilo de Go en Caju con las herramientas MCP. Es una de las ejecuciones de la comparación de abajo, abreviada y en su inglés original.

Tarea

main.caju was written in Go style, but it must be a valid program in the Caju programming language. Rewrite it so that it prints exactly "CASHEW, MANGO" and "total: 16.00".

Paso 1 de 9

Cinco herramientas

Comprobar, ejecutar y probar responden con JSON, así que el asistente nunca interpreta la salida de texto del compilador. Las herramientas del grafo de código responden con una línea corta por símbolo en lugar de archivos enteros: el grafo vive en la memoria del servidor y responde en unos 2 ms.

Comprueba los tipos sin generar código. Cada error indica su archivo, línea, columna y etapa (sintaxis, tipos, enlace...).

Solicitud · caju_check
{ "files": {
    "main.caju": "x := 1\nx = \"a\"\n"
} }
Respuesta · caju_check
{ "ok": false, "diagnostics": [ {
    "file": "main.caju", "line": 2, "col": 5, "stage": "type",
    "message": "\"x\" (line 1) is int, but got str"
} ] }

Configúralo

Viene con el comando caju: no hay nada más que instalar.

Claude Code
claude mcp add caju -- caju mcp
Claude Desktop, Cursor, VS Code y otros clientes
{
  "mcpServers": {
    "caju": { "command": "caju", "args": ["mcp"] }
  }
}

Usa la ruta completa de caju (~/.local/bin/caju con el instalador) si el cliente no ve tu PATH. El servidor lee mensajes JSON-RPC por su entrada estándar, uno por línea.

Por qué un lenguaje nuevo lo necesita

Un asistente nunca vio Caju durante su entrenamiento, y Caju se parece lo bastante a Go como para escribirse como Go. El servidor le da la referencia real, los nombres reales de la biblioteca y la posición exacta de cada error, así que deja de adivinar.