Skip to main content

MCP server bridging AI agents with the Isabelle proof assistant via its LSP/PIDE interface

Project description

Isabelle-MCP

MCP server that lets AI agents (Claude Code, Codex, …) drive the Isabelle theorem prover through its LSP/PIDE commands — fully autonomously, with no human in the loop.

Python ≥ 3.12 | v0.1.0 (MVP)

Purpose

This MCP server exists so that Claude / Codex can issue Isabelle LSP commands without any human mediation. The entire Isabelle process is encapsulated behind the MCP tools — it exposes no UI to the user. The agent works by editing .thy/.ML files on disk and calling the tools to evaluate them and query proof states; nobody watches or steers the prover interactively.

This server is not designed for human–AI collaboration (there is no jEdit/VSCode front-end in the picture). It implements a single AI ↔ Isabelle, no-human-in-the-loop model.

⚠️ One agent per server instance. This server holds a single Isabelle session with global mutable state — one set of open documents, one caret/perspective, and one evaluation in flight at a time. It is single-threaded and not concurrency-safe: pointing multiple agents at one instance, or interleaving concurrent requests, corrupts the evaluation/caret/ document state with catastrophic, hard-to-debug results. The server runs over stdio, so each agent already gets its own dedicated server process (and its own isabelle mcp_server) — just don't share one or drive it concurrently.

[!IMPORTANT] No Isabelle patch is needed. Earlier versions required one: the server drove the stock isabelle vscode_server, which lacks the PIDE requests it needs, so the distribution had to be patched. It no longer does. Isabelle-MCP now ships its own Isabelle Scala component — isabelle mcp_server — and registers it with your Isabelle the first time you launch a session. Nothing is compiled on your machine (the component carries a prebuilt jar and declares no_build = true), so site-packages may even be read-only, and no session heap is invalidated.

Requirements: Isabelle2025-2, with isabelle on PATH (or pinned with isabelle-mcp install --isabelle-bin /path/to/Isabelle/bin/isabelle). Isabelle2024 is no longer supported — see the last-isabelle2024-support tag.

To undo the registration: isabelle-mcp uninstall. If you remove the package without it, Isabelle will print ### Missing Isabelle component: … on every command until you run isabelle components -x <the path it names> — harmless, but noisy.

Quick Start

pip install isabelle-mcp      # or: uv tool install isabelle-mcp

# register into Claude Code / Codex (auto-detects whichever is installed):
isabelle-mcp install

For Claude Desktop, register manually instead (~/.config/claude/claude_desktop_config.json):

{
  "mcpServers": {
    "isabelle": {
      "command": "isabelle-mcp"
    }
  }
}

Tools

Tool Description
isabelle_launch Start (or restart) the prover with the session/logic that fits the work (bare Main is only a minimal fallback); call this first
isabelle_terminate Terminate the running prover (the MCP server stays up; you can relaunch)
isabelle_evaluate_to Evaluate the theory up to a line; returns a per-file snapshot of errors / warnings / running command lines
isabelle_evaluation_status Poll progress of a running evaluation (same snapshot)
isabelle_cancel_evaluation Cancel a running evaluation
isabelle_hover Type info and documentation at position
isabelle_definition Jump to symbol definition
isabelle_local_occurrences In-file occurrences (definition + uses) of a local entity
isabelle_goal Proof goals — omit after_text for before/after diff
isabelle_command_output Prover output messages
isabelle_session_info Current session info

All positions are 1-indexed. File paths must be absolute.

PIDE tools (goal, command_output) are best-effort wrappers around async PIDE notifications and may time out.

Development

pip install -e ".[dev]"             # editable install from a checkout
pytest                              # unit tests
pytest -m integration               # requires running Isabelle
python -m mypy src/                 # type checking

Architecture

server.py         FastMCP entry point — tool registration, lifespan
lsp_client.py     JSON-RPC 2.0 client for isabelle mcp_server
tools/            Tool implementations (one file per tool)
utils/            Position conversion, URI handling, HTML parsing
models.py         Pydantic output models

License

See LICENSE.

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

isabelle_mcp-0.3.0.tar.gz (617.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

isabelle_mcp-0.3.0-py3-none-any.whl (591.5 kB view details)

Uploaded Python 3

File details

Details for the file isabelle_mcp-0.3.0.tar.gz.

File metadata

  • Download URL: isabelle_mcp-0.3.0.tar.gz
  • Upload date:
  • Size: 617.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for isabelle_mcp-0.3.0.tar.gz
Algorithm Hash digest
SHA256 78bf99b48dd68b881f9a87e229adf0fe73e76e1ceac78582b4054f46c989276a
MD5 124f1924ca5b59f066f5a8c5681b85dd
BLAKE2b-256 3c5cd59fb9b8fb441d532206e5a9bf4c81de203195ff33ef8e483f6d31107d77

See more details on using hashes here.

Provenance

The following attestation bundles were made for isabelle_mcp-0.3.0.tar.gz:

Publisher: ci.yml on xqyww123/Isabelle-MCP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file isabelle_mcp-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: isabelle_mcp-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 591.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for isabelle_mcp-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 360a5dba36a6f4a44d1b560f33acc1c3b661d7b331a5b5545a3cf99e21ecee51
MD5 b38b0a814f3684b5475a4f83f74808a5
BLAKE2b-256 808194eaae26b067520a6775fbf36dcd374155c58a627c11bc8f42fb4e38a458

See more details on using hashes here.

Provenance

The following attestation bundles were made for isabelle_mcp-0.3.0-py3-none-any.whl:

Publisher: ci.yml on xqyww123/Isabelle-MCP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page