world-model-mcp
World Model MCP
코딩 에이전트를 위한 이벤트 클록. 코드베이스를 위한 시간적 지식 그래프를 구축하는 MCP 서버입니다. Claude Code 세션에서 의사결정 추적을 캡처하고, 이를 테스트 결과와 연결하며, 궤적을 학습하고, 편집 경계에서 제약 조건을 강제합니다.
상태: 알파 (v0.6.0) -- 코딩 에이전트를 위한 이벤트 클록. 22개의 MCP 도구, 186개의 테스트, PreToolUse 강제 적용, 의사결정 추적, 예측 계층. 기여를 환영합니다.
기능
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언제든지 수동으로 다시 시드(re-seed)하거나 시드할 수도 있습니다:
# 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 │
└──────────────────────────────────────────────────────────┘핵심 개념
시간적 사실(Temporal Facts): 모든 사실은
validAt및invalidAt타임스탬프를 가집니다."함수 X는 2024-01-15부터 2024-03-20까지 존재함"
쿼리: "3월 1일에 사실이었던 것은 무엇인가?"
증거 체인(Evidence Chains): 모든 주장은 출처를 추적합니다.
사실 -> 세션 -> 이벤트 -> 소스 코드 위치
제약 조건 학습(Constraint Learning): 사용자 수정으로부터 패턴 인식
자동 규칙 유형 추론 (린팅, 아키텍처, 테스트)
심각도 감지 (오류, 경고, 정보)
향후 참조를 위한 예제 생성
이중 검증(Dual Validation): 두 가지 검증 소스를 결합
월드 모델 제약 조건 (사용자로부터 학습)
외부 린터 (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}문서
QUICKSTART.md - 5분 설정 가이드
CONTRIBUTING.md - 기여 가이드라인
RELEASE_NOTES.md - 버전 기록 및 기능
테스트
# 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 라이선스 - 상업적 및 개인적 용도로 무료 사용 가능
지원
이슈: GitHub Issues
This server cannot be installed
Maintenance
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