Folprover MCP
MCP server for First-Order Logic provers (Vampire, E)
Installation
npx folprover-mcpAsk AI about Folprover MCP
Powered by Claude Β· Grounded in docs
I know everything about Folprover MCP. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
FOL Prover MCP Server
An MCP (Model Context Protocol) server for First-Order Logic theorem proving using Vampire, E, and Prover9.
Features
- Multiple Provers: Support for Vampire, E (eprover), Prover9, and built-in simple prover
- Built-in Prover: Simple resolution-based prover requires no external installation
- FOL Parsing: Parse and validate first-order logic formulas with Unicode notation
- Session Management: Build proofs incrementally with named sessions
- TPTP Export: Convert problems to standard TPTP format
- Automatic Fallback: Try multiple provers if one fails
Installation
Prerequisites
The server includes a built-in simple prover that works without any external installation. For more complex proofs, install one of the following theorem provers:
Vampire (recommended):
# Linux (Ubuntu/Debian)
sudo apt-get install vampire
# macOS (with Homebrew)
brew install vampire
# Or download from: https://github.com/vprover/vampire
E Prover:
# Linux (Ubuntu/Debian)
sudo apt-get install eprover
# macOS
brew install eprover
# Or download from: https://wwwlehre.dhbw-stuttgart.de/~sschulz/E/E.html
Prover9:
# Download from: https://www.cs.unm.edu/~mccune/prover9/
Install the MCP Server
pip install folprover-mcp
Or install from source:
git clone https://github.com/folprover-mcp/folprover-mcp
cd folprover-mcp
pip install -e .
Configuration
Add to your MCP client configuration:
Claude Desktop
Add to ~/.config/claude/claude_desktop_config.json (Linux/macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"folprover": {
"command": "folprover-mcp"
}
}
}
VS Code with Continue
Add to your Continue configuration:
{
"mcpServers": {
"folprover": {
"command": "folprover-mcp"
}
}
}
Usage
FOL Notation
The server supports standard FOL notation with Unicode operators:
| Symbol | Meaning | Example |
|---|---|---|
β | Universal quantifier | βx P(x) |
β | Existential quantifier | βx P(x) |
β§ | Conjunction (AND) | P(x) β§ Q(x) |
β¨ | Disjunction (OR) | P(x) β¨ Q(x) |
β | Implication | P(x) β Q(x) |
β | Biconditional | P(x) β Q(x) |
Β¬ | Negation | Β¬P(x) |
β | Exclusive OR | P(x) β Q(x) |
You can also use ASCII alternatives:
forallorallforβexistsforβ&orandforβ§|ororforβ¨->orimpliesforβ<->oriffforβ~ornotforΒ¬
Tools
prove
Execute a FOL proof directly:
{
"premises": [
"βx (Human(x) β Mortal(x))",
"Human(socrates)"
],
"conclusion": "Mortal(socrates)",
"prover": "vampire"
}
add_premise
Add a premise to the current session:
{
"premise": "βx (Human(x) β Mortal(x))"
}
set_conclusion
Set the conclusion to prove:
{
"conclusion": "Mortal(socrates)"
}
prove_session
Prove using the current session's premises and conclusion:
{
"prover": "vampire"
}
parse_formula
Parse and validate a FOL formula:
{
"formula": "βx (P(x) β Q(x))"
}
convert_to_tptp
Convert a problem to TPTP format:
{
"premises": ["βx (P(x) β Q(x))", "P(a)"],
"conclusion": "Q(a)"
}
list_provers
List available theorem provers:
{}
Session Management
create_session: Create a new named sessionlist_sessions: List all active sessionsswitch_session: Switch to a different sessionget_session: Get current session stateclear_session: Clear all premises and conclusionremove_premise: Remove a premise by index
Examples
Example 1: Classic Syllogism
Premises:
- All humans are mortal:
βx (Human(x) β Mortal(x)) - Socrates is human:
Human(socrates)
Conclusion: Socrates is mortal: Mortal(socrates)
Result: Theorem (True)
Example 2: Set Theory
Premises:
- If x is a subset of y and y is a subset of z, then x is a subset of z:
βx βy βz ((Subset(x,y) β§ Subset(y,z)) β Subset(x,z)) - A is a subset of B:
Subset(a, b) - B is a subset of C:
Subset(b, c)
Conclusion: A is a subset of C: Subset(a, c)
Result: Theorem (True)
Example 3: With Counter-model
Premises:
- Some birds can fly:
βx (Bird(x) β§ CanFly(x))
Conclusion: All birds can fly: βx (Bird(x) β CanFly(x))
Result: Not a theorem (False - there's a counter-model where some bird can't fly)
Architecture
folprover-mcp/
βββ src/folprover_mcp/
β βββ __init__.py
β βββ server.py # MCP server implementation
β βββ provers.py # Prover interfaces (Vampire, E, Prover9, Simple)
β βββ simple_prover.py # Built-in resolution prover
β βββ fol_parser.py # FOL formula parser
β βββ tptp_converter.py # TPTP format converter
βββ tests/ # Test suite
βββ examples/ # Example proof problems
βββ pyproject.toml
βββ README.md
References
- Vampire Theorem Prover
- E Theorem Prover
- Prover9
- TPTP Problem Library
- Logic-LLM - Original inspiration
- MCP Specification
License
MIT License
