P

mcp-logic

Created Oct 19, 2025 by angrysky56

Language:

Python

Stars:

20

Forks:

4

README

MCP-Logic

An MCP server for automated first-order logic reasoning using Prover9 and Mace4.

Features

  • Theorem Proving - Prove logical statements with Prover9
  • Model Finding - Find finite models with Mace4
  • Counterexample Finding - Show why statements don't follow
  • Syntax Validation - Pre-validate formulas with helpful error messages
  • Categorical Reasoning - Built-in support for category theory proofs
  • Self-Contained - All dependencies install automatically

Quick Start

Installation

Linux/macOS:

git clone https://github.com/angrysky56/mcp-logic
cd mcp-logic
./linux-setup-script.sh

Windows:

git clone https://github.com/angrysky56/mcp-logic
cd mcp-logic
windows-setup-mcp-logic.bat

The setup script automatically:

  • Downloads and builds LADR (Prover9 + Mace4)
  • Creates Python virtual environment
  • Installs all dependencies
  • Generates Claude Desktop config

Claude Desktop Integration

Add to your Claude Desktop MCP config (auto-generated at claude-app-config.json):

{
  "mcpServers": {
    "mcp-logic": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/mcp-logic/src/mcp_logic",
        "run",
        "mcp_logic",
        "--prover-path",
        "/absolute/path/to/mcp-logic/ladr/bin"
      ]
    }
  }
}

Important: Replace /absolute/path/to/mcp-logic with your actual repository path.

Available Tools

Tool Purpose
prove Prove statements using Prover9
check-well-formed Validate formula syntax with detailed errors
find-model Find finite models satisfying premises
find-counterexample Find counterexamples showing statements don't follow
verify-commutativity Generate FOL for categorical diagram commutativity
get-category-axioms Get axioms for category/functor/group/monoid

Example Usage

Prove a Theorem

Use the mcp-logic prove tool with:
premises: ["all x (man(x) -> mortal(x))", "man(socrates)"]
conclusion: "mortal(socrates)"

Result: ✓ THEOREM PROVED

Find a Counterexample

Use the mcp-logic find-counterexample tool with:
premises: ["P(a)"]
conclusion: "P(b)"

Result: Model found where P(a) is true but P(b) is false, proving the conclusion doesn't follow.

Verify Categorical Diagram

Use the mcp-logic verify-commutativity tool with:
path_a: ["f", "g"]
path_b: ["h"]
object_start: "A"
object_end: "C"

Result: FOL premises and conclusion to prove that f∘g = h.

Running Locally

Instead of Claude Desktop, run the server directly:

Linux/macOS:

./run_mcp_logic.sh

Windows:

run_mcp_logic.bat

Project Structure

mcp-logic/
├── src/mcp_logic/
│   ├── server.py              # Main MCP server (6 tools)
│   ├── mace4_wrapper.py       # Mace4 model finder
│   ├── syntax_validator.py    # Formula syntax validation
│   └── categorical_helpers.py # Category theory utilities
├── ladr/                      # Auto-installed Prover9/Mace4 binaries
│   └── bin/
│       ├── prover9
│       └── mace4
├── tests/                     # Test suite
├── linux-setup-script.sh      # Linux/macOS setup
├── windows-setup-mcp-logic.bat # Windows setup
├── run_mcp_logic.sh           # Linux/macOS run script
└── run_mcp_logic.bat          # Windows run script

What's New in v0.2.0

Enhanced Features:

  • ✅ Mace4 model finding and counterexample detection
  • ✅ Detailed syntax validation with position-specific errors
  • ✅ Categorical reasoning support (category theory axioms, commutativity verification)
  • ✅ Structured JSON output from all tools
  • ✅ Self-contained installation (no manual path configuration)

Development

Run tests:

source .venv/bin/activate
pytest tests/ -v

Test components directly:

python tests/test_enhancements.py

Documentation

Troubleshooting

"Prover9 not found" error:

  • Run the setup script: ./linux-setup-script.sh or windows-setup-mcp-logic.bat
  • Check that ladr/bin/prover9 and ladr/bin/mace4 exist

Server not updating:

  • Restart Claude Desktop after code changes
  • Check logs for syntax errors

Syntax validation warnings:

  • Use lowercase for predicates/functions (e.g., man(x) not Man(x))
  • Add spaces around operators for clarity
  • Balance all parentheses

License

MIT

Credits

  • Prover9/Mace4: William McCune's LADR library
  • LADR Repository: laitep/ladr
Last updated: Oct 19, 2025

Publisher info

angrysky56's avatar

angrysky56

I am an AI assisted human.

Mr.
12
followers
11
following
82
repos

More MCP servers built with Python

Stable Diffusion WebUI

Stable Diffusion web UI

By AUTOMATIC1111 160.1K
Transformers

🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.

By huggingface 155.5K
PyTorch

Tensors and Dynamic neural networks in Python with strong GPU acceleration

By pytorch 96.8K