关于 A Rust port of calc (Landon Curt Noll's arbitrary-precision calculator)
toRustCalcMCP 是 calc 的 Rust 移植版,面向需要通过命令行、浏览器 REPL 或 MCP 进行任意精度计算的用户。其共用引擎采用精确有理数运算。
主要功能
- 01精确有理数运算
- 02兼容 calc 的命令行计算器
- 03浏览器 Web REPL
- 04MCP 计算工具
- 05函数、变量和控制流
- 06复数与列表
适用场景
- 01计算高精度表达式
- 02通过 MCP 客户端使用计算器
- 03在浏览器中交互式计算
MCP 相关
提供通过 stdio 传输 JSON-RPC 2.0 的 MCP 服务。客户端可计算表达式、配置会话精度与显示方式,并列出内置函数。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm ghcr.io/carlomagnoglobal/torustcalcmcp:latest本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/carlomagnoglobal/torustcalcmcp:lateststdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
toRustCalcMCP
calc(Landon Curt Noll 的任意精度计算器)的 Rust 移植版,可用作:
rcalc— 兼容 calc 的命令行计算器- Web REPL — 基于浏览器的交互式计算器
- MCP 服务 — 通过 stdio 使用 JSON-RPC 2.0,集成大模型/Agent
三种接口,一个引擎。 数值核心使用精确有理数运算
(基于 num-bigint 的 num-rational),与 calc 原生使用的模型相同 —
因此 1/3 * 3 的结果精确为 1,而 2^256 会精确计算到最后一位。
👉 2 分钟快速入门 — 初次使用 rcalc?从这里开始。 👉 作为 Claude Desktop MCP 安装 — 与 Claude Desktop 集成。
构建
cargo build --release
# binaries:
# target/release/toRustCalcMCP (auto-detects MCP vs CLI)
# target/release/rcalc (always the CLI)
也可以创建符号链接:ln -s toRustCalcMCP rcalc — 当 argv[0] 为 rcalc 时,
toRustCalcMCP 将作为计算器运行。
CLI 用法(rcalc)
rcalc '2^100' # 1267650600228229401496703205376
rcalc '1/3 + 1/6' # 0.5
rcalc -m frac '1/3 + 1/6' # 1/2
rcalc 'gcd(462,1071)' # 21
rcalc 'fact(30)' # 265252859812191058636308480000000
rcalc 'sqrt(2)' # 1.4142135623730950488
rcalc 'isprime(1000003)' 'nextprime(1000003)' # 1 \n 1000033
echo '3*4' | rcalc -p # pipe mode
rcalc # interactive REPL (Ctrl-D to exit)
标志:-p 管道模式,-q 静默模式,-m real|frac|int,-v 版本,-h 帮助。
若干经典 calc 标志(-c -C -d -e -i -O -s -u)会被接受并忽略。
Web REPL 用法
cargo build --release
./target/release/rcalc-web
# Open browser: http://localhost:8888
一个现代化的浏览器交互式 REPL,支持:
- 交互式表达式求值
- 命令历史记录(↑/↓ 方向键)
- 语法高亮输出
- 完整的 calc 功能(483 个内置名称)
- 适配手机/桌面的响应式设计
试用:打开 http://localhost:8888 并输入 2^256 或 sin(pi()/6)。
MCP 用法
toRustCalcMCP --mcp # speak JSON-RPC 2.0 over stdio
握手 → initialize,然后 tools/list,再然后 tools/call。权威的、
由服务端生成的模式定义请参见
docs/MCP_TOOL_SCHEMA.json,客户端注册示例请参见
examples/mcp-config.json。
工具
| 工具 | 用途 | 关键参数 |
|---|---|---|
calc_eval | 求值表达式 | expression(必填)、mode、digits、epsilon |
calc_config | 获取/设置会话精度和显示方式 | action(get/set)、mode、digits、epsilon |
calc_functions | 列出内置函数 | filter(可选子字符串) |
calc_eval 的 mode/digits/epsilon 是单次调用的覆盖参数;calc_config set
会为整个会话更改这些参数。
支持的语言
- 运算符:
+ - * /(精确运算)、//(整数除法)、%(取模)、^/**(幂运算)、比较运算符== != < <= > >=(结果为1/0)、一元运算符-/+。 - 变量和赋值:
x = 7; x^2。 - 用户定义函数:
define f(x) = x^2; f(5)→25。 - 控制流:
if/else、while、for循环、使用{}的代码块。 - 用
;分隔的语句;每条语句的值都会打印出来(calc 的行为)。 - 数值字面量:整数、
a/b有理数、小数、1.2e-3、0x/0b。 - 列表:
list(1,2,3); append(x,4); slice(x,1,3)。 - 复数:
sqrt(-1)→i;支持使用+、-、*、/运算。 - 字符串字面量:
"hello"; strlen(s); index(haystack, needle)。 - 483 个内置名称(与 calc 的 350 个完全兼容,减去 15 个已记录的解释器内部函数,再加上扩展功能)— 详见下方的实现状态。
精度模型
数字均为精确有理数。无理数结果会近似到会话 epsilon 指定的精度范围内(默认精确值为 1/10^20),与 calc 完全相同。超越函数(exp、
ln、sin、cos、tan)通过泰勒级数和牛顿法以任意精度计算。sqrt、sin、
cos 等函数会持续收敛计算,直到项小于 epsilon。pi/e 为 60 位常数。与 calc 一样,实数模式输出中的前导 ~ 表示结果为不精确表示(经过舍入/无限不循环)。
实现状态 — 与上游完全一致 ✅
calc 上游(lcn2/calc 的 func.c)定义了 350 个内置函数。此移植版注册了
483 个内置函数名,涵盖上游 350 个内置函数中的 335 个(此前长期缺失的另外
148 个已在下方与上游保持一致的批次中添加),此外还提供数十个上游没有的扩展和别名(统计、哈希、
位运算技巧、系统信息等)。
有意不实现的功能(15 个解释器内部项)
这些上游名称是 calc 的 C 解释器内部实现的产物,与此移植版的架构没有 有意义的对应关系;因此不实现它们,而不是提供无用的存根:
access、calc_tty、calclevel、calcpath、custom、dp、estr、
inputlevel、memsize、name、param、prompt、protect、saveval、
stoponerror
与上游已知的差异
- 带输出参数的内置函数改为返回值:
d2dm/d2dms(以及 g/h 系列)返回[deg, min]/[deg, min, sec]列表;quomod返回[q, r];search/rsearch返回索引或 null。 - 原地修改/左值内置函数改为返回新值:
modify、copy、swap(内置函数接收的是值,而不是引用)。 base2()的读取结果为 0(没有次级进制);设置时会报错——渲染器 只有一个输出进制。free*()不执行任何操作:不会缓存任何内容,所有值都按需计算。
完整的语言功能
- ✅ 用户自定义函数(
define name(params) = expr)、高阶 内置函数(select/forall/modify调用函数值) - ✅ 控制流(
if/else、while、for循环) - ✅ 变量和作用域
- ✅ 列表和索引(从 0 开始,支持负索引)
- ✅ 完整算术运算的复数
- ✅ 字符串字面量和完整的字符串函数套件
- ✅ 进制转换(2-36,输入和输出)
- ✅ 任意精度运算(精确有理数;精确的 1/10^20 epsilon)
- ✅ 文件加载(
-f filename)、文件 I/O 内置函数、REPL、管道模式
范围 — 架构与设计
calc 上游是约 92,000 行 C 代码,包含约 350 个内置函数和一门完整的、 图灵完备的脚本语言。此移植版是忠实的核心实现,采用便于逐步扩展的结构:
- ✅ 精确有理数数值引擎 — 与 calc 的原生模型一致
- ✅ 完整的词法分析器/解析器 — 支持完整的表达式语法
- ✅ 树遍历求值器 — 支持用户自定义函数、控制流和作用域
- ✅ 内置函数注册表 — 可扩展的函数映射,支持自动编目
- ✅ CLI 和 MCP 服务 — 两种前端,共用一个引擎
- 🔄 逐步添加内置函数 — 每个类别都可无缝加入,无需返工
架构稳定;添加更多函数很简单。
许可证
LGPL-2.1,与 calc 上游一致。
测试 CI 工作流
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。