Skip to main content

Pyke MCP Server

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.

Features

  • Fact Management: Add ground truth facts to the knowledge base
  • Rule Definition: Define inference rules using forward chaining
  • Query Execution: Check if facts can be derived from the knowledge base
  • Goal Proving: Find all variable bindings that satisfy a goal
  • Session Management: Support multiple independent knowledge bases
  • Logic-LLM Compatible: Load programs in Logic-LLM format

Installation

Using pip

pip install git+https://github.com/evertrol/pyke3 pyke-mcp

From source

git clone https://github.com/NewJerseyStyle/pyke-mcp.git
cd pyke-mcp
pip install -e .

Dependencies

  • Python 3.10+
  • mcp>=1.2.0
  • pyke>=1.1.1 (Install from source by pip install git+https://github.com/evertrol/pyke3 but the package name is pyke not pyke3)

Quick Start

Running the Server

# Using the installed command
pyke-mcp

# Or using Python
python -m pyke_mcp.server

Configuration for Claude Desktop

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"]
    }
  }
}

Available Tools

add_fact

Add a fact to the knowledge base.

Predicate(arg1, arg2, ...)

Examples:

  • Human(Socrates, True) - Socrates is human
  • Parent(John, Mary) - John is a parent of Mary

add_rule

Add an inference rule using forward chaining.

Premise >>> Conclusion
Premise1 && Premise2 >>> Conclusion

Examples:

  • Human($x, True) >>> Mortal($x, True) - All humans are mortal
  • Parent($x, $y) && Parent($y, $z) >>> Grandparent($x, $z) - Grandparent relationship

add_facts_and_rules

Bulk add multiple facts and rules at once.

query

Check if a specific fact can be derived.

Predicate(Subject, ExpectedValue)

Example:

  • Mortal(Socrates, True) - "Is Socrates mortal?"

prove_goal

Find all variable bindings that satisfy a goal.

Examples:

  • Mortal($who, True) - "Who is mortal?"
  • Parent($parent, Mary) - "Who are Mary's parents?"

get_program

Display the current knowledge base contents.

clear_program

Clear all facts and rules from the session.

load_logic_program

Load a complete logic program from formatted text (Logic-LLM compatible).

list_sessions

List all active sessions.

delete_session

Delete a specific session.

Usage Examples

Classic Syllogism

# 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

Family Relationships

# 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

Loading a Complete Program

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)

Logic Program Format

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)

Syntax Rules

  1. Facts: Ground assertions without variables

    • Human(Socrates, True)
    • Age(John, 30)
  2. Rules: Implications with variables (prefixed with $)

    • Human($x, True) >>> Mortal($x, True)
    • Multiple premises joined with &&
  3. Variables: Prefixed with $

    • $x, $person, $value
  4. Values: Can be boolean (True/False) or strings

    • True, False, Socrates, Blue

Session Management

The 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")

Error Handling

The server provides clear error messages for:

  • Invalid fact/rule syntax
  • Query execution failures
  • Missing Pyke installation
  • Session not found

Based On

License

MIT License

Metadata

Release files for pyke-mcp 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyke-mcp 0.1.1
File Size Uploaded
pyke_mcp-0.1.1.tar.gz 16.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyke-mcp 0.1.1
File Interpreter ABI Platform
pyke_mcp-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 31.0 kB

Release files / pyke_mcp-0.1.1.tar.gz

Download URL pyke_mcp-0.1.1.tar.gz
Size 16.6 kB
Tags Source
SHA-256 checksum
How to use checksums
e273db930893c8a833c5b980bff08c730e7832eab8af171ba913a48d45742400
BLAKE2b-256 checksum
How to use checksums
6432d3fafbbb5cd04b9b18533e59a4cb93e3f42ccb81e364d6e902f1ceadef36
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 26, 2026.

Transparency log

Release files / pyke_mcp-0.1.1-py3-none-any.whl

Download URL pyke_mcp-0.1.1-py3-none-any.whl
Size 14.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c7b4208e044ae96c0f9eb0e5c84b8654a4e9d6506af4ec37fc986ff1e15500ab
BLAKE2b-256 checksum
How to use checksums
017f4a70c901f08780cf04f750ba61de4b0c7965a7a055e23fc4e8f8da06152d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 26, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page