Skip to main content
Glama
mcp-server-quint

mcp-server-quint

by dpdanpittman

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'] }

Related MCP server: lu-mcp-server

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

Available Tools

6 tools
quint_docsA

Quick reference for Quint syntax and built-in operators. Returns a curated cheat sheet for the requested topic. No CLI call needed.

Inputs: topic (required).

quint_parseA

Parse a Quint spec and return the intermediate representation (IR) as JSON. Useful for inspecting the AST or checking for parse errors.

Inputs: source, file_path.

quint_runA

Simulate a Quint specification with random execution. Runs the state machine and optionally checks an invariant. Returns pass/fail and a counterexample trace if the invariant is violated.

Inputs: source, file_path, init, step, +4 more.

quint_testA

Run named test definitions (run statements) from a Quint spec. Returns pass/fail for each test with failure details.

Inputs: source, file_path, match.

quint_typecheckA

Type-check a Quint specification. Returns success or type errors with locations. Provide either source code or a file path.

Inputs: source, file_path.

quint_verifyA

Exhaustive model checking of a Quint spec via Apalache (requires Java 17+). Slower than simulation but checks ALL reachable states. Returns pass or a counterexample trace. Falls back gracefully if Apalache is not installed.

Inputs: invariant (required), source, file_path, init, +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.1/5.0

    Scored across 6 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose with no overlap: quint_docs provides syntax reference, quint_parse handles AST inspection, quint_run performs random simulation, quint_test executes named tests, quint_typecheck validates types, and quint_verify does exhaustive model checking. The descriptions clearly differentiate their specific functions within the Quint specification workflow.

    Naming Consistency5/5

    All tools follow a perfect 'quint_verb' pattern consistently throughout, using lowercase with underscores. The verbs (docs, parse, run, test, typecheck, verify) are all action-oriented and descriptive, creating a highly predictable and readable naming convention.

    Tool Count5/5

    Six tools is ideal for a Quint specification server, covering the complete lifecycle from documentation reference to parsing, testing, simulation, type checking, and verification. Each tool earns its place without redundancy, providing a well-scoped surface for working with Quint specifications.

    Completeness5/5

    The toolset provides comprehensive coverage for Quint specification workflows: documentation lookup, parsing, simulation, testing, type checking, and exhaustive verification. There are no obvious gaps—agents can perform the full CRUD-like lifecycle from inspection to validation and verification, with clear fallback behavior where appropriate.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      Enables LLM-powered agents to generate, execute, and analyze Alloy modeling language code for software modeling and formal verification. Provides tools to run Alloy models, access documentation and examples, and generate models from system descriptions.
      1
      1
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Exposes the TLA+ toolchain (TLC, SANY, PlusCal, TLATeX) as structured JSON tools via the Model Context Protocol, enabling AI assistants to parse, check, simulate, and typeset TLA+ specifications.
      9
      35 npm
      2
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      MCP server that gives LLMs access to formal verification via Z3 and SWI-Prolog, plus tree-sitter-based source code analysis. Translates natural language problems into formal logic using a template-based pipeline, verifies results with mathematical certainty, and analyzes call graphs for reachability, dead code, and impact analysis.
      137 npm
      218
      Apache 2.0