面向 AI 助手的 Caju
caju mcp 是内置于 caju 命令中的 Model Context Protocol 服务器。Claude Code、Claude Desktop、Cursor 等助手通过返回结构化结果的工具来使用编译器:阅读语言参考、查询标准库,以及检查、运行和测试代码。
$ claude mcp add caju -- caju mcpCLI 还是 MCP:实测对比
同样的三个任务,由 Claude Code 分别完成:一种只能在 shell 中使用 caju 命令,另一种只能使用 MCP 工具。模型相同、提示词相同,都从只含任务文件的空目录开始;每个结果事后都经过检验。
先读,再写
使用 MCP 时,每次运行都先调用 caju_reference 和 caju_docs,然后一次写好程序。大多数程序第一次就是正确的。
没有它,编译器就是手册
使用 CLI 时,助手靠错误信息学习 Caju:先运行 caju --help,再写一个个小的试探程序,一次只试一种语法结构,每次出错就重写。有一次运行直到用完 40 轮上限,仍在摸索语法。
错误直指修复点
带有行、列和阶段的诊断信息能让助手直接定位到需要修改的那一行,而不必阅读文本再去猜测。
它会自己找到服务器
在第一轮测试中,caju mcp 没有被屏蔽,CLI 方式的运行在 caju --help 中发现了它,并从 shell 用 JSON-RPC 与它通信来读取语言参考。
每个任务、每种方式各运行两次,只用了一个模型,任务也很小:方向很明确,具体比例则不然。CLI 方式的运行不能使用其他 shell 命令。程序、日志摘要和测试方法见语言仓库的 bench/mcp。 bench/mcp/RESULTS.md
一次真实会话
一个助手(Claude Sonnet 5.5)借助 MCP 工具,把一段 Go 风格的程序改写为 Caju。这是下文对比中的一次运行,有所删节,保留英文原文。
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".
五个工具
检查、运行和测试以 JSON 回答,助手无需解析编译器的文本输出。代码图工具每个符号只返回一行简短内容,而不是整个文件:图保存在服务器内存中,查询约 2 毫秒。
只做类型检查,不生成代码。每个错误都附带文件、行、列以及所属阶段(语法、类型、链接……)。
{ "files": {
"main.caju": "x := 1\nx = \"a\"\n"
} }{ "ok": false, "diagnostics": [ {
"file": "main.caju", "line": 2, "col": 5, "stage": "type",
"message": "\"x\" (line 1) is int, but got str"
} ] }配置
它随 caju 命令一起提供,无需另外安装。
claude mcp add caju -- caju mcp{
"mcpServers": {
"caju": { "command": "caju", "args": ["mcp"] }
}
}如果客户端读不到你的 PATH,请使用 caju 的完整路径(通过安装脚本安装时为 ~/.local/bin/caju)。服务器从标准输入读取 JSON-RPC 消息,每行一条。
为什么新语言需要它
助手在训练时从未见过 Caju,而 Caju 又和 Go 足够相似,很容易被写成 Go。服务器为它提供真实的语言参考、标准库中真实的名称,以及每个错误的精确位置,让它不再靠猜。