temporal-knowledge
Kenning Continuity
Conocimiento empresarial que se acumula en lugar de degradarse.
Un servidor MCP que permite a los agentes LLM acumular conocimiento organizativo a lo largo de las sesiones, delimitado por dominio, con Neo4j como respaldo. Cada invariante estructural la impone una herramienta en lugar de pedirse en una instrucción, y no se expone ninguna escritura Cypher en bruto, de modo que el grafo no puede corromperse sin importar lo que decida hacer el modelo.
Está en producción a escala empresarial: 37 dominios, 376 sesiones y 3,000+ entidades de conocimiento acumuladas durante cuatro meses de uso diario.
Por qué esto no se degrada al llenarse
La mayoría de los sistemas de memoria acumulativa fallan de una de dos maneras. Confabulan desde el primer día, porque nada distingue una cosa que fue observada de una cosa que fue inferida por un modelo que intenta ser útil. O sobreviven a la demo y luego se degradan bajo el peso de la acumulación, porque cada escritura es una adición sin restricciones y el almacén se llena lentamente de casi-duplicados, sobrescrituras silenciosas y afirmaciones que nadie puede rastrear hasta un autor.
Cuatro compromisos, todos impuestos estructuralmente:
Nada se sobrescribe. No existe update_knowledge ni retype_knowledge. Cambiar lo que se sabe sobre una entidad crea un nodo nuevo enlazado con su predecesor mediante EVOLVED_FROM. La comprensión anterior sigue ahí, sigue siendo legible, sigue siendo atribuible. Haber estado equivocados antes es un hecho sobre el registro, no algo que deba borrarse de él.
Toda afirmación llega a su autor en dos saltos. Una entidad de conocimiento es descubierta por una Session; una Session está dirigida por una Person. Ambas aristas las escriben herramientas que se niegan a ejecutarse sin un director real. Así, «quién dijo esto, y cuándo, y con qué propósito» siempre se puede responder, no por convención, sino porque no existe ninguna ruta de código que cree conocimiento sin ello.
La identidad nunca se infiere de una cadena. Diecisiete nodos llamados «Alice Example» en once dominios son diecisiete actos de referencia, correctamente distintos. Afirmar que dos de ellos son una misma persona es una afirmación que alguien hace, en una sesión, registrada como REFERENT_CLAIM que puede contener el valor distinct — porque un sistema sin un lugar donde registrar la respuesta no volverá a hacer la misma pregunta eternamente. La identidad por coincidencia de cadenas es donde la mayoría de los grafos de conocimiento empiezan a mentir en silencio.
La estructura transporta los hechos; las propiedades no los duplican. Una entidad de conocimiento no tiene propiedad domain. La coloca en un dominio la sesión que la descubrió y desde allí se llega a ella mediante un recorrido. La propiedad que precedió a esto se había desviado, que es lo que hacen las desnormalizaciones: 21 entidades llevaban una cadena domain que nombraba un dominio real sin ninguna ruta hacia ellas. Un hecho mantenido como texto junto a una estructura, en lugar de ser sostenido por ella, es un hecho que acabará discrepando de la estructura.
No hay campo confidence, deliberadamente. La confianza de alguien en una ocasión es un hecho sobre su experiencia y no se transmite; un lector posterior deriva la suya a partir de la descripción y de lo que sabe. Lo que las puntuaciones de confianza intentan alcanzar lo transportan en su lugar aristas que cualquier lector puede juzgar: VALIDATION, INVALIDATING y un Challenge sin Solution asociado.
Si has ejecutado un sistema de memoria acumulativa a escala y también te has topado con estos muros, queremos saber de ti.
Related MCP server: Neo4j Agent Memory MCP Server
Arquitectura
Capa de proceso (inmutable) — Person → Session, dentro de Domain → Session. NEXT_SESSION siempre apunta hacia delante en el tiempo; así lo impone la herramienta. La pertenencia a esta capa es la capacidad de contener futuros posibles y medirlos hacia su materialización; nada aquí es un referente.
Capa de conocimiento (solo anexión) — 11 tipos ontológicos y 7 subetiquetas, conectados por 13 tipos de conexión, cada nodo marcado como :Knowledge. Los cambios de descripción crean un nuevo nodo de cadena enlazado mediante EVOLVED_FROM.
Consulta HOWTO.xml para conocer la enseñanza orientada al operador que debe darse a un LLM como andamiaje de invariantes, y docs/design/ para el razonamiento que hay detrás de cada compromiso.
Requisitos previos
Python 3.10+
Instancia de Neo4j 5.x (local o remota)
uv (para el desarrollo; no es necesario para instalar)
Inicio rápido
pip install kenning-continuity
kenning-continuity --db-url bolt://localhost:7687O desde el código fuente:
uv sync
uv run kenning-continuity --db-url bolt://localhost:7687Configuración
Los indicadores de CLI tienen prioridad sobre las variables de entorno, que a su vez tienen prioridad sobre los valores predeterminados.
Indicador de CLI | Variable de entorno | Predeterminado | Descripción |
|
|
| URL de conexión de Neo4j |
|
|
| Nombre de usuario de Neo4j |
|
|
| Contraseña de Neo4j |
|
|
| Nombre de la base de datos de Neo4j |
|
|
|
|
|
| (ninguno) | Prefijo del nombre de la herramienta (p. ej. |
|
|
| Tiempo de espera de las consultas de lectura, en segundos |
|
|
| Host HTTP (transportes no stdio) |
|
|
| Puerto HTTP (transportes no stdio) |
|
|
| Ruta HTTP (transportes no stdio) |
|
| (ninguno) | Orígenes CORS separados por comas |
|
| (ninguno) | Hosts permitidos separados por comas; protección contra el reenlace de DNS |
Configuración del cliente MCP
Claude Desktop / Claude Code
{
"mcpServers": {
"temporal-knowledge": {
"command": "kenning-continuity",
"args": ["--db-url", "bolt://localhost:7687"]
}
}
}Transporte HTTP
kenning-continuity \
--db-url bolt://localhost:7687 \
--transport streamable-http \
--server-host 0.0.0.0 \
--server-port 8000 \
--allow-origins "http://localhost:3000" \
--allowed-hosts "localhost,127.0.0.1"Superficie de herramientas (23 herramientas)
Una sesión se desarrolla así: create_domain (una vez) → begin_session → crear / evolucionar / confirmar / conectar conocimiento → end_session.
El servidor no tiene estado. begin_session devuelve un session_id que el cliente pasa a todas las herramientas de conocimiento posteriores. Una sesión que nunca se cierra permanece active, por diseño.
Proceso (4)
Herramienta | Descripción |
| Todos los dominios con recuentos de sesiones y última actividad |
| Crear un dominio de conocimiento (idempotente) |
| Inicia una sesión; devuelve |
| Cierra una sesión con un resumen de lo aprendido |
begin_session devuelve un recuento por tipo, no el estado del dominio. Devolver el estado en línea suponía 600,820 caracteres en un dominio de producción — aproximadamente 150k tokens gastados antes de que la sesión hubiera hecho una pregunta. Llama a get_domain_state con types y limit para la parte que realmente necesitas.
Mutación de conocimiento (6)
Herramienta | Descripción |
| Crea entidades. Rechaza las colisiones, rechaza los tipos de proceso y rechaza los campos desconocidos en lugar de descartarlos |
| La única forma de cambiar una descripción. Crea un nuevo nodo de cadena que conserva el anterior mediante |
| Registra que las entidades fueron revisadas y se encontraron sin cambios |
| Compactar una cadena |
| Enlaza entidades. Toma un |
| Afirma que dos referentes son lo mismo, con una |
Consulta (5)
Herramienta | Descripción |
| Texto completo en nombres y descripciones, solo cabeza de cadena |
| Entidades actuales de un dominio; |
| Quién trabajó en qué, cuándo y con qué propósito |
| Recorre |
| Vía de escape Cypher de solo lectura; las escrituras se rechazan |
Taxonomía (2)
Herramienta | Descripción |
| 11 tipos ontológicos y 7 subetiquetas, con el retículo |
| 13 tipos de arista de conocimiento y 5 de proceso |
Análisis de grafos (6)
Herramienta | Descripción |
| Crear una proyección de grafo GDS |
| Eliminar una proyección |
| Centralidad PageRank |
| Centralidad de intermediación: nodos puente |
| Detección de comunidades Louvain |
| Componentes débilmente conexos |
Sistema de tipos
Todo nodo de conocimiento lleva :Knowledge, exactamente una etiqueta ontológica, una propiedad ont_type que nombra esa etiqueta de manera determinista y cero o más subetiquetas mediante el multietiquetado de Neo4j.
Tipo ontológico | Qué es |
| Aquello que actúa; tiene agencia |
| Disposición sin agencia; forma persistente |
| Cosa producida que persiste y puede ser referenciada |
| Un sitio, campus, región o extensión — siempre un referente, nunca un referidor |
| Acontecimiento localizado temporalmente |
| Una revelación, un descubrimiento, un avance |
| Estructura recurrente reconocida a través de instancias |
| Obstáculo en tiempo presente |
| Resolución que funcionó; se empareja con |
| Regla derivada de la experiencia |
| La razón detrás de algo |
Las sub-etiquetas son una retícula, no un mapa plano
PersonReferent → Actor System → Structure
Organization → Actor Process → Structure
Team → Organization → Actor Configuration → Structure
Service → Structurecreate_knowledge acepta un tipo ontológico (Actor) o una sub-etiqueta
(Team), y aplica la cadena completa: :Knowledge:Actor:Organization:Team.
Por lo tanto, una consulta de organizaciones encuentra equipos. Un mapa plano
emitiría :Actor:Team, descartando silenciosamente el nivel intermedio, y nada
lo reportaría.
Tipos de conexión (13)
EVOLVED_FROM, ENABLING, REQUIRING, INFORMING, CAUSING, COMPOSING,
EXTENDING, RECOGNITION, VALIDATION, INVALIDATING, ASSOCIATED_WITH,
SITUATED_AT, REFERENT_CLAIM.
Los bordes de proceso — HAS_SESSION, NEXT_SESSION, DIRECTED, DISCOVERED,
CONFIRMED — solo los escriben las herramientas de proceso y no pueden crearse
mediante create_connections.
Qué debe decir una descripción
Una descripción dice lo que la entidad es, no lo que le sucedió o lo que
sucedió a su alrededor. Las observaciones temporales pertenecen a los nodos
Event alcanzados por bordes.
Correcto, para un
Actor:PersonReferent: "Fundador de lululemon. Mayor accionista individual (8,4%). Presentado bajo Schedule 13D — no pasivo."Incorrecto: "SCHEDULE 13D/A Enmienda n.º 10 presentada el 8 de octubre de 2025. WILSON SE HACE PÚBLICO…"
La presentación es un Event. Wilson es el fundador. Que la
presentación revele algo sobre él es un borde INFORMING. Su descripción
debería sobrevivir sin cambios a cualquier número de presentaciones futuras, a
menos que su identidad misma cambie.
Desarrollo
uv sync --group dev
./.venv/bin/pytest tests/unit # mocked substrate, no database
./.venv/bin/pytest tests/integration # real Neo4j via testcontainers; needs Docker
./.venv/bin/pyrightUn defecto que vive en una consulta Cypher es invisible para las pruebas
unitarias — simulan el sustrato, y un error de fabricación de bordes llegó a
pasarlas todas de forma idéntica antes y después de la corrección. Cualquier
cosa que toque una consulta pertenece a tests/integration/.
Licencia y atribución
Licenciado bajo la Apache License, Version 2.0. Úsalo, modifícalo, ejecútalo en producción, comercialmente o de cualquier otra forma.
El trabajo aquí es la ontología — la retícula de tipos, la resolución por
recorrido, la colocación de la posición epistémica en los bordes, el principio
de que cada invariante vive en una herramienta. Eso se entrega libremente, y
Apache-2.0 solo pide que la atribución viaje con ello: conserva LICENSE y
NOTICE, y marca lo que cambiaste.
El nombre Kenning AI no forma parte de esa concesión (Apache-2.0 §6). Consulta
TRADEMARKS.md para saber qué puedes hacer sin pedir permiso —
que es casi todo, incluido decir sobre qué está construido tu software.
Contacto
contact@kenningai.com — sin formularios, sin embudos, nos llega directamente.
Estamos especialmente interesados en escuchar a cualquiera que haya ejecutado un sistema de memoria acumulativa a escala y haya formado una opinión sobre por qué fallan. Ese modo de fallo es la razón de casi todas las decisiones en este repositorio, y el desacuerdo de alguien que lo ha experimentado en primera persona vale más para nosotros que el acuerdo de quien no lo ha hecho.
Kenning AI · kenningai.com
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Company brain for AI agents — temporal knowledge graph search, exploration, and durable memory.
Shared long-term memory for AI agents: save and recall context as a searchable knowledge graph.
Persistent knowledge graph for AI-augmented teams. Store decisions, findings, and standing rules across agent sessions with semantic search and typed connections. Includes cross-session memory, audit trail, workspace isolation, and secret detection. Built for teams running agents that need to remember. Free until launch with team tier as default, anon trial available.
Versioned agent memory in your own Postgres: portable context, permissioned, audit trail.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables storage and retrieval of knowledge in a graph database format, allowing users to create, update, search, and delete entities and relationships in a Neo4j-powered knowledge graph through natural language.5-
- AlicenseAqualityCmaintenanceEnables AI agents to store, retrieve, and connect information in a Neo4j graph database as persistent memory, with semantic relationships, natural language search, and temporal tracking across conversations.9069MIT
- AlicenseNot gradedqualityBmaintenanceAudit-grade memory backbone for agent teams. Bi-temporal facts (event time + transaction time, with recall(as_of=...) replay), 6-step deterministic retrieval (no LLM in the critical path), conversation ingest with speaker-locked dual-pass extraction, per-tenant Postgres row-level security, and Ed25519-signed provenance. Postgres + pgvector + Neo4j defaults.14MIT
- AlicenseNot gradedqualityDmaintenanceProvides persistent knowledge graph memory for AI agents, enabling them to store, recall, and query facts about people, projects, and relationships across sessions.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/kenningai/kenning-continuity'
If you have feedback or need assistance with the MCP directory API, please join our Discord server