Euclid-MCP
MCP server for logical reasoning that turns facts into formal proofs using a deterministic inference engine with Prolog.
README
Euclid-MCP
MCP server for logical reasoning — turns facts into formal proofs.
Euclid-MCP is a hybrid cognitive architecture: a lightweight LLM describes the world in facts, and a deterministic engine performs the actual deduction. The LLM never needs to reason — it only needs to describe.
How it works
┌──────────────┐ ┌──────────────────┐ ┌──────────────┐ ┌──────────────┐
│ LLM/Agent │────▶│ Euclid-MCP │────▶│ Translator │────▶│ SWI-Prolog │
│ (MCP Client)│◀────│ (FastMCP) │◀────│ + Meta-IP │◀────│ (subprocess) │
└──────────────┘ └──────────────────┘ └──────────────┘ └──────────────┘
- Receive facts, rules, and a query in a simple intermediate language
- Translate into Prolog with a meta-interpreter for proof tree capture
- Execute via SWI-Prolog subprocess
- Return solutions + proof trees as structured JSON
LLMs describe. Euclid MCP proves.
Intermediate Language
Even if currently Euclid-MCP uses a Prolog Engine, no Prolog syntax required.
Euclid IR (Intermediate Representation) is a declarative intermediate representation for logical inference.
Variables use $name, implication is IF, conjunction is AND.
Text format:
mortal(socrates)
human(socrates)
mortal($x) IF human($x)
? mortal($who)
YAML format:
facts:
- parent(tom, bob)
- parent(bob, ann)
- parent(tom, liz)
rules:
- ancestor($x, $y) IF parent($x, $y)
- ancestor($x, $y) IF parent($x, $z) AND ancestor($z, $y)
query: ancestor(tom, $who)
Tools
reason
Main tool for verifiable deterministic reasoning.
| Parameter | Type | Default | Description |
|---|---|---|---|
knowledge |
string |
— | Facts & rules in text or YAML format |
query |
string? |
— | Override query (optional) |
max_solutions |
int |
5 |
Max solutions to return |
max_depth |
int |
30 |
Max proof tree depth |
Returns ReasonResult with solutions[] — each containing variable bindings and a proof tree.
Installation
# Prerequisites: Python ≥ 3.10, SWI-Prolog
brew install swi-prolog
# Install
pip install euclid-mcp
Or from source:
git clone https://github.com/meo/euclid-mcp
cd euclid-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
Usage
Via MCP (OpenCode, Claude, etc.)
{
"mcpServers": {
"euclid-mcp": {
"command": "python3",
"args": ["-m", "euclid_mcp"],
"cwd": "/path/to/euclid-mcp"
}
}
}
Via Python
from euclid_mcp.server import reason
result = reason(knowledge="""
mortal(socrates)
human(socrates)
mortal($x) IF human($x)
? mortal($who)
""")
for sol in result.solutions:
print(sol.substitutions, sol.proof.type)
Example output
{
"query": "ancestor(tom, $who)",
"solutions": [
{
"substitutions": {"who": "bob"},
"proof": {
"type": "rule",
"goal": "ancestor(tom, bob)",
"body": "parent(tom, bob)",
"subproof": {"type": "fact", "goal": "parent(tom, bob)"}
}
},
{
"substitutions": {"who": "ann"},
"proof": {
"type": "rule",
"goal": "ancestor(tom, ann)",
"body": "parent(tom, bob), ancestor(bob, ann)",
"subproof": {
"type": "and",
"left": {"type": "fact", "goal": "parent(tom, bob)"},
"right": {
"type": "rule",
"goal": "ancestor(bob, ann)",
"body": "parent(bob, ann)",
"subproof": {"type": "fact", "goal": "parent(bob, ann)"}
}
}
}
}
]
}
Use cases
- Small LLM reasoning: Offload deduction from LLMs (3-8B) to a deterministic engine
- Explainable decisions: Every answer comes with a proof tree which allows explanation, reasoning trace, and justification
- Business rules: Validate logic chains (permissions, workflows, compliance)
- Dependency analysis: Circular dependency detection, topological ordering
- Education: Interactive logic tutoring with visible proof chains
- Knowledge preload: Complex business rules can be loaded in Euclid instead of using a RAG query
Why External Inference?
The external inference gives several advantages:
- deterministic
- explainable
- verifiable
- inexpensive
- replaceable backend
In the current implementation Euclid-MCP uses Prolog.
Prolog is a 50-year-old battle-tested logic engine. Using it as a "deduction coprocessor" lets small LLMs perform complex multi-step reasoning without needing larger, more expensive models. The intermediate language strips away Prolog's syntax quirks while keeping its logical core.
How is Euclid?
Euclid was an ancient Greek mathematician. Living and teaching in Alexandria, he built the foundations of geometry and number theory using rigorous logical proofs.
Euclid MCP is not:
- an LLM
- a knowledge base
- a vector database
- an agent framework
- a planner
Euclid MCP is a deterministic inference engine that can be used by any of them.
Euclid MCP allows deterministic and explainable replies from small LLMs on Edge hardware too.
License
Apache 2.0
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.