World Model MCP
El reloj de eventos para agentes de programación. Un servidor MCP que construye un grafo de conocimiento temporal para tu base de código: captura trazas de decisiones de sesiones de Claude Code, las vincula a resultados de pruebas, aprende trayectorias y aplica restricciones en el límite de edición.
Estado: Alfa (v0.6.0) -- El reloj de eventos para agentes de programación. 22 herramientas MCP, 186 pruebas, aplicación de PreToolUse, trazas de decisiones, capa de predicción. Las contribuciones son bienvenidas.
👁 PyPI
👁 Descargas
👁 Licencia: MIT
👁 Python 3.11+
Qué hace
World Model MCP crea un grafo de conocimiento temporal de tu base de código que aprende de cada sesión de Claude Code para:
Prevenir alucinaciones - Valida referencias de API/funciones contra entidades conocidas antes de su uso
Detener errores repetidos - Aprende restricciones de las correcciones y las aplica en sesiones futuras
Reducir regresiones - Rastrea correcciones de errores y advierte cuando los cambios afectan regiones críticas
Piensa en ello como darle a Claude una memoria a largo plazo de tu proyecto.
Related MCP server: NervusDB MCP Server
Inicio rápido
Instalación
# 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 activeTambién puedes volver a sembrar o sembrar manualmente en cualquier momento:
# Seed from existing codebase
world-model seed
# Re-seed with force (re-processes already seeded files)
world-model seed --forceQué se instala
your-project/
├── .mcp.json # MCP server configuration
├── .claude/
│ ├── settings.json # Hook configuration
│ ├── hooks/ # Compiled TypeScript hooks
│ └── world-model/ # SQLite databases (~155 KB)Características
1. Prevención de alucinaciones
Antes:
// Claude invents an API that doesn't exist
const user = await User.findByEmail(email); // This method doesn't existDespués:
// Claude checks the world model first
const user = await User.findOne({ email }); // Verified to existObjetivo: Reducir las referencias a APIs inexistentes validando contra el grafo de conocimiento
2. Aprendizaje a partir de correcciones
Sesión 1: El usuario corrige a Claude
// Claude writes:
console.log('debug info');
// User corrects to:
logger.debug('debug info');
// World model learns: "Use logger.debug() not console.log()"Sesión 2: Claude utiliza el patrón aprendido
// Claude automatically writes:
logger.debug('debug info'); // No correction neededObjetivo: Los patrones aprendidos persisten entre sesiones y evitan violaciones repetidas
3. Prevención de regresiones
// 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-introducedObjetivo: Detectar posibles regresiones antes de la ejecución del código
Cómo funciona
Arquitectura
┌──────────────────────────────────────────────────────────┐
│ 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 │
└──────────────────────────────────────────────────────────┘Conceptos clave
Hechos temporales: Cada hecho tiene marcas de tiempo
validAtyinvalidAt"La función X existió desde el 15-01-2024 hasta el 20-03-2024"
Consulta: "¿Qué era cierto el 1 de marzo?"
Cadenas de evidencia: Cada afirmación se remonta a su origen
Hecho -> Sesión -> Evento -> Ubicación del código fuente
Aprendizaje de restricciones: Reconocimiento de patrones a partir de correcciones del usuario
Inferencia automática de tipos de reglas (linting, arquitectura, pruebas)
Detección de gravedad (error, advertencia, información)
Generación de ejemplos para referencia futura
Validación dual: Combina dos fuentes de validación
Restricciones del modelo mundial (aprendidas del usuario)
Linters externos (ESLint, Pylint, Ruff)
Herramientas MCP
Veintidós herramientas MCP disponibles para Claude Code:
1. query_fact
Comprueba si las APIs/funciones existen antes de usarlas
result = query_fact(
query="Does User.findByEmail exist?",
entity_type="function"
)
# Returns: {exists: bool, confidence: float, facts: [...]}2. record_event
Captura la actividad de desarrollo con cadenas de razonamiento
record_event(
event_type="file_edit",
file_path="src/api/auth.ts",
reasoning="Added JWT authentication middleware"
)3. validate_change
Validación previa a la ejecución contra restricciones y linters
result = validate_change(
file_path="src/api/auth.ts",
proposed_content="..."
)
# Returns: {safe: bool, violations: [...], suggestions: [...]}4. get_constraints
Recupera reglas específicas del proyecto para un archivo
constraints = get_constraints(
file_path="src/**/*.ts",
constraint_types=["linting", "architecture"]
)5. record_correction
Aprende de las ediciones del usuario (ALTA PRIORIDAD)
record_correction(
claude_action={...},
user_correction={...},
reasoning="Use logger.debug instead of console.log"
)6. get_related_bugs
Evaluación de riesgo de regresión
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
Escanea la base de código y completa el grafo de conocimiento con entidades y relaciones
result = seed_project(
project_dir=".",
force=False
)
# Returns: {files_seeded: int, entities_created: int, relationships_created: int}8. ingest_pr_reviews
Extrae comentarios de revisión de PR de GitHub y convierte los comentarios del equipo en restricciones
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}Documentación
QUICKSTART.md - Guía de configuración de 5 minutos
CONTRIBUTING.md - Directrices de contribución
Pruebas
# Run tests
pytest
# With coverage
pytest --cov=world_model_server --cov-report=html186 pruebas que cubren CRUD del grafo de conocimiento, búsqueda FTS5, gestión de restricciones, seguimiento de errores, auto-siembra, ingesta de revisiones de PR, trazas de decisiones, vinculación de resultados, aprendizaje de trayectorias, capa de predicción, salud de la memoria, detección de contradicciones, punteros de transcripción, identidad del proyecto y aplicación de PreToolUse. Consulta tests/ para más detalles.
Configuración
Variables de entorno
# 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=1Nota: Crea un archivo .env en la raíz de tu proyecto (consulta .env.example) - git lo ignora automáticamente.
Personalización de hooks
Edita .claude/settings.json para personalizar qué herramientas activan los hooks del modelo mundial:
{
"hooks": {
"PostToolUse": [{
"matcher": "Edit|Write|Bash",
"hooks": [...]
}]
}
}Soporte de idiomas
Actualmente soportado:
TypeScript / JavaScript
Python
Próximamente:
Go, Rust, Java, C++
Arquitectura extensible: Fácil de añadir nuevos analizadores de lenguaje (consulta CONTRIBUTING.md)
Privacidad y seguridad
Local-First: Todos los datos permanecen en tu máquina
Sin telemetría: Cero seguimiento o transmisión de datos externos
LLM opcional: Funciona sin clave API (usa patrones regex como alternativa)
Almacenamiento cifrado: Las bases de datos SQLite son archivos locales (cifra tu disco para mayor seguridad)
Uso de clave API (solo si proporcionas ANTHROPIC_API_KEY):
Extracción de entidades de cambios de código
Inferencia de restricciones a partir de correcciones
Nunca envía: Credenciales, secretos, PII
Mejores prácticas de seguridad:
Nunca subas archivos
.enval repositorioUsa
.env.examplecomo plantillaAlmacena las claves API solo en variables de entorno o archivos
.envEl
.gitignoreexcluye automáticamente los archivos sensibles
Hoja de ruta
v0.2.x
[x] Auto-siembra: el grafo de conocimiento se completa desde la base de código existente en la configuración
[x] Inteligencia de revisión de PR: ingesta comentarios de revisión de GitHub como restricciones
[x] Seguimiento de relaciones: grafo de importación y dependencias entre entidades
[x] Soporte multilingüe: Python, TypeScript/JavaScript, Solidity, Go, Rust
[x] Comando de consulta CLI para búsquedas en el grafo de conocimiento
[x] 40 pruebas, 8 herramientas MCP
v0.3.0
[x] Coincidencia a nivel de módulo: la consulta por nombre de módulo encuentra el archivo y su contenido
[x] Re-siembra incremental: solo reprocesa los archivos cambiados desde la última siembra
[x] Coincidencia difusa de entidades: búsqueda aproximada de nombres para errores tipográficos y abreviaturas
[x] Caché de consultas: caché en memoria con TTL para búsquedas repetidas
[x] Soporte para Java: cobertura multilingüe completa
[x] Validación de la canalización del servidor MCP en proyectos reales
v0.4.0
[x] Vinculación de resultados: fallos de pruebas vinculados a cambios de código con hechos
[x] Aprendizaje de trayectorias: patrones de co-edición rastreados entre sesiones
[x] Captura de trazas de decisiones: registro estructurado de propuestas del agente y correcciones humanas
[x] Búsqueda de entidades entre proyectos con registro de proyectos
[x] 5 nuevas herramientas MCP (13 en total), 104 pruebas
v0.5.0
[x] Predicción de regresión, simulación "qué pasaría si", predicción de fallos de pruebas
[x] Transferencia de conocimiento entre proyectos, salud de la memoria, TTL/decadencia de hechos
[x] Paquete de pre-edición get_context_for_action, seguimiento de violación de restricciones, find_contradictions
[x] 20 herramientas MCP, 151 pruebas
v0.6.0 (Actual) — Aplicación, procedencia, identidad
[x] Hook de aplicación de restricciones PreToolUse: denegar violaciones graves en el límite de edición
[x] Punteros de transcripción indexados: hidratar cualquier hecho de vuelta a la conversación de origen
[x] Desacoplamiento de la identidad del proyecto: UUID estable a través de cambios de nombre de directorio
[x] Deduplicación por hash de contenido para hechos y restricciones
[x] Generación automática de CLAUDE.md desde el grafo de conocimiento
[x] Subclase BetaAbstractMemoryTool para la integración del SDK de Anthropic
[x] Empaquetado de extensión de escritorio (.mcpb) para Claude Desktop
[x] 22 herramientas MCP, 13 subcomandos CLI, 186 pruebas
v0.7.0 (Siguiente)
[ ] Extracción basada en AST mediante tree-sitter
[ ] Programador de decadencia de hechos en segundo plano (opcional)
[ ] Contradicciones ponderadas por confianza con resolución automática
[ ] Federación de restricciones a nivel de organización
Contribución
Las contribuciones son bienvenidas. Consulta CONTRIBUTING.md para:
Configuración de desarrollo
Estándares de codificación
Añadir soporte de idiomas
Escribir pruebas
Enviar PRs
Áreas donde se necesita ayuda:
Analizadores de lenguaje (Go, Rust, Java, C++)
Optimización del rendimiento
Mejoras en la documentación
Comentarios sobre pruebas en el mundo real
Estadísticas
Tamaño del proyecto:
~4,800 líneas de código
13 módulos de Python
3 implementaciones de hook de TypeScript
Eficiencia de almacenamiento:
Base de datos vacía: ~155 KB
Por entidad: ~500 bytes
Por hecho: ~800 bytes
Licencia
Licencia MIT - Gratuita para uso comercial y personal
Soporte
Problemas: GitHub Issues
Discusiones: GitHub Discussions
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
