Discrete Structures について
Discrete Structures は、離散数学やコンピューターサイエンスに取り組む学生、教育者、開発者向けの MCP サーバーです。論理、数論、アルゴリズムの可視化、暗号ツールをまとめ、手順も説明します。
主な機能
- 01ブール式の評価と変換
- 02数論演算の計算
- 03ソートとグラフアルゴリズムの可視化
- 04一般的な暗号方式での暗号化と復号
- 05RSA 鍵ペアの生成
活用シーン
- 01離散数学の概念を教える
- 02アルゴリズムの手順や探索経路を確認する
- 03数論と暗号を練習する
- 04コンピューターサイエンスの課題を支援する
MCP 対応
Claude Desktop、Cline、Zed などの MCP クライアントに、数学、アルゴリズム、暗号のツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🚀 概要
Discrete Structures MCP Server は、Claude Desktop、Cline、Zed などの AI アシスタントに21 個の強力な数学ツールを提供する、包括的な Model Context Protocol サーバーです。離散数学、データ構造、アルゴリズム、暗号技術に取り組む学生、教育者、開発者に最適です。
このサーバーを選ぶ理由
- 🎯 4 つのカテゴリにわたる21 個の実用レベルのツール
- 📚 段階的なビジュアライゼーションを備えた教育重視の設計
- 🔒 エンタープライズ向け暗号技術(RSA、AES、Caesar、Vigenere)
- 📊 ソートとグラフアルゴリズムのアルゴリズムビジュアライゼーション
- 🧮 CNF/DNF 変換に対応したブール論理
- 🔢 素因数分解やモジュラー演算を含む数論
- ⚡
uvx discrete-structures-mcpによる高速インストール - 🌐 見つけやすいようにMCP Registry に掲載
✨ 機能
🧮 論理ツール(5 ツール)
🔢 数論ツール(5 ツール)
|
📊 アルゴリズムのビジュアライザー(6 ツール)
🔐 暗号技術ツール(5 ツール)
|
📦 インストール
⚡ クイックインストール(推奨)
# Install and run directly with uvx
uvx discrete-structures-mcp
📥 pip でインストール
# Install globally
pip install discrete-structures-mcp
# Run the server
discrete-structures-mcp
🛠️ 開発用インストール
# 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
🎯 クイックスタート
Claude Desktop での使用
claude_desktop_config.json に追加します。
{
"mcpServers": {
"discrete-structures": {
"command": "uvx",
"args": ["discrete-structures-mcp"]
}
}
}
その他の MCP クライアントでの使用
あらゆる MCP クライアントに対応しています。
💻 ツール呼び出しの例
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)
💻 ツール呼び出しの例
🔢 数論の例
最大公約数と最小公倍数を計算する
# 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": "..."}
素因数分解
result = await session.call_tool("prime_factors", {
"number": "84"
})
# Output: {"factors": [2, 2, 3, 7], "factorization": "2² × 3 × 7"}
モジュラー演算
result = await session.call_tool("modular_arithmetic", {
"operation": "power",
"base": "3",
"exponent": "5",
"modulus": "7"
})
# Output: {"result": 5, "explanation": "3^5 mod 7 = 5"}
🧮 ブール論理の例
真理値表を生成する
result = await session.call_tool("generate_truth_table", {
"expression": "(A & B) | (~A & C)"
})
# Returns: Complete truth table with all input combinations
ブール式を簡略化する
result = await session.call_tool("simplify_boolean", {
"expression": "(A & B) | (A & ~B)"
})
# Output: {"simplified": "A", "steps": ["..."]}
CNF に変換する
result = await session.call_tool("convert_to_cnf", {
"expression": "(A | B) & (C | D)"
})
# Output: Expression in Conjunctive Normal Form
📊 アルゴリズム可視化の例
バブルソートを可視化する
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
二分探索
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
ダイクストラ法
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
🔐 暗号化の例
RSA 暗号化
# 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 暗号化
result = await session.call_tool("aes_encrypt_decrypt", {
"action": "encrypt",
"text": "Sensitive Data",
"key": "my-secret-key-32-characters-long"
})
# Output: {"ciphertext": "...", "iv": "...", "tag": "..."}
シーザー暗号
result = await session.call_tool("caesar_cipher", {
"action": "encrypt",
"text": "HELLO",
"shift": "3"
})
# Output: {"result": "KHOOR", "explanation": "Each letter shifted by 3"}
🎓 ユースケース
- コンピューターサイエンス教育 - アルゴリズムとデータ構造を教える
- 暗号学習 - 暗号化方式を理解する
- 数学研究 - 数論と離散数学
- アルゴリズム解析 - 計算量とパフォーマンスを可視化する
- コーディング面接 - よくあるアルゴリズム問題を練習する
- 学術プロジェクト - 数学的概念を実装する
🏗️ 技術スタック
- 言語: Python 3.11+
- フレームワーク: Model Context Protocol (MCP)
- 数学ライブラリ: SymPy、NumPy
- 暗号化: Python Cryptography ライブラリ
- グラフ: NetworkX
- ビルド: UV パッケージマネージャー
📊 パフォーマンス
- 起動時間: < 2 秒
- 応答時間: ほとんどの操作で < 100ms
- メモリ: ベースラインで < 50MB
- 並行処理: Async/await をサポート
🔒 セキュリティに関する注意
教育目的: シーザー暗号とヴィジュネル暗号は学習用です。実際の暗号化には AES または RSA を使用してください。
🤝 貢献
貢献を歓迎します!始めるには、以下の手順に従ってください。
- フォークする
- 機能ブランチを作成する(
git checkout -b feature/amazing-feature) - 変更をコミットする(
git commit -m 'Add amazing feature') - ブランチにプッシュする(
git push origin feature/amazing-feature) - プルリクエストを作成する
詳しいガイドラインについては、CONTRIBUTING.md を参照してください。
📄 ライセンス
このプロジェクトは MIT ライセンスの下で公開されています。詳細については、LICENSE ファイルを参照してください。
🔗 リンクとリソース
公式リンク
- 🏠 ホームページ: GitHub リポジトリ
- 📦 PyPI パッケージ: discrete-structures-mcp
- 🌐 MCP レジストリ: 公式掲載ページ
- 📝 ドキュメント: README
- 🐛 課題トラッカー: バグを報告
コミュニティ
- 💬 ディスカッション: GitHub Discussions
- 📢 お知らせ: リポジトリをウォッチして最新情報を確認してください
- 🤝 貢献: 貢献ガイドを参照してください
MCP リソース
- 📖 MCP ドキュメント: modelcontextprotocol.io
- 🛠️ MCP SDK: Python SDK
- 🌟 MCP サーバー: コミュニティサーバー
📈 プロジェクトの統計
🙏 謝辞
- Anthropic の Model Context Protocol チーム
- SymPy と NumPy のコミュニティ
- Python Cryptography の開発者
- NetworkX グラフライブラリのメンテナー
- すべての貢献者とユーザー
📞 サポート
- 📧 メール:サポートについては Issue を作成してください
- 💬 ディスカッション:GitHub Discussions をご利用ください
- 🐛 バグ:Issues から報告してください
- 💡 機能:enhancement ラベルを付けて Issues からリクエストしてください
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。