Skip to main content

MCP server for Pyke logic programming engine

Project description

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 pyke-mcp

From source

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

Dependencies

  • Python 3.10+
  • mcp>=1.2.0
  • pyke3>=1.1.1

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyke_mcp-0.1.0.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyke_mcp-0.1.0-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file pyke_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: pyke_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyke_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ee58e71945f8058f7c92f235c3745e61fd91c196da96597caafbf2652517bd46
MD5 8196f7145750a1f23baf6326df9a6efa
BLAKE2b-256 4be6d07b37e9caee0e5428dae951d0b5965f8177014472d8b6eb4a64cce5c42d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyke_mcp-0.1.0.tar.gz:

Publisher: python-publish.yml on NewJerseyStyle/pyke-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyke_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pyke_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyke_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ee510e7f1e6a2dd21128131317d453dc9d56b7c906c732b74ccc119009b5ba08
MD5 3539f56f371aef1fc76b0e14669f4405
BLAKE2b-256 35f3396c725a64ec21fe84cda3a1ba391d2a22c94612caf9bdc988336e6fa65e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyke_mcp-0.1.0-py3-none-any.whl:

Publisher: python-publish.yml on NewJerseyStyle/pyke-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page