mcpField
C
Curate-Ipsum

Curate-Ipsum

ローカル
github.com/egoughnour開発ツール037 週間前に更新

Curate-Ipsum について

Curate-Ipsumは、コードパッチの生成と検査を行う開発者向けMCPサーバーです。ミューテーションテスト、グラフ分析、信念改訂、コード合成、形式検証を一連のワークフローにまとめています。

主な機能

  1. 01複数フレームワークのミューテーションテスト
  2. 02呼び出しグラフと到達可能性の分析
  3. 03来歴付きの信念改訂
  4. 04CEGISと遺伝的アルゴリズムによるパッチ合成
  5. 05Z3とangrによる検証
  6. 06RAGによるコードグラフ検索

活用シーン

  1. 01単体・統合・ミューテーションテストによるコード領域の評価
  2. 02到達可能な関数と依存関係の特定
  3. 03パッチの生成と性質の検証
  4. 04合成に使うコードコンテキストの検索

MCP 対応

MCP stdioを介して30のツールを公開し、テスト、信念改訂、ロールバック、グラフ分析、検証、合成、RAG検索を提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
pypicurate-ipsum2.5.1
mcpbcurate-ipsum.mcpb2.5.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Curate-Ipsum

信念改訂による検証済みコード合成を実現する、グラフスペクトルベースの MCP サーバー

PyPI MCP Registry Claude Desktop License: MIT Python

Top Language Code Size Last Commit Repo Size

Curate-Ipsum は、LLM が生成したコード(高速で、もっともらしいものの、未検証)と、形式検証済みのパッチ(低速で、正確かつ信頼できるもの)の間のギャップを埋めます。ミューテーションテストを、到達可能性解析、シンボリック実行、自動テスト生成を支える、堅牢で自己修復するコードベースメタデータを維持するための大規模なシステムの一要素として扱います。

インストール

# PyPI
pip install curate-ipsum

# or with uv
uv pip install curate-ipsum

# Docker (includes baked-in embedding model)
docker pull ghcr.io/egoughnour/curate-ipsum:latest
Claude Desktop / MCP クライアント

claude_desktop_config.json に追加します:

{
  "mcpServers": {
    "curate-ipsum": {
      "command": "uvx",
      "args": ["curate-ipsum"]
    }
  }
}

または Docker を使用します(埋め込みモデルが事前に読み込まれており、Python は不要です):

{
  "mcpServers": {
    "curate-ipsum": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/egoughnour/curate-ipsum:latest"]
    }
  }
}

MCP ツール

Curate-Ipsum は、MCP の stdio トランスポート経由で 6 つのグループに整理された 30 個のツールを公開します:

テスト — run_unit_tests、run_integration_tests、run_mutation_tests、get_run_history、get_region_metrics、detect_frameworks、parse_region、check_region_relationship、create_region

信念改訂 — add_assertion、contract_assertion、revise_theory、get_entrenchment、list_assertions、get_theory_snapshot、store_evidence、get_provenance、why_believe、belief_stability

ロールバックと失敗 — rollback_to、undo_last_operations、analyze_failure、list_world_history

グラフスペクトル — extract_call_graph、compute_partitioning、query_reachability、get_hierarchy、find_function_partition、incremental_update、persistent_graph_stats、graph_query

検証 — verify_property(Z3/angr)、verify_with_orchestrator(CEGAR の予算段階的増加)、list_verification_backends

合成と RAG — synthesize_patch(CEGIS + 遺伝的アルゴリズム + LLM)、synthesis_status、cancel_synthesis、list_synthesis_runs、rag_index_nodes、rag_search、rag_stats

現在の状況

最終更新:2026-02-08

コンポーネント状況
マルチフレームワーク解析(5 フレームワーク)完了
グラフ基盤(Spectral/Kameda)完了
信念改訂エンジン(AGM/Provenance)完了
合成ループ(CEGIS/Genetic)完了
検証バックエンド(Z3/angr)完了
グラフ永続化(SQLite/Kuzu)完了
RAG / セマンティック検索(Chroma)完了

課題

LLM が生成するコードは、次のようなものです:

  • ✅ 構文的に有効(通常)
  • ✅ 統計的にもっともらしい
  • ❌ 意味的に正しい(場合による)
  • ❌ 型安全(偶然に頼る)
  • ❌ 形式検証済み(まったくない)

現在のアプローチは、LLM の出力を無条件に信頼するか、完全に拒否するかのどちらかです。どちらも最適ではありません。

ソリューション

LLM は低コストの候補生成に使用し、その後、形式的な保証を実現するために計算リソースを投入します。

LLM Candidates (k samples)
        ↓
   Seed Population
        ↓
┌───────────────────────────┐
│  CEGIS + CEGAR + Genetic  │  ← Verification loop
│  + Belief Revision        │
└───────────────────────────┘
        ↓
  Strongly Typed Patch
  (with proof certificate)

最先端技術との主な差別化要因

従来のミューテーションテストとの比較(Stryker、mutmut、cosmic-ray)
従来Curate-Ipsum
単一のツール、単一の言語複数フレームワークのオーケストレーション
フラットなファイル単位の解析階層的なグラフスペクトル分解
出力はミューテーションスコア合成への入力としてミューテーションテストを使用
形式的検証なしCEGIS/CEGAR 検証ループ
手動でのテスト作成パッチの自動生成
LLM によるコード生成との比較(Copilot、Claude、GPT)
LLM のみCurate-Ipsum
モデルの出力を信頼モデルの出力を検証
単一サンプル、またはベスト・オブ・k集団ベースの改善
形式的な保証なし証明書
ステートレスな生成プロヴェナンスを伴う信念改訂
もっともらしいコード正しさが証明されたコード
プログラム合成との比較(Sketch、Rosette、SyGuS)
従来の合成Curate-Ipsum
手書きのスケッチLLM が生成する候補
コールドスタート検索LLM の集団からのウォームスタート
実行をまたいだ学習なし全域化理論が知識を蓄積
単一の仕様複数フレームワークにまたがる暗黙的領域
シンボリック実行との比較(KLEE、S2E)
シンボリック実行Curate-Ipsum
パス探索のみ合成と統合
ブール制約の求解数学的な再定式化(SymPy)
単一ツールによる解析グラフ DB + SMT + ミューテーションのオーケストレーション
コード生成なし検証済みパッチを生成
新たな貢献
  1. グラフスペクトルによるコード分解

    • 最適な到達可能性を実現するフィードラー・ベクトル分割
    • 階層的な SCC 凝縮
    • 平面部分グラフの特定 → O(1) の Kameda クエリ
    • クリストフェル記法による部分グラフを原子的な非平面単位として扱う
  2. 合成のための信念改訂

    • AGM 準拠の理論改訂
    • 最小限の縮小を実現するエントレンチメント順序
    • 失敗モード分析のためのプロヴェナンス DAG
    • ロールバックにより妥当性を向上(失敗によって普遍モデルを洗練)
  3. 暗黙的領域の検出

    • スペクトル異常からテストが不十分なコードを特定
    • フレームワーク間でのミューテーション耐性から重要な領域を特定
    • 過去の変更可能性をパーティション最適化に活用
  4. 数学的な制約の再定式化

    • ブール制約の難問 → 微分/根の探索
    • SymPy によるパス条件のエンコーディング
    • SMT と数値解法のハイブリッド

アーキテクチャ

flowchart TB
    subgraph MCP["MCP Interface"]
        direction TB

        subgraph Sources["Analysis Sources"]
            direction LR
            MUT["🧬 Mutation<br/>Orchestrator<br/><small>Stryker<br/>mutmut<br/>cosmic-ray</small>"]
            SYM["🔬 Symbolic<br/>Execution<br/><small>KLEE · Z3<br/>SymPy</small>"]
            GRAPH["📊 Graph<br/>Analysis<br/><small>Joern<br/>Neo4j<br/>Fiedler</small>"]
        end

        MUT --> BRE
        SYM --> BRE
        GRAPH --> BRE

        BRE["🧠 Belief Revision Engine<br/><small>AGM Theory · Entrenchment · Provenance DAG</small>"]

        BRE --> SYNTH

        SYNTH["⚙️ Synthesis Loop<br/><small>CEGIS · CEGAR · Genetic Algorithm</small>"]

        SYNTH --> |"counterexample"| BRE

        SYNTH --> OUTPUT

        OUTPUT["✅ Strongly Typed Patch<br/><small>Proof Certificate ·Type Signature<br/>Pre/Post Conditions</small>"]
    end

    LLM["🤖 LLM Candidates<br/><small>top-k samples</small>"] --> SYNTH

    style MCP fill:#1a1a2e,stroke:#16213e,color:#eee
    style Sources fill:#16213e,stroke:#0f3460,color:#eee
    style MUT fill:#0f3460,stroke:#e94560,color:#eee
    style SYM fill:#0f3460,stroke:#e94560,color:#eee
    style GRAPH fill:#0f3460,stroke:#e94560,color:#eee
    style BRE fill:#533483,stroke:#e94560,color:#eee
    style SYNTH fill:#e94560,stroke:#ff6b6b,color:#fff
    style OUTPUT fill:#06d6a0,stroke:#118ab2,color:#000
    style LLM fill:#ffd166,stroke:#ef476f,color:#000

ロードマップ

フェーズ 1:基盤 ✅
  • MCP サーバーのインフラストラクチャ
  • Stryker レポートの解析
  • 実行履歴と PID メトリクス
  • 柔軟な領域モデル(階層:ファイル → クラス → 関数 → 行)
  • mutmut パーサーの統合
  • フレームワークの自動検出
  • 統合パーサーインターフェース
フェーズ 2:グラフインフラストラクチャ ✅
  • グラフモデル(CodeGraph、Node、Edge)
  • 呼び出しグラフの抽出(AST ベース)
  • ASR 抽出器(インポート/クラス分析)
  • 依存関係グラフの抽出(モジュールレベルのインポート)
  • 呼び出しグラフ/依存関係グラフからのラプラシアン構築
  • フィードラー・ベクトルの計算(scipy.sparse.linalg)
  • 仮想シンク/ソースを使った再帰的なフィードラー分割
  • SCC 検出と階層的凝縮
  • 平面部分グラフの特定(Boyer-Myrvold)
  • O(1) の到達可能性を実現する Kameda 前処理
  • MCP ツール(抽出、分割、到達可能性、階層、検索)
フェーズ 3:複数フレームワークのオーケストレーション ✅
  • 統合ミューテーションフレームワークインターフェース
  • cosmic-ray パーサー
  • poodle パーサー
  • universalmutator パーサー
フェーズ 4:信念改訂エンジン ✅
  • py-brs ライブラリの統合(AGM コア)
  • エビデンスアダプター(変更結果 → 信念)
  • curate-ipsum 用の理論マネージャー
  • AGM 縮約(py-brs v2.0.0 リリース済み)
  • 固執度の計算(py-brs v2.0.0)
  • 来歴 DAG の保存とクエリ
  • 失敗モードアナライザー
  • ロールバック機構
フェーズ 5:統合ループ ✅
  • LLM によるシード生成を含む CEGIS の実装
  • AST を考慮した交叉を用いる遺伝的アルゴリズム
  • エントロピーの監視と多様性の注入
  • 反例に基づく変更
  • CEGAR の予算拡大(10s → 30s → 120s)
フェーズ 6:検証バックエンド ✅
  • SMT ソルバー用の Z3 統合(デフォルトのバックエンド)
  • angr Docker によるシンボリック実行(高コスト層)
  • 予算拡大を備えた CEGAR オーケストレーター
  • 検証ハーネスビルダー(C ソース生成)
  • テスト用のモックバックエンド
  • 代替ソルバー(CVC5、Boolector)
  • SymPy パス条件のエンコーディング
フェーズ 7:グラフの永続化 ✅
  • 抽象 GraphStore ABC
  • SQLite グラフストア(プライマリ)
  • Kuzu グラフストア(オプション)
  • 統合結果の永続化
  • Kameda & Fiedler の永続化
  • 増分更新エンジン
フェーズ 8:RAG / セマンティック検索 ✅
  • ChromaDB ベクトルストアの統合
  • sentence-transformers 埋め込みプロバイダー(all-MiniLM-L6-v2)
  • グラフ拡張 RAG パイプライン(ベクトル top-k → 隣接ノードの展開 → 再ランク付け)
  • 時間的関連性のための減衰スコアリング
  • コンテキストを考慮した統合のための CEGIS 統合
フェーズ 9:本番環境向けの堅牢化 ✅
  • CI/CD(GitHub Actions — lint、テストマトリックス、統合、ロックファイル)
  • リリースパイプライン(タグのプッシュ → PyPI + GHCR + MCP レジストリ)
  • uv ロックファイル(149 パッケージ)
  • pre-commit フック(ruff format + lint + ロックチェック)
  • MCP バンドルのパッケージ化(server.json、smithery.yaml、manifest.json)
  • HTML/SARIF レポート
  • IDE 拡張機能(VSCode)
  • リグレッション検出とアラート

今後の作業

高度なオーケストレーション(延期)
  • 暗黙的な領域の検出(スペクトル異常)
  • 矛盾のないフレームワークの割り当て
  • フレームワーク横断の生存分析
セマンティック検索と RAG
  • セマンティック検索用の Code Graph RAG
  • セマンティック検索インデックス(ChromaDB)
  • グラフ拡張を用いた RAG 検索パイプライン
  • テキストから Cypher クエリへの変換

クイックスタート

# Clone and install (dev)
git clone https://github.com/egoughnour/curate-ipsum.git
cd curate-ipsum
uv sync --extra dev --extra verify --extra rag --extra graph --extra synthesis

# Run the MCP server
uv run curate-ipsum

# Or run tests
make test                     # fast suite (no Docker/model needed)
make test-all                 # including integration tests

設定

すべての設定は環境変数で行います(.env.example を参照)。

CURATE_IPSUM_GRAPH_BACKEND=sqlite   # or kuzu
MUTATION_TOOL_DATA_DIR=.mutation_tool_data
MUTATION_TOOL_LOG_LEVEL=INFO
CHROMA_HOST=                         # empty = in-process, or localhost:8000
EMBEDDING_MODEL=all-MiniLM-L6-v2

サービススタック全体(ChromaDB + angr runner)を利用する場合:

make docker-up-verify         # starts Chroma + angr via Docker Compose

ドキュメント

計画と設計
アーキテクチャ
リファレンス
  • 概要 - 機能カタログ
  • 今後の方向性 - 機能強化のロードマップ
  • シナジー - ツールエコシステムの統合
  • CONTEXT - AI アシスタント向けのセッションコンテキスト
  • DOCS_INDEX - ドキュメントのクイックリファレンス

主要な参考文献

  • Alchourrón、Gärdenfors、Makinson(1985)。On the Logic of Theory Change
  • Fiedler(1973)。Algebraic Connectivity of Graphs
  • Kameda(1975)。On the Vector Representation of Reachability in Planar Directed Graphs
  • Solar-Lezama(2008)。Program Synthesis by Sketching(CEGIS)
  • Clarke ほか(2000)。Counterexample-Guided Abstraction Refinement(CEGAR)

ライセンス

MIT License — 詳細は LICENSE を参照してください。


コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。