loading…
Search for a command to run...
loading…
An MCP server for the Pyke logic programming engine that enables LLMs to perform logical reasoning using knowledge bases with facts, rules, and queries. It supp
An MCP server for the Pyke logic programming engine that enables LLMs to perform logical reasoning using knowledge bases with facts, rules, and queries. It supports session management, forward chaining inference, and bulk loading of programs in Logic-LLM format.
An MCP (Model Context Protocol) server for the Pyke logic programming inference engine. This server enables LLMs to perform logical reasoning through knowledge bases with facts, rules, and queries.
pip install git+https://github.com/evertrol/pyke3 pyke-mcp
git clone https://github.com/NewJerseyStyle/pyke-mcp.git
cd pyke-mcp
pip install -e .
mcp>=1.2.0pyke>=1.1.1 (Install from source by pip install git+https://github.com/evertrol/pyke3 but the package name is pyke not pyke3)# Using the installed command
pyke-mcp
# Or using Python
python -m pyke_mcp.server
Add to your claude_desktop_config.json:
macOS/Linux:
{
"mcpServers": {
"pyke": {
"command": "pyke-mcp"
}
}
}
Windows:
{
"mcpServers": {
"pyke": {
"command": "pyke-mcp"
}
}
}
Or with explicit Python path:
{
"mcpServers": {
"pyke": {
"command": "python",
"args": ["-m", "pyke_mcp.server"]
}
}
}
add_factAdd a fact to the knowledge base.
Predicate(arg1, arg2, ...)
Examples:
Human(Socrates, True) - Socrates is humanParent(John, Mary) - John is a parent of Maryadd_ruleAdd an inference rule using forward chaining.
Premise >>> Conclusion
Premise1 && Premise2 >>> Conclusion
Examples:
Human($x, True) >>> Mortal($x, True) - All humans are mortalParent($x, $y) && Parent($y, $z) >>> Grandparent($x, $z) - Grandparent relationshipadd_facts_and_rulesBulk add multiple facts and rules at once.
queryCheck if a specific fact can be derived.
Predicate(Subject, ExpectedValue)
Example:
Mortal(Socrates, True) - "Is Socrates mortal?"prove_goalFind all variable bindings that satisfy a goal.
Examples:
Mortal($who, True) - "Who is mortal?"Parent($parent, Mary) - "Who are Mary's parents?"get_programDisplay the current knowledge base contents.
clear_programClear all facts and rules from the session.
load_logic_programLoad a complete logic program from formatted text (Logic-LLM compatible).
list_sessionsList all active sessions.
delete_sessionDelete a specific session.
# Add facts
add_fact("Human(Socrates, True)")
add_fact("Human(Plato, True)")
# Add rule
add_rule("Human($x, True) >>> Mortal($x, True)")
# Query
query("Mortal(Socrates, True)")
# Result: True, Match: True
# Find all mortals
prove_goal("Mortal($who, True)")
# Bindings: who=Socrates, who=Plato
# Facts
add_fact("Parent(Alice, Bob)")
add_fact("Parent(Bob, Charlie)")
add_fact("Parent(Bob, Diana)")
# Rules
add_rule("Parent($x, $y) && Parent($y, $z) >>> Grandparent($x, $z)")
# Find Alice's grandchildren
prove_goal("Grandparent(Alice, $grandchild)")
# Bindings: grandchild=Charlie, grandchild=Diana
program = """
Predicates:
Human(x, bool)
Mortal(x, bool)
Facts:
Human(Socrates, True)
Human(Aristotle, True)
Rules:
Human($x, True) >>> Mortal($x, True)
Query:
Mortal(Socrates, True)
"""
load_logic_program(program)
The server accepts programs in the Logic-LLM format:
Predicates:
PredicateName(arg1_type, arg2_type, ...)
Facts:
PredicateName(value1, value2, ...)
Rules:
Premise($var, value) >>> Conclusion($var, value)
Premise1($x, val) && Premise2($x, val) >>> Conclusion($x, val)
Query:
PredicateName(subject, expected_value)
Facts: Ground assertions without variables
Human(Socrates, True)Age(John, 30)Rules: Implications with variables (prefixed with $)
Human($x, True) >>> Mortal($x, True)&&Variables: Prefixed with $
$x, $person, $valueValues: Can be boolean (True/False) or strings
True, False, Socrates, BlueThe server supports multiple independent sessions:
# Create/use a session
add_fact("Human(Socrates, True)", session_id="philosophy")
# Use a different session
add_fact("Cat(Whiskers, True)", session_id="animals")
# List sessions
list_sessions()
# Delete a session
delete_session("philosophy")
The server provides clear error messages for:
MIT License
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"pyke-mcp-server": {
"command": "npx",
"args": []
}
}
}