SERVIDOR MCP
Configuración
El servidor MCP le permite a Claude Desktop, Cursor, Windsurf, Hermes Agent, OpenClaw y cualquier cliente compatible con MCP usar ChainMemory como herramienta nativa.
Instalación
Agregá esta configuración a tu claude_desktop_config.json:
JSON
{
"mcpServers": {
"chainmemory": {
"command": "npx",
"args": ["-y", "chainmemory-mcp"],
"env": {
"CHAINMEMORY_API_KEY": "tu-api-key"
}
}
}
}
Reiniciá el cliente después. Publicar una versión nueva en npm no actualiza a los clientes que ya están corriendo: el paquete se descarga cuando el cliente arranca.
Herramientas disponibles
La versión actual expone 34 herramientas. Leer es gratis; las operaciones que cuestan AIC están marcadas. Ver Costos para la tabla completa.
Memoria
| Herramienta | Qué hace | Costo |
|---|---|---|
chainmemory_remember | Guarda una memoria vinculada a un proyecto, con tags, categoría e importancia (1–10) | 0.001 AIC + almacenamiento |
chainmemory_recall | Devuelve tus memorias más recientes, de la más nueva a la más vieja. No busca: lista. Devuelve vistas previas de 80 caracteres | gratis |
search_memories | Búsqueda semántica sobre tus memorias, devolviendo el texto completo de cada coincidencia | gratis |
get_memory | Lee una memoria completa, descifrada desde la cadena, con verificación de integridad contra su hash anclado | gratis |
list_memories_filtered | Lista memorias por proyecto y estado de archivado. Devuelve vistas previas de 80 caracteres | gratis |
update_memory_tags | Reemplaza los tags de una memoria | gratis |
archive_memory · unarchive_memory | Oculta una memoria de listados e inyecciones, o la restaura. En los dos casos sigue en el registro | gratis |
chainmemory_seal | Sella una memoria de forma permanente on-chain para que ya no pueda modificarse. Requiere clave de wallet | 0.001 AIC |
Verificación
| Herramienta | Qué hace | Costo |
|---|---|---|
get_memory_proof | La prueba de anclaje compartible de una memoria: su event_hash y sus coordenadas on-chain. Un tercero la verifica sin tu API key, y el contenido nunca se expone | gratis |
verify_project_state | Prueba pública y sin autenticación de un Project State: cada versión anclada con su state_hash, id de ancla, transacción y bloque, más cómo verificarlo vos mismo en el contrato | gratis |
audit_memory | Auditoría forense de una memoria: recomputa su hash desde el contenido guardado y lo compara contra el anclado | 0.1 AIC — gratis con dry_run |
audit_state | Auditoría completa de un Project State: recomputa el state_hash con el motor determinista y devuelve el ancla más el historial de versiones | 5 AIC — gratis con dry_run |
Project State
| Herramienta | Qué hace | Costo |
|---|---|---|
get_project_state | El estado consolidado: visión, fase, foco actual, decisiones, riesgos, supuestos, preguntas abiertas, prioridades, constraints, métricas, vocabulario y entorno de trabajo — más su state_hash y su ancla on-chain. Con include_roles: false omite el texto de los contratos de rol | gratis |
update_project_state | Propone operaciones de la gramática de 29 ops. El servidor valida, las aplica con el builder determinista, recomputa el hash y persiste | 0.05 AIC + 0.005 por op aplicada |
Verifiable Role Contracts
| Herramienta | Qué hace | Costo |
|---|---|---|
list_role_contracts | Lista los roles definidos en un proyecto con su versión y estado. Llamala primero: los ids de rol no se adivinan | gratis |
get_role_contract | Lee el contrato de un rol: propósito, reglas con sus checks y severidad, protocolo de trabajo. Acepta version para auditar uno anterior | gratis |
assume_role | Abre una sesión de rol auditada bajo un contrato activo. Fija el hash del contrato y el state_hash del Brain, y entrega el entorno de trabajo declarado por el dueño | 0.001 AIC |
release_role | Cierra una sesión con un resumen de lo hecho y lo pendiente. Las sesiones se auto-liberan a los 60 minutos | gratis |
list_role_sessions · get_role_session | El rastro de auditoría: quién asumió qué rol, cuándo, cómo cerró, y a qué hashes quedó atada la sesión | gratis |
Inyección
| Herramienta | Qué hace | Costo |
|---|---|---|
quote_inject | Cotiza una inyección antes de pagarla: qué ids existen y cuáles no, total de caracteres, costo exacto con su reparto, y si tu saldo alcanza | gratis |
inject_memories | Inyecta hasta 50 memorias en la conversación actual. Optimista: el texto vuelve enseguida y el pago se confirma en segundo plano | 0.1 AIC por llamada |
get_inject_balance · get_inject_history | Tu saldo de AIC y para cuántas inyecciones alcanza; el historial de inyecciones con su costo | gratis |
get_my_context | Tu memoria reciente como contexto portable listo para inyectar, entre todas las plataformas | gratis |
Proyectos e identidad
| Herramienta | Qué hace | Costo |
|---|---|---|
list_projects · create_project · delete_project | Gestión de tus proyectos y sus palabras clave de auto-etiquetado | gratis |
list_project_templates · add_project_from_template | Plantillas incluidas: general, development, blockchain, business, personal, research | gratis |
chainmemory_register | Registra una identidad de IA en la cadena. Necesario una vez antes de escribir memorias | gratis |
chainmemory_profile · chainmemory_stats | El perfil de tu identidad y las estadísticas de la red | gratis |
Consolidación autónoma
Cualquier cliente de IA puede consolidar el estado del proyecto de forma autónoma con update_project_state. Ésta es la arquitectura "el cliente consolida, la cadena verifica": el modelo propone, el servidor valida, y recién ahí se convierte en estado.
Leer el estado actual
Llamar a get_project_state para cargar el estado consolidado y su marca de agua consolidated_until_event.
Analizar lo nuevo
Con list_memories_filtered o search_memories, leer las memorias creadas después de la marca de agua para identificar qué cambió.
Proponer las operaciones
Armar un array de operaciones de la gramática de 29 ops y enviarlo por update_project_state.
El servidor valida y persiste
Cada operación se valida contra la gramática, se aplica con el builder determinista, se computa el nuevo state_hash (SHA3-256), se vincula la evidencia con árboles Merkle, y se persiste la versión. Las operaciones inválidas se rechazan individualmente — las válidas se aplican igual.
Gramática de operaciones (29 ops)
Cada operación tiene un tipo (op) y sus propios argumentos. Usá evidence_memory_ids — un array de números de memoria — para vincular la evidencia que la respalda; el servidor resuelve los event hashes automáticamente.
| Operación | Campos requeridos | Descripción |
|---|---|---|
add_decision | title, statement | Registra una decisión. Sin status se crea como proposed |
set_decision_status | id, to | Cambia el estado (proposed / confirmed / superseded) |
supersede_decision | id, by_id | Marca una decisión como reemplazada por otra |
add_milestone | title | Registra un milestone |
set_milestone_status | id, to | Actualiza su estado |
add_risk | title, severity | Documenta un riesgo |
set_risk_status | id, to | Cambia su estado (open / closed) |
add_assumption | statement | Registra un supuesto |
invalidate_assumption | id | Marca un supuesto como inválido |
add_open_question | question | Registra una pregunta abierta |
answer_open_question | id, answer | La responde |
add_priority | title, priority_score | Agrega un ítem priorizado |
set_priority_status | id, to | Cambia su estado (active / done) |
reorder_priority | id, priority_score | Cambia su score |
set_focus | value | Actualiza el foco actual |
set_phase | value | Actualiza la fase del proyecto |
set_vision | statement | Actualiza la visión |
add_vocabulary · update_vocabulary | term, definition | Define o redefine un término |
add_constraint | statement | Agrega una restricción |
remove_constraint | id | Quita una restricción |
set_metric | name, value | Fija o actualiza una métrica. No acepta evidence_memory_ids |
add_env_host · add_env_service · add_env_repo · add_env_rule | varían según el tipo | Describen dónde y cómo trabaja el dueño: hosts, servicios, repositorios y reglas operativas |
set_env_status · verify_env · supersede_env | id | Actualizan, confirman como vigente, o retiran un ítem del entorno |
set_metric usa name, no key. supersede_decision usa by_id, no superseded_by. Y set_metric rechaza evidence_memory_ids, que el resto de las operaciones aditivas sí acepta. Como el fee tiene una base fija por llamada, mandar todo en una sola llamada sale más barato que descubrir firmas de a una.
*_env_* describen dónde trabaja el dueño para que una IA lo sepa desde su primer mensaje. Guardan sólo topología: hosts, puertos, rutas, reglas. El servidor rechaza credenciales, claves y contraseñas.
Ejemplo
JSON — llamada a update_project_state
{
"project": "mi-proyecto",
"ops": [
{
"op": "add_decision",
"title": "Migrar a PostgreSQL",
"statement": "SQLite no soporta escrituras concurrentes a la escala actual",
"evidence_memory_ids": [142, 145]
},
{
"op": "set_metric",
"name": "db_migration_status",
"value": "planning"
},
{
"op": "add_milestone",
"title": "Migración a PostgreSQL aprobada por el equipo",
"status": "done",
"evidence_memory_ids": [145]
}
],
"consolidated_until_event": 150
}
applied_count y el detalle de cada rechazo. Sólo se cobran las operaciones aplicadas, y si el estado resultante es idéntico al anterior, no se cobra nada.
Flujo de trabajo
El flujo típico con MCP:
Inicio de sesión
Pedile a tu IA que cargue el contexto del proyecto. Llama a get_project_state y arranca sabiendo en qué estás trabajando. Nada se inyecta solo: el modelo decide cuándo usar las herramientas.
Trabajo normal
Trabajás con tu IA como siempre. Cuando pasa algo importante — una decisión, un descubrimiento, un cambio de arquitectura — guarda la memoria con chainmemory_remember.
Consolidación
Al final, la IA propone operaciones con update_project_state: qué se decidió, qué riesgo se abrió, qué prioridad cambió. Eso es lo que convierte una pila de conversaciones en estado.
Continuidad
En la sesión siguiente, en este modelo o en cualquier otro, el estado consolidado ya está. No se pierde nada en el medio.
Flujos avanzados
Claude Desktop — sesiones de arquitectura
Claude es muy bueno en diseño de alto nivel. Usá ChainMemory para preservar las decisiones de arquitectura entre sesiones:
Patrón de prompt — Claude Desktop
"Antes de empezar, cargá el estado de mi proyecto desde ChainMemory.
Después diseñemos el sistema de autenticación.
Cuando decidamos, guardá las decisiones clave con tags 'architecture'
y 'auth'. Usá importancia 9 para todo lo que afecte a otros
miembros del equipo, y después propone las operaciones para
consolidar el estado."
Claude lee el estado con get_project_state, trabaja con vos en el diseño, guarda las decisiones con chainmemory_remember, y propone la consolidación con update_project_state. En la sesión siguiente, la arquitectura de auth ya es parte del estado.
Cursor — código con memoria
La integración MCP de Cursor le permite a tu IA de código recordar por qué el código se escribió de cierta manera. La configuración es la misma que para Claude Desktop, en settings.json.
Un flujo efectivo:
- Inicio de sesión — "Cargá el estado del proyecto": decisiones vigentes, riesgos abiertos y prioridades
- Durante el desarrollo — "Guardá: implementé el handler de webhooks con reintentos, 3 intentos con backoff exponencial"
- Corrección de bugs — "Guardá: arreglé la race condition en el procesamiento de pagos — el webhook de Stripe llegaba antes de que la transacción de DB commiteara"
- Fin de sesión — "Consolidá lo que cambió hoy", que propone las operaciones y actualiza el estado
Patrón de memoria agéntica
El patrón más potente de MCP es la memoria agéntica, donde la IA gestiona su propio conocimiento:
System prompt para memoria agéntica
Tenés acceso a ChainMemory por MCP. Seguí estas reglas:
1. Al inicio de sesión: llamá a get_project_state para cargar el
estado consolidado del proyecto.
2. Cuando tomes una decisión significativa: guardala con
chainmemory_remember.
- Incluí POR QUÉ elegiste ese camino
- Etiquetala con el dominio relevante
- Importancia 1-10: usá 7 o más para decisiones, 5 para
observaciones
3. Cuando completes un milestone: guardalo y decí qué sigue.
4. Cuando identifiques un riesgo: guardalo con su severidad.
5. Al cerrar la sesión: proponé la consolidación con
update_project_state. No cierres ni supersedas ítems
existentes sin aprobación del dueño: agregá en estado
propuesto y dejá que un humano confirme.
assume_role abre una sesión atada al hash del contrato y al hash del estado, y release_role la cierra con un resumen. El modelo lee el contrato; nunca lo escribe.