Quint MCP Server

1

Add it to Claude Code

Run this in a terminal.

Run in terminal
claude mcp add quint -- npx -y @dpdanpittman/mcp-server-quint
README.md

MCP server for the Quint formal specification language

mcp-server-quint

MCP server for the Quint formal specification language. Wraps the Quint CLI to make formal verification accessible to any LLM-powered workflow.

Quick Start

1. Install Quint CLI

npm i -g @informalsystems/quint

2. Add to Claude Code

claude mcp add quint -- npx @dpdanpittman/mcp-server-quint

That's it. You now have 6 formal verification tools available in Claude Code.

Other MCP Clients

Any MCP-compatible client can use this server over stdio:

npx @dpdanpittman/mcp-server-quint

With Supergateway (HTTP transport)

{ name: 'quint', command: 'node', args: ['/path/to/mcp-server-quint/index.js'] }

Tools

`quint_typecheck`

Type-check a Quint specification. Provide either source (inline .qnt code) or file_path.

`quint_run`

Simulate a Quint spec with random execution. Optionally check an invariant. Returns a counterexample trace if violated.

Parameter Description
source / file_path Spec to simulate
init Init action name (default: "init")
step Step action name (default: "step")
invariant Invariant to check
max_samples Number of runs (default: 10000)
max_steps Steps per run (default: 20)
seed Random seed for reproducibility

`quint_test`

Run named test definitions (run statements). Optionally filter by match regex.

`quint_verify`

Exhaustive model checking via Apalache. Checks ALL reachable states, not just random samples. Requires Java 17+ and Apalache.

`quint_parse`

Parse a spec and return the intermediate representation (IR) as JSON.

`quint_docs`

Quick reference for Quint syntax. Topics: sets, maps, lists, actions, temporal, types, modules, testing, or all.

Example

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)
}

Environment Variables

Variable Default Description
QUINT_CMD quint Path to Quint CLI binary
QUINT_TIMEOUT 120000 CLI timeout in ms

License

PolyForm Noncommercial 1.0.0

Tools (6)

quint_typecheckType-check a Quint specification.
quint_runSimulate a Quint spec with random execution.
quint_testRun named test definitions (run statements).
quint_verifyExhaustive model checking via Apalache.
quint_parseParse a spec and return the intermediate representation (IR) as JSON.
quint_docsQuick reference for Quint syntax.

Environment Variables

QUINT_CMDPath to Quint CLI binary
QUINT_TIMEOUTCLI timeout in ms

Configuration

claude_desktop_config.json
{"mcpServers": {"quint": {"command": "npx", "args": ["-y", "@dpdanpittman/mcp-server-quint"]}}}

Try it

Type-check the Quint specification located at ./specs/bank.qnt
Run a simulation on my bank specification and check if the no_negatives invariant holds
Exhaustively verify my current Quint specification using Apalache
Show me the documentation for Quint temporal operators
Parse the current file and explain the intermediate representation structure

Frequently Asked Questions

What are the key features of Quint?

Type-checking for Quint specifications. Randomized simulation with invariant checking. Exhaustive model checking via Apalache integration. Syntax documentation lookup. Parsing specifications into intermediate representation (IR).

What can I use Quint for?

Verifying correctness of distributed system protocols. Debugging formal specifications through counterexample traces. Automated testing of state machine logic. Learning Quint syntax and language features via LLM assistance.

How do I install Quint?

Install Quint by running: claude mcp add quint -- npx @dpdanpittman/mcp-server-quint

What MCP clients work with Quint?

Quint works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep Quint docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare