使用说明
mcp服务器quint
MCP服务器 昆特 形式化规范语言。包装Quint CLI,使任何基于LLM的工作流都可以访问正式验证。
快速开始
1.安装Quint CLI
npm i -g @informalsystems/quint
2.添加到克劳德代码
claude mcp add quint -- npx @dpdanpittman/mcp-server-quint
就是这样。您现在在Claude Code中有6个正式的验证工具。
其他MCP客户端
任何兼容MCP的客户端都可以通过stdio使用此服务器:
npx @dpdanpittman/mcp-server-quint
使用超级网关(HTTP传输)
{ name: 'quint', command: 'node', args: ['/path/to/mcp-server-quint/index.js'] }
工具
quint_typecheck
类型检查Quint规格。提供其中之一 source (内联.qnt代码)或 file_path.
quint_run
通过随机执行模拟Quint规范。(可选)检查不变量。如果违反,则返回反例跟踪。
| 参数 | 说明 |
|---|---|
source / file_path |
要模拟的规范 |
init |
初始化操作名称(默认值:“Init”) |
step |
步骤动作名称(默认:“Step”) |
invariant |
不变检查 |
max_samples |
运行次数(默认值:10000) |
max_steps |
每次运行的步数(默认值:20) |
seed |
随机种子可重复性 |
quint_test
运行命名测试定义(run 声明)。可选过滤条件 match 正则表达式。
quint_verify
通过Apalache进行详尽的模型检查。检查所有可到达的状态,而不仅仅是随机样本。需要Java 17+和 阿帕拉赫.
quint_parse
解析一个规范,并将中间表示(IR)作为JSON返回。
quint_docs
Quint语法快速参考。话题: sets, maps, lists, actions, temporal, types, modules, testing,或 all.
示例
module bank {
var balances: str -> int
val ADDRS = Set("alice", "bob")
action init = balances' = ADDRS.mapBy(_ => 100)
action transfer(sender: str, receiver: str, amt: int): bool = all {
balances.get(sender) >= amt,
balances' = balances.set(sender, balances.get(sender) - amt)
.set(receiver, balances.get(receiver) + amt)
}
action step = {
nondet sender = ADDRS.oneOf()
nondet receiver = ADDRS.oneOf()
nondet amt = 1.to(balances.get(sender)).oneOf()
transfer(sender, receiver, amt)
}
val no_negatives = ADDRS.forall(a => balances.get(a) >= 0)
}
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
QUINT_CMD |
quint |
Quint CLI二进制文件的路径 |
QUINT_TIMEOUT |
120000 |
CLI超时(毫秒) |