Fast Lean 4 proof feedback for agents, powered by LeanInteract.
Project description
LeanProbe
Fast Lean 4 proof feedback for AI agents — an MCP server, CLI, and Python API.
LeanProbe keeps a Lean REPL warm and reuses the elaborated environment, so
repeated checks in a file come back in tens of milliseconds instead of the
seconds a fresh lake build or lake env lean costs. It never edits files —
run lake build as the final whole-project gate. Built on
LeanInteract.
Quickstart
Install (the MCP server is included):
pip install lean-probe # or run with no install: uvx lean-probe mcp
Add it to Claude Code:
claude mcp add lean-probe --env LEAN_PROBE_AUTO_BUILD=0 -- lean-probe mcp
Now ask the agent to check Lean — e.g. "use lean_check on theorem t : 2 + 2 = 4 := by norm_num". Or straight from the terminal:
lean-probe check --cwd /path/to/lake-project --code "example : 2 + 2 = 4 := rfl"
That is the whole regular setup — pip install lean-probe is fully functional on
its own and writes nothing outside its own package.
Optional — install the usage skill. So your agents know the LeanProbe tool
contract without you pasting it, you can additionally install it as a skill. It
ships inside the wheel (no repo clone), and this step is purely opt-in — a plain
pip install never touches ~/.claude or ~/.codex:
lean-probe install-skill # → ~/.claude/skills + ~/.codex/skills (whichever exist)
This drops the LeanProbe skill into each present
client as skills/lean-probe/SKILL.md. Use --client claude|codex to force one,
--skills-dir PATH for a project-local .claude/skills, or --dry-run to preview.
The skill only documents the tools — keep the claude mcp add / Codex config above
so the lean-probe MCP server is actually connected.
Requirements
- Python 3.10+.
- Lean 4 + Lake via elan, with
lakeonPATH(or setLEAN_PROBE_LAKE_PATH). - A built Lake project to check against (with Mathlib if your code imports it).
The first call boots the REPL and elaborates imports (tens of seconds for
Mathlib); after that, checks are sub-second — call lean_status with
warm=true to pay that cost up front. Keep LEAN_PROBE_AUTO_BUILD=0 for MCP
clients: build output on stdout would corrupt the JSON-RPC stream, so build the
project from a terminal first.
Add to other clients
Codex (~/.codex/config.toml):
[mcp_servers.lean-probe]
command = "lean-probe"
args = ["mcp"]
tool_timeout_sec = 600 # the first Mathlib call is slow
[mcp_servers.lean-probe.env]
LEAN_PROBE_AUTO_BUILD = "0"
Any MCP client (generic mcpServers JSON):
{
"mcpServers": {
"lean-probe": { "command": "lean-probe", "args": ["mcp"], "env": { "LEAN_PROBE_AUTO_BUILD": "0" } }
}
}
If the client launches the server outside your environment, use an absolute path
to lean-probe, or "command": "uvx", "args": ["lean-probe", "mcp"].
Tools
On connect the server advertises usage instructions and exposes six tools:
| Tool | Purpose |
|---|---|
lean_check |
Verify any standalone snippet — the default. |
lean_check_target |
Check or replace a declaration in a project file (warm, sub-second). |
lean_status |
Readiness; warm=true pre-boots the REPL. |
lean_proof_state · lean_tactic · lean_close_proof |
Explore a sorry tactic by tactic. |
Read a result with two fields: success = the tool ran; ok = Lean
accepted the code (no errors, no sorry). On failure, error_code + hint say
what to do next. See the LeanProbe skill for the
full contract — parameters, feedback_lean, and every error code.
Without MCP
CLI:
lean-probe status --cwd /path/to/lake-project
lean-probe check-target File.lean my_theorem --cwd /path/to/lake-project --pretty
Python:
from lean_probe import LeanProbe
probe = LeanProbe()
result = probe.check_target("File.lean", theorem_id="my_theorem", cwd="/path/to/lake-project")
print(result["ok"], result["elapsed_s"])
Benchmarks
Warm cached checks run in tens of milliseconds versus roughly 2–4s for a full-file Lake check — about 9–14× faster for sequential same-file work. See BENCHMARKS.md for methodology and full numbers.
More
- SKILL.md — the full MCP contract (using
LeanProbe), installable into agents with
lean-probe install-skill. - AGENTS.md — the contributor guide (working on this repo).
- BENCHMARKS.md — benchmark methodology and results.
- CONTRIBUTING.md — dev setup and checks.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lean_probe-0.4.0.tar.gz.
File metadata
- Download URL: lean_probe-0.4.0.tar.gz
- Upload date:
- Size: 54.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
648159fb24afd3804720dcda3313a496b310827496f81e984d7aad867209198b
|
|
| MD5 |
3c5ade748bd2a30ca1cd80437411e0a9
|
|
| BLAKE2b-256 |
daf258c44b1252d00cbf4f7e363c8466ec8da7ec3e6f79676c1657dfdbf9ac72
|
File details
Details for the file lean_probe-0.4.0-py3-none-any.whl.
File metadata
- Download URL: lean_probe-0.4.0-py3-none-any.whl
- Upload date:
- Size: 47.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8326049c38ed8d4a737b6536166ed64e5a79b63a3079e490601dc1065a087bc
|
|
| MD5 |
11da1fcc8e5eb1590d720006116a9048
|
|
| BLAKE2b-256 |
091e69a36ed36803c943e8e8ee1b80c57564657ad487b3e04e38d7475f8a0d23
|