Skip to main content
Glama

World Model MCP

コーディングエージェントのためのイベントクロック。コードベースの時系列ナレッジグラフを構築するMCPサーバーです。Claude Codeセッションからの意思決定の痕跡をキャプチャし、テスト結果と関連付け、軌跡を学習し、編集境界で制約を強制します。

ステータス: Alpha (v0.6.0) -- コーディングエージェントのためのイベントクロック。22個のMCPツール、186個のテスト、PreToolUseによる強制、意思決定の痕跡、予測レイヤーを備えています。コントリビューションを歓迎します。

PyPI Downloads License: MIT Python 3.11+


機能

World Model MCPは、コードベースの時系列ナレッジグラフを作成し、すべてのClaude Codeセッションから学習することで以下を実現します:

  • ハルシネーションの防止 - 使用前に既知のエンティティと照らし合わせてAPI/関数参照を検証します

  • 繰り返されるミスの防止 - 修正から制約を学習し、将来のセッションで適用します

  • リグレッションの削減 - バグ修正を追跡し、変更が重要な領域に触れた場合に警告します

Claudeにプロジェクトの長期記憶を与えるものと考えてください。


クイックスタート

インストール

# 1. Install the package
pip install world-model-mcp

# 2. Setup in your project (auto-seeds the knowledge graph from existing code)
cd /path/to/your/project
python -m world_model_server.cli setup

# 3. Restart Claude Code
# Done! The world model is pre-populated and active

また、いつでも再シードや手動シードを行うことができます:

# Seed from existing codebase
world-model seed

# Re-seed with force (re-processes already seeded files)
world-model seed --force

インストールされるもの

your-project/
├── .mcp.json                    # MCP server configuration
├── .claude/
│   ├── settings.json           # Hook configuration
│   ├── hooks/                  # Compiled TypeScript hooks
│   └── world-model/            # SQLite databases (~155 KB)

特徴

1. ハルシネーションの防止

以前:

// Claude invents an API that doesn't exist
const user = await User.findByEmail(email); // This method doesn't exist

以後:

// Claude checks the world model first
const user = await User.findOne({ email }); // Verified to exist

目標: ナレッジグラフと照合することで、存在しないAPI参照を減らす

2. 修正からの学習

セッション1: ユーザーがClaudeを修正

// Claude writes:
console.log('debug info');

// User corrects to:
logger.debug('debug info');

// World model learns: "Use logger.debug() not console.log()"

セッション2: Claudeが学習したパターンを使用

// Claude automatically writes:
logger.debug('debug info'); // No correction needed

目標: 学習したパターンをセッション間で保持し、繰り返しの違反を防ぐ

3. リグレッションの防止

// Week 1: Bug fixed (null check added)
if (user && user.email) { ... }

// Week 2: Refactoring
// World model warns: "This line preserves a critical bug fix"
// Claude preserves the null check

// Result: Bug not re-introduced

目標: コード実行前に潜在的なリグレッションを検出する


仕組み

アーキテクチャ

┌──────────────────────────────────────────────────────────┐
│ Claude Code + Hooks                                      │
│ Captures: file edits, tool calls, user corrections       │
└──────────────────────────────────────────────────────────┘
                         |
                         v
┌──────────────────────────────────────────────────────────┐
│ MCP Server (Python)                                      │
│ - 22 MCP tools for querying/recording/predicting          │
│ - LLM-powered entity extraction (Claude Haiku)           │
│ - External linter integration (ESLint, Pylint, Ruff)     │
└──────────────────────────────────────────────────────────┘
                         |
                         v
┌──────────────────────────────────────────────────────────┐
│ Knowledge Graph (SQLite + FTS5)                          │
│ - entities.db: APIs, functions, classes                  │
│ - facts.db: Temporal assertions with evidence            │
│ - relationships.db: Entity dependency graph              │
│ - constraints.db: Learned rules from corrections         │
│ - sessions.db: Session history and outcomes              │
│ - events.db: Activity log with reasoning chains          │
└──────────────────────────────────────────────────────────┘

主要な概念

  1. 時系列ファクト: すべての事実に validAt(有効開始)と invalidAt(有効終了)のタイムスタンプがあります

    • 「関数Xは2024-01-15から2024-03-20まで存在した」

    • クエリ:「3月1日時点で何が真だったか?」

  2. 証拠チェーン: すべての主張はソースに遡ることができます

    • 事実 -> セッション -> イベント -> ソースコードの場所

  3. 制約学習: ユーザーの修正からのパターン認識

    • ルールタイプの自動推論(リンティング、アーキテクチャ、テスト)

    • 重大度の検出(エラー、警告、情報)

    • 将来の参照のための例生成

  4. 二重検証: 2つの検証ソースを組み合わせます

    • ワールドモデルの制約(ユーザーから学習)

    • 外部リンター(ESLint、Pylint、Ruff)


MCPツール

Claude Codeで利用可能な22個のMCPツール:

1. query_fact

APIや関数を使用する前に存在を確認します

result = query_fact(
    query="Does User.findByEmail exist?",
    entity_type="function"
)
# Returns: {exists: bool, confidence: float, facts: [...]}

2. record_event

推論チェーンとともに開発アクティビティをキャプチャします

record_event(
    event_type="file_edit",
    file_path="src/api/auth.ts",
    reasoning="Added JWT authentication middleware"
)

3. validate_change

制約とリンターに対する実行前の検証を行います

result = validate_change(
    file_path="src/api/auth.ts",
    proposed_content="..."
)
# Returns: {safe: bool, violations: [...], suggestions: [...]}

4. get_constraints

ファイル固有のプロジェクトルールを取得します

constraints = get_constraints(
    file_path="src/**/*.ts",
    constraint_types=["linting", "architecture"]
)

5. record_correction

ユーザーの編集から学習します(高優先度)

record_correction(
    claude_action={...},
    user_correction={...},
    reasoning="Use logger.debug instead of console.log"
)

6. get_related_bugs

リグレッションリスクの評価を行います

result = get_related_bugs(
    file_path="src/api/auth.ts",
    change_description="refactoring authentication logic"
)
# Returns: {bugs: [...], risk_score: float, critical_regions: [...]}

7. seed_project

コードベースをスキャンし、エンティティと関係性でナレッジグラフを埋めます

result = seed_project(
    project_dir=".",
    force=False
)
# Returns: {files_seeded: int, entities_created: int, relationships_created: int}

8. ingest_pr_reviews

GitHubのPRレビューコメントを取り込み、チームのフィードバックを制約に変換します

result = ingest_pr_reviews(
    repo="owner/repo",  # Auto-detected from git remote if omitted
    count=10
)
# Returns: {prs_scanned: int, constraints_created: int, constraints_updated: int}

ドキュメント


テスト

# Run tests
pytest

# With coverage
pytest --cov=world_model_server --cov-report=html

ナレッジグラフのCRUD、FTS5検索、制約管理、バグ追跡、自動シード、PRレビュー取り込み、意思決定の痕跡、結果の関連付け、軌跡学習、予測レイヤー、メモリの健全性、矛盾検出、トランスクリプトポインタ、プロジェクトのアイデンティティ、PreToolUse強制をカバーする186個のテスト。詳細は tests/ を参照してください。


設定

環境変数

# Database location (default: ./.claude/world-model/)
export WORLD_MODEL_DB_PATH="/custom/path"

# Anthropic API key (optional - enables LLM extraction)
# IMPORTANT: Never commit this! Use .env file (see .env.example)
export ANTHROPIC_API_KEY="your-api-key-here"

# Model selection
export WORLD_MODEL_EXTRACTION_MODEL="claude-3-haiku-20240307"  # Fast
export WORLD_MODEL_REASONING_MODEL="claude-3-5-sonnet-20241022"  # Accurate

# Debug mode
export WORLD_MODEL_DEBUG=1

注意: プロジェクトのルートに .env ファイルを作成してください(.env.example を参照)。gitによって自動的に無視されます。

フックのカスタマイズ

.claude/settings.json を編集して、どのツールがワールドモデルフックをトリガーするかをカスタマイズします:

{
  "hooks": {
    "PostToolUse": [{
      "matcher": "Edit|Write|Bash",
      "hooks": [...]
    }]
  }
}

言語サポート

現在サポートされている言語

  • TypeScript / JavaScript

  • Python

近日対応予定

  • Go, Rust, Java, C++

拡張可能なアーキテクチャ: 新しい言語パーサーの追加は容易です(CONTRIBUTING.md を参照)


プライバシーとセキュリティ

  • ローカルファースト: すべてのデータはマシン内に留まります

  • テレメトリなし: 追跡や外部へのデータ送信は一切ありません

  • オプションのLLM: APIキーなしでも動作します(フォールバックとして正規表現パターンを使用)

  • 暗号化ストレージ: SQLiteデータベースはローカルファイルです(セキュリティのためにディスクを暗号化してください)

APIキーの使用ANTHROPIC_API_KEY を提供した場合のみ):

  • コード変更からのエンティティ抽出

  • 修正からの制約推論

  • 送信されないもの:認証情報、シークレット、個人情報(PII)

セキュリティのベストプラクティス

  • .env ファイルをコミットしない

  • テンプレートとして .env.example を使用する

  • APIキーは環境変数または .env ファイルのみに保存する

  • .gitignore は機密ファイルを自動的に除外します


ロードマップ

v0.2.x

  • [x] 自動シード:セットアップ時に既存のコードベースからナレッジグラフを生成

  • [x] PRレビューインテリジェンス:GitHubのレビューコメントを制約として取り込む

  • [x] 関係性の追跡:エンティティ間のインポートおよび依存関係グラフ

  • [x] 多言語サポート:Python, TypeScript/JavaScript, Solidity, Go, Rust

  • [x] ナレッジグラフ検索用のCLIコマンド

  • [x] 40個のテスト、8個のMCPツール

v0.3.0

  • [x] モジュールレベルのマッチング:モジュール名によるクエリでファイルとその内容を検索

  • [x] インクリメンタルな再シード:前回のシード以降に変更されたファイルのみを再処理

  • [x] ファジーエンティティマッチング:タイプミスや略語のための近似名検索

  • [x] クエリキャッシュ:繰り返し検索のためのTTL付きメモリ内キャッシュ

  • [x] Javaサポート:完全な多言語カバレッジ

  • [x] 実際のプロジェクトでのMCPサーバーパイプライン検証

v0.4.0

  • [x] 結果の関連付け:テストの失敗を事実とともにコード変更に関連付け

  • [x] 軌跡学習:セッション間で共同編集パターンを追跡

  • [x] 意思決定の痕跡のキャプチャ:エージェントの提案と人間の修正の構造化ログ

  • [x] プロジェクトレジストリによるプロジェクト横断的なエンティティ検索

  • [x] 5個の新しいMCPツール(合計13個)、104個のテスト

v0.5.0

  • [x] リグレッション予測、「what if」シミュレーション、テスト失敗予測

  • [x] プロジェクト間の知識転送、メモリの健全性、事実のTTL/減衰

  • [x] get_context_for_action 事前編集バンドル、制約違反追跡、find_contradictions

  • [x] 20個のMCPツール、151個のテスト

v0.6.0 (現在) — 強制、来歴、アイデンティティ

  • [x] PreToolUse制約強制フック:編集境界での重大な違反を拒否

  • [x] インデックス付きトランスクリプトポインタ:事実を元の会話に紐付け

  • [x] プロジェクトアイデンティティの分離:ディレクトリ名変更後も安定したUUID

  • [x] 事実と制約のコンテンツハッシュによる重複排除

  • [x] ナレッジグラフからのCLAUDE.mdの自動生成

  • [x] Anthropic SDK統合のためのBetaAbstractMemoryToolサブクラス

  • [x] Claude Desktop用のデスクトップ拡張(.mcpb)パッケージング

  • [x] 22個のMCPツール、13個のCLIサブコマンド、186個のテスト

v0.7.0 (次期)

  • [ ] tree-sitterによるASTベースの抽出

  • [ ] バックグラウンドでの事実減衰スケジューラ(オプトイン)

  • [ ] 自動解決を伴う信頼度加重の矛盾検出

  • [ ] 組織全体の制約フェデレーション


コントリビューション

コントリビューションを歓迎します。以下については CONTRIBUTING.md を参照してください:

  • 開発環境のセットアップ

  • コーディング基準

  • 言語サポートの追加

  • テストの作成

  • PRの提出

支援が必要な領域

  • 言語パーサー(Go, Rust, Java, C++)

  • パフォーマンスの最適化

  • ドキュメントの改善

  • 実環境でのテストフィードバック


統計

プロジェクトサイズ

  • 約4,800行のコード

  • 13個のPythonモジュール

  • 3個のTypeScriptフック実装

ストレージ効率

  • 空のデータベース:約155 KB

  • エンティティあたり:約500バイト

  • 事実あたり:約800バイト


ライセンス

MITライセンス - 商用および個人利用は無料


サポート

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
8wRelease cycle
3Releases (12mo)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SaravananJaichandar/world-model-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server