Skip to main content

MCP server for Discrete Mathematics: Boolean Logic, Algorithms, Number Theory, Cryptography. 21 AI-ready tools for education and research.

Project description

๐ŸŽ“ Discrete Structures MCP Server

PyPI version Python Version MCP Registry License: MIT Downloads

Professional-grade AI tools for discrete mathematics, algorithms, and cryptography

Installation โ€ข Features โ€ข Quick Start โ€ข Documentation โ€ข Examples


๐Ÿš€ Overview

Discrete Structures MCP Server is a comprehensive Model Context Protocol server that brings 21 powerful mathematical tools to AI assistants like Claude Desktop, Cline, and Zed. Perfect for students, educators, and developers working with discrete mathematics, data structures, algorithms, and cryptography.

Why Choose This Server?

  • ๐ŸŽฏ 21 Production-Ready Tools across 4 categories
  • ๐Ÿ“š Educational Focus with step-by-step visualizations
  • ๐Ÿ”’ Enterprise Cryptography (RSA, AES, Caesar, Vigenere)
  • ๐Ÿ“Š Algorithm Visualizations for sorting and graph algorithms
  • ๐Ÿงฎ Boolean Logic with CNF/DNF conversion
  • ๐Ÿ”ข Number Theory including prime factorization and modular arithmetic
  • โšก Fast Installation via uvx discrete-structures-mcp
  • ๐ŸŒ MCP Registry Listed for easy discovery

โœจ Features

๐Ÿงฎ Logic Tools (5 tools)

  • evaluate_boolean - Evaluate boolean expressions with truth tables
  • generate_truth_table - Complete truth table generation
  • simplify_boolean - Boolean algebra simplification
  • convert_to_cnf - Conjunctive Normal Form conversion
  • convert_to_dnf - Disjunctive Normal Form conversion

๐Ÿ”ข Number Theory Tools (5 tools)

  • is_prime - Primality testing with explanations
  • prime_factors - Complete prime factorization
  • gcd_lcm - Greatest Common Divisor & Least Common Multiple
  • modular_arithmetic - Modular operations (add, multiply, power)
  • euler_totient - Euler's ฯ† function calculation

๐Ÿ“Š Algorithm Visualizers (6 tools)

  • visualize_bubble_sort - O(nยฒ) sorting with comparisons
  • visualize_quick_sort - O(n log n) divide-and-conquer
  • visualize_merge_sort - Stable merge sort visualization
  • visualize_binary_search - O(log n) search algorithm
  • visualize_dijkstra - Shortest path in weighted graphs
  • visualize_bfs_dfs - Graph traversal algorithms

๐Ÿ” Cryptography Tools (5 tools)

  • caesar_cipher - Classical shift cipher (educational)
  • vigenere_cipher - Polyalphabetic substitution
  • rsa_encrypt_decrypt - RSA public-key cryptography
  • aes_encrypt_decrypt - AES-256 symmetric encryption
  • generate_rsa_keys - Secure RSA key pair generation

๐Ÿ“ฆ Installation

โšก Quick Install (Recommended)

# Install and run directly with uvx
uvx discrete-structures-mcp

๐Ÿ“ฅ Install with pip

# Install globally
pip install discrete-structures-mcp

# Run the server
discrete-structures-mcp

๐Ÿ› ๏ธ Development Installation

# Clone the repository
git clone https://github.com/ZohaibCodez/discrete-structures-ai-platform.git
cd discrete-structures-ai-platform/mcp-server

# Install with uv
uv sync

# Run locally
uv run discrete-structures-mcp

๐ŸŽฏ Quick Start

Usage with Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "discrete-structures": {
      "command": "uvx",
      "args": ["discrete-structures-mcp"]
    }
  }
}

Usage with Other MCP Clients

Compatible with any MCP client:

  • Cline - VS Code extension
  • Zed - Modern code editor
  • Continue - AI code assistant
  • Custom MCP clients via Python SDK

๐Ÿ’ป Example Tool Calls

from mcp.client.session import ClientSession
from mcp.client.stdio import StdioServerParameters, stdio_client

server_params = StdioServerParameters(
    command="uvx",
    args=["discrete-structures-mcp"]
)

async with stdio_client(server_params) as (read, write):
    async with ClientSession(read, write) as session:
        await session.initialize()
        
        # List available tools
        tools = await session.list_tools()
        print([tool.name for tool in tools.tools])
        
        # Call a tool
        result = await session.call_tool("gcd_lcm", {"numbers": "48,18"})
        print(result)

๐Ÿ’ป Example Tool Calls

๐Ÿ”ข Number Theory Examples

Calculate GCD and LCM

# Find greatest common divisor and least common multiple
result = await session.call_tool("gcd_lcm", {
    "numbers": "48,18,24"
})
# Output: {"gcd": 6, "lcm": 144, "explanation": "..."}

Prime Factorization

result = await session.call_tool("prime_factors", {
    "number": "84"
})
# Output: {"factors": [2, 2, 3, 7], "factorization": "2ยฒ ร— 3 ร— 7"}

Modular Arithmetic

result = await session.call_tool("modular_arithmetic", {
    "operation": "power",
    "base": "3",
    "exponent": "5",
    "modulus": "7"
})
# Output: {"result": 5, "explanation": "3^5 mod 7 = 5"}

๐Ÿงฎ Boolean Logic Examples

Generate Truth Table

result = await session.call_tool("generate_truth_table", {
    "expression": "(A & B) | (~A & C)"
})
# Returns: Complete truth table with all input combinations

Simplify Boolean Expression

result = await session.call_tool("simplify_boolean", {
    "expression": "(A & B) | (A & ~B)"
})
# Output: {"simplified": "A", "steps": ["..."]}

Convert to CNF

result = await session.call_tool("convert_to_cnf", {
    "expression": "(A | B) & (C | D)"
})
# Output: Expression in Conjunctive Normal Form

๐Ÿ“Š Algorithm Visualization Examples

Visualize Bubble Sort

result = await session.call_tool("visualize_bubble_sort", {
    "array": "64,34,25,12,22,11,90"
})
# Returns: Step-by-step sorting with comparisons and swaps

Binary Search

result = await session.call_tool("visualize_binary_search", {
    "array": "1,3,5,7,9,11,13,15",
    "target": "7"
})
# Output: Search path with index calculations

Dijkstra's Algorithm

result = await session.call_tool("visualize_dijkstra", {
    "graph": "A-B:4,A-C:2,B-C:1,B-D:5,C-D:8",
    "start": "A",
    "end": "D"
})
# Returns: Shortest path with distances

๐Ÿ” Cryptography Examples

RSA Encryption

# Generate keys
keys = await session.call_tool("generate_rsa_keys", {
    "key_size": "2048"
})

# Encrypt message
encrypted = await session.call_tool("rsa_encrypt_decrypt", {
    "action": "encrypt",
    "message": "Hello World",
    "public_key": keys["public_key"]
})

# Decrypt message
decrypted = await session.call_tool("rsa_encrypt_decrypt", {
    "action": "decrypt",
    "ciphertext": encrypted["ciphertext"],
    "private_key": keys["private_key"]
})

AES Encryption

result = await session.call_tool("aes_encrypt_decrypt", {
    "action": "encrypt",
    "text": "Sensitive Data",
    "key": "my-secret-key-32-characters-long"
})
# Output: {"ciphertext": "...", "iv": "...", "tag": "..."}

Caesar Cipher

result = await session.call_tool("caesar_cipher", {
    "action": "encrypt",
    "text": "HELLO",
    "shift": "3"
})
# Output: {"result": "KHOOR", "explanation": "Each letter shifted by 3"}

๐ŸŽ“ Use Cases

  • Computer Science Education - Teach algorithms and data structures
  • Cryptography Learning - Understand encryption methods
  • Mathematics Research - Number theory and discrete math
  • Algorithm Analysis - Visualize complexity and performance
  • Code Interviews - Practice common algorithmic problems
  • Academic Projects - Implement mathematical concepts

๐Ÿ—๏ธ Technical Stack

  • Language: Python 3.11+
  • Framework: Model Context Protocol (MCP)
  • Math Libraries: SymPy, NumPy
  • Crypto: Python Cryptography library
  • Graphs: NetworkX
  • Build: UV package manager

๐Ÿ“Š Performance

  • Startup Time: < 2 seconds
  • Response Time: < 100ms for most operations
  • Memory: < 50MB baseline
  • Concurrency: Async/await support

๐Ÿ”’ Security Note

Educational Purpose: Caesar and Vigenere ciphers are for learning only. Use AES or RSA for real-world encryption.

๐Ÿค Contributing

We welcome contributions! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

See CONTRIBUTING.md for detailed guidelines.

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ”— Links & Resources

Official Links

Community

MCP Resources

๐Ÿ“ˆ Project Stats

GitHub stars GitHub forks GitHub issues GitHub pull requests

๐Ÿ™ Acknowledgments

  • Model Context Protocol team at Anthropic
  • SymPy and NumPy communities
  • Python Cryptography developers
  • NetworkX graph library maintainers
  • All contributors and users

๐Ÿ“ž Support

  • ๐Ÿ“ง Email: Open an issue for support
  • ๐Ÿ’ฌ Discussions: Use GitHub Discussions
  • ๐Ÿ› Bugs: Report via Issues
  • ๐Ÿ’ก Features: Request via Issues with enhancement label

Made with โค๏ธ for the discrete mathematics and computer science community

โญ Star this repo if you find it useful! โญ

Report Bug ยท Request Feature ยท Contribute

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

discrete_structures_mcp-0.1.4.tar.gz (6.8 MB view details)

Uploaded Source

Built Distribution

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

discrete_structures_mcp-0.1.4-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file discrete_structures_mcp-0.1.4.tar.gz.

File metadata

  • Download URL: discrete_structures_mcp-0.1.4.tar.gz
  • Upload date:
  • Size: 6.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for discrete_structures_mcp-0.1.4.tar.gz
Algorithm Hash digest
SHA256 4edbbb0e8bc19ff3ef93ca77740016a6afd9ea355ad82595b59b4730a3f30548
MD5 d1d9f80c662df5f3fdda27e281243570
BLAKE2b-256 6e5a5ede21a84ef190b5a7b5d55ab982aeea6075da9c953ac8e680d0e6a39e33

See more details on using hashes here.

File details

Details for the file discrete_structures_mcp-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for discrete_structures_mcp-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ce7e045016be076f3a3b029a3bc1330a989739c1d02083d6b533d567e40a8508
MD5 56f228bb7322f2775d1cca6774d1f20d
BLAKE2b-256 130c9003ac4165a54639aa99a78a58488e40e135893a0f6f4ef1d41552e6da15

See more details on using hashes here.

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