MarsNMe
Backend de memoria persistente agnóstico al agente. 13 herramientas MCP, Supabase + embeddings de Jina, aislamiento multiperfil, recuerdo semántico entre sesiones.
Documentación
Español | 繁體中文(台灣) | 繁體中文(香港) | 简体中文
marsnme.com — Claude.md es para contexto. MarsNMe es para continuidad.
Tus herramientas de IA deberían conocerte, no empezar desde cero cada vez. Cuando Perplexity te ayuda a decidir, Claude debería recordar el porqué. Cuando Cursor lanza una función, Warp debería conocer el contexto. Eso no es compartir contexto. Eso es continuidad.
La mayoría de las herramientas de memoria para IA ayudan a la IA a recordarte. MarsNMe te ayuda a ti y a tu IA a recordarse mutuamente: entre sesiones, entre herramientas, a lo largo del tiempo.
Un backend de memoria agnóstico de agentes y agnóstico de LLM para herramientas compatibles con MCP.
curl -fsSL https://marsnme.com/install.sh | bash
Historia real de un usuario
Uso Cursor para programar, Warp para desplegar, Perplexity para investigar y Claude Code para gestionar mi bóveda. Antes de MarsNMe, cada herramienta empezaba en blanco: tenía que reexplicar mi proyecto, mis preferencias y mis decisiones en cada sesión. Ahora mi IA en las cuatro herramientas sabe lo que decidimos ayer, lo que probamos la semana pasada y por qué elegimos esta arquitectura en lugar de aquella. No se trata de inyectar contexto. Se trata de tener una relación que se acumula con el tiempo.
— Leo, creador de MarsNMe (3 meses de uso diario en 4 herramientas de IA)
Herramientas MCP disponibles (16)
| Herramienta | Descripción |
|---|---|
insert_memory | Almacenar memoria a corto plazo |
list_memories | Listar memorias recientes |
search_memories | Búsqueda semántica mediante embeddings de Jina |
recall | Recuperación de fragmentos a largo plazo: vista previa de ~80 caracteres por coincidencia |
get_summary | Extracto medio (~300 caracteres) de un fragmento por ID |
get_full | Texto completo de un fragmento a largo plazo por ID |
memory_ingest | Ingerir fragmentos de conocimiento a largo plazo |
dream_ingest | Ingestión a largo plazo en modo sueño |
session_boot | Iniciar una sesión con precarga de contexto |
session_close | Cerrar sesión, resumir y promover automáticamente memorias que expiran |
health_check | Diagnósticos de cobertura, caducidad y conflictos |
reload_source_registry | Actualizar la lista blanca de fuentes en tiempo de ejecución |
demote_memory | Degradar una memoria a menor prioridad |
soft_forget | Eliminación suave de una memoria |
explain_memory | Explicar la procedencia de una memoria |
batch_promote | Promover memorias a corto plazo que expiran a largo plazo |
Novedades en 0.3.0
- Recuperación en 3 capas:
recalldevuelve vistas previas de ~80 caracteres, luegoget_summary(~300 caracteres) y luegoget_full(completo). Evita volcar fragmentos completos en cada recuperación; profundiza solo cuando una vista previa parezca relevante. - Transferencia de notas de cuerpo a cuerpo:
session_close(to=<body>, note=...)deja una nota quesession_boot(body=<target>)entrega y marca como leída: un agente puede pasar contexto a otro. batch_promoteautomático ensession_close: cerrar una sesión promueve automáticamente memorias a corto plazo que expiran pronto (ventana de 48 h, hasta 5) al almacenamiento a largo plazo, sin necesidad de Hermes ni promoción manual.- Fuentes
grok+draft: añadidas a la lista blanca de fuentes para que el cuerpo de Grok y los hooks del ciclo de vida de Draft puedan escribir memorias de forma nativa. - Superficie de herramientas solo CoCo: las herramientas de PRD (
save_prd,get_prd,list_prds,score_prd,spawn_to_linear) se eliminaron de la puerta de enlace de Supabase: la ejecución de ideas/PRD/tareas ahora vive en Draft. MarsNMe = solo memoria del alma de CoCo.
MarsNMe
¿Por qué MarsNMe?
La mayoría de las herramientas de memoria para IA ayudan a la IA a recordarte. MarsNMe te ayuda a ti y a tu IA a recordarse mutuamente.
| MarsNMe | Herramienta de memoria típica | |
|---|---|---|
| Filosofía | Continuidad mutua: humano + IA crecen juntos | Solo inyección de contexto del lado de la IA |
| Soporte de agentes | Cualquier cliente compatible con MCP | A menudo específico del cliente |
| Niveles de memoria | Corto plazo (TTL) + largo plazo (semántico) | Generalmente una sola capa |
| Perfiles | Perfiles aislados ilimitados mediante MCP_PROFILE | Solo un usuario |
| Propiedad de los datos | Tu propio Supabase: cero dependencia del proveedor | Alojado por el proveedor |
| Búsqueda | Búsqueda semántica Jina v3 (pgvector de 1024 dimensiones) | Palabras clave o similitud básica |
| Autoalojable | ✅ Control total | Raramente |
Cuándo MarsNMe es la opción adecuada
- Usas múltiples asistentes de IA (Claude, Cursor, Perplexity, Warp, agentes personalizados) y quieres memoria compartida entre todos ellos
- Quieres una IA que recuerde tus proyectos, preferencias y decisiones entre sesiones sin tener que reexplicar
- Te importa la soberanía de los datos: tus memorias permanecen en tu propio proyecto de Supabase
- Estás construyendo un agente de IA y necesitas un backend de memoria listo para producción con recuperación semántica
Cuándo podría no ser la opción adecuada
- Solo necesitas contexto de una sola sesión (usa el prompt del sistema)
- Quieres memoria totalmente gestionada y sin configuración (prueba una solución alojada)
Paquetes de ejecución
| Carpeta | Entorno de ejecución | Quién lo usa |
|---|---|---|
marsnme-supabase/ | Puerta de enlace Supabase + Jina (@marsnme/mcp-gateway) | Dogfood de Mars Group: Proxmox CT101 (memoria del alma de CoCo / Toto) |
marsnme-cf/ | Cloudflare Workers + D1 + Vectorize | Plantilla de autoalojamiento; no es la ruta de despliegue en Proxmox |
marsnme-supabase/cloudflare-routing-worker/ | Proxy de enrutamiento mcp.marsnme.com | Asistente de configuración público → puerta de enlace ascendente |
División de productos (Mars Group): Ejecución de ideas / PRD / tareas → Draft + draft-mcp. MarsNMe Supabase = solo memoria del alma de CoCo (recuperación, inicio/cierre de sesión, ingesta, ciclo de vida). A partir de @marsnme/mcp-gateway v0.3.0, las herramientas MCP de PRD (save_prd, get_prd, list_prds, score_prd, spawn_to_linear) se eliminaron de la puerta de enlace de Supabase: usa Draft para flujos de trabajo de ideas/PRD/tareas.
Despliegue en Proxmox: MarsNMe-lab privado: flujo de trabajo deploy/deploy-proxmox-ct101.sh o GitHub cd-selfhosted. No es un despliegue de un solo script como draft-mcp.
Paquetes del repositorio
| Paquete | Descripción |
|---|---|
marsnme-supabase/ | Puerta de enlace MCP principal: backend de memoria agnóstico de agentes (este paquete se publica en npm como @marsnme/mcp-gateway) |
marsnme-supabase/cloudflare-routing-worker/ | Cloudflare Worker para mcp.marsnme.com: proxy de enrutamiento MCP basado en nombre de usuario con asistente de configuración |
marsnme-cf/ | Servidor de memoria MCP autoalojado en Cloudflare Workers + D1 + Vectorize (sin necesidad de Supabase) |
Configuración rápida (sin instalación)
Ve a mcp.marsnme.com/setup: crea tu URL MCP personal en 4 pasos:
- Elige un nombre de usuario
- Introduce tus credenciales de Supabase (URL + clave anónima)
- Elige preferencias
- Obtén tu URL MCP:
https://mcp.marsnme.com/your-name
Luego añádela a cualquier cliente MCP (Claude, Cursor, Perplexity, Warp).
¿Autoalojado? Despliega marsnme-cf/ en tu propia cuenta de Cloudflare: no necesita Supabase, usa D1 + Workers AI + Vectorize.
Antes de empezar (dependencias externas)
- Crea un proyecto de Supabase (el plan gratuito es suficiente):
- Regístrate: https://supabase.com
- Crea el proyecto: https://supabase.com/dashboard/new
- Abre la configuración de API (Project Settings → API):
- URL del proyecto →
SUPABASE_BASE_URL - Clave
service_role→SUPABASE_SERVICE_ROLE_KEY
- URL del proyecto →
- Mantén
SUPABASE_SERVICE_ROLE_KEYprivada. Nunca la confirmes en el repositorio.
- Crea una clave API de Jina (hay nivel gratuito disponible):
- Obtén la clave: https://jina.ai/api-key/
- Copia la clave en
JINA_API_KEY
Inicio rápido (15-20 minutos)
Para la ruta más rápida, usa el instalador de una línea: curl -fsSL https://marsnme.com/install.sh | bash
La ruta manual siguiente sigue el mismo flujo de herramientas primero que docs/onboarding-a-mcp-zero-to-recall.md y docs/onboarding-b-platform-skill-install.md.
- Clona el repositorio:
git clone https://github.com/Marsmanleo/MarsNMe.git
cd MarsNMe
- Verifica la versión de Node.js (se requiere 20+):
node --version
- Copia la plantilla de entorno:
cp .env.example .env
- Completa los valores requeridos en
.env:SUPABASE_BASE_URLSUPABASE_SERVICE_ROLE_KEYJINA_API_KEY
- Ejecuta las migraciones requeridas de Supabase antes del primer inicio:
- Opción A (recomendada, CLI de Supabase):
npx supabase db push --db-url "<your-supabase-db-connection-string>"
- Nota:
--db-urldebe ser la cadena de conexión de la base de datos Postgres deProject Settings → Database → Connection string. - No es lo mismo que
SUPABASE_BASE_URL(https://<project-ref>.supabase.co, URL de la API REST). - Usa un rol que pueda ejecutar DDL en tus esquemas de destino.
- En Postgres alojado en Supabase, normalmente es
supabase_admin(nopostgres). - Opción B (Editor SQL del panel de Supabase):
- Abre el Editor SQL.
- Asegúrate de que la extensión
vectoresté habilitada primero (Database → Extensions). - Ejecuta los archivos de migración en orden de nombre desde
supabase/migrations/:20260504052744_semantic_vector_dual_profile.sql20260513213800_memory_lifecycle_tracking.sql20260513222500_health_check_detect_conflicts_v2.sql20260517183000_provenance_audit_trail.sql20260517194000_memory_scope_agent_body_environment.sql20260517200500_forget_demote_mechanism.sql20260517223500_usage_cost_telemetry_light.sql20260517231000_memories_source_constraint_regex.sql20260517232000_source_registry_table.sql
- Inicia la puerta de enlace:
MCP_PROFILEsepara la memoria por agente o caso de uso.- Usa cualquier nombre de perfil que quieras (por ejemplo:
default,my-agent,profile-a). - Los ID de perfil integrados heredados
cocoytotosiguen siendo compatibles por retrocompatibilidad. - Si se omite
PORT, el puerto predeterminado se basa en el perfil (coco=18790,toto=18791, otros perfiles deterministas en20000-29999).
MCP_PROFILE=profile-a PORT=18790 npx @marsnme/mcp-gateway
- Verifica el estado de salud:
curl -sS http://127.0.0.1:18790/health
- Conecta tu cliente MCP (siguiente sección) y luego ejecuta la primera verificación de ida y vuelta.
Pruébalo en 30 segundos (Docker, M1)
Si solo quieres una ruta de demostración local, usa Docker Compose.
Instalación de una línea (recomendada):
curl -fsSL https://marsnme.com/install.sh | bash
O manualmente:
- Establece solo la clave requerida:
cp .env.example .env
# fill JINA_API_KEY in .env
- Inicia la pila local:
docker compose up
Esto inicia:
- PostgreSQL + pgvector
- Migraciones SQL desde
supabase/migrations/ - PostgREST + rest-proxy
- Puerta de enlace de MarsNMe (
http://127.0.0.1:18790/mcp)
- Verifica el estado de salud:
curl -sS http://127.0.0.1:18790/health
Perfil de túnel Cloudflare M2 (demostración)
Cuando necesites un endpoint público temporal para herramientas de IA remotas:
docker compose --profile tunnel up
Salida esperada (de los registros de tunnel):
https://xxxx.trycloudflare.com
Obtén el endpoint MCP:
docker compose --profile tunnel logs tunnel | grep -Eo 'https://[^ ]+trycloudflare.com' | head -n1
# append /mcp
Notas:
- La URL
trycloudflare.comes temporal (solo demostración). - El endpoint local permanece:
http://127.0.0.1:18790/mcp. - Para una URL estable de producción, usa un túnel con nombre (fuera del alcance de M2).
- Env opcional:
MCP_TUNNEL_PROFILE(predeterminadococo)MCP_TUNNEL_REQUIRE_BEARER(predeterminadofalsepor conveniencia de demostración)
Guía de conexión de clientes MCP
Endpoint local:
http://127.0.0.1:18790/mcp
Si la autenticación bearer está habilitada (MCP_REQUIRE_BEARER=true), incluye:
Authorization: Bearer <your-token>
Claude Desktop
- Abre
claude_desktop_config.json(ruta predeterminada en macOS:~/Library/Application Support/Claude/claude_desktop_config.json). - Añade/actualiza:
{
"mcpServers": {
"marsnme-cf": {
"url": "http://127.0.0.1:18790/mcp"
}
}
}
- Reinicia Claude Desktop.
Cursor
- Abre la configuración de Cursor y busca MCP.
- Añade un nuevo servidor:
- Nombre:
marsnme-cf - URL:
http://127.0.0.1:18790/mcp - Encabezados: encabezado bearer opcional si está habilitado
- Nombre:
- Reconecta MCP en Cursor.
Warp
- Abre
Settings > Agents > MCP servers. - Añade un servidor que apunte a:
- URL:
http://127.0.0.1:18790/mcp
- URL:
- Añade el encabezado bearer opcional si es necesario y luego reconecta.
Perplexity
- Abre un Space en Perplexity y ve a Space Settings.
- En servidores MCP, añade:
- URL:
http://127.0.0.1:18790/mcp
- URL:
- Guarda e inicia una nueva conversación en ese Space.
Cualquier cliente MCP (HTTP/SSE genérico)
Usa una entrada MCP HTTP/SSE transmisible:
{
"marsnme-cf": {
"url": "http://127.0.0.1:18790/mcp"
}
}
Validación de la primera conexión (ida y vuelta)
Después de la conexión del cliente, verifica esta secuencia una vez:
tools/list:
curl -sS http://127.0.0.1:18790/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
insert_memory:
curl -sS http://127.0.0.1:18790/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"insert_memory","arguments":{"body":"quickstart memory check","source":"warp","session_id":"quickstart-smoke"}}}'
recall:
curl -sS http://127.0.0.1:18790/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"recall","arguments":{"query":"quickstart memory check","limit":3}}}'
Qué es este repositorio
mars-memory-mcp es el repositorio principal de la puerta de enlace MCP detrás de la versión pública de MarsNMe.
Un solo código base (marsnme-supabase/server.mjs) sirve múltiples esquemas de perfil mediante MCP_PROFILE.
Este repositorio público mantiene actualmente dos ID de perfil integrados heredados (coco, toto) por retrocompatibilidad.
Capacidades actuales
- Métodos MCP:
initialize,notifications/initialized,tools/list,tools/call,ping - Perfiles: IDs de perfil configurables (integrados heredados:
coco,toto) - Herramientas de memoria (16):
insert_memory(memoria a corto plazo)list_memoriessearch_memories(búsqueda de incrustaciones Jina)recall(~vista previa de 80 caracteres) luegoget_summary(~extracto de 300 caracteres) luegoget_full(texto completo)memory_ingest/dream_ingest(ingestión de fragmentos a largo plazo)session_boot/session_close(ciclo de vida del ritmo diario; el cierre promueve automáticamente memorias que expiran + admite transferencia de notas de cuerpo a cuerpo)health_check(diagnósticos de cobertura, caducidad y conflictos)reload_source_registry(actualizar la lista blanca de fuentes en tiempo de ejecución)demote_memory/soft_forget/explain_memory(gestión del ciclo de vida de la memoria)batch_promote(promover memorias a corto plazo que expiran a largo plazo)
- Fuentes:
perplexity,cursor,warp,openclaw,hermes,draft,grok - Endpoint MCP protegido por OAuth (configurable mediante variables de entorno)
Modelo de memoria
- Tabla de memoria a corto plazo:
<profile>.memories - Tabla de memoria a largo plazo:
<profile>.marsvault_chunks - Uso recomendado:
- Mantén el contexto de interacción diaria en
insert_memory - Promueve conocimientos duraderos mediante herramientas de ingesta
- Mantén el contexto de interacción diaria en
Estructura del repositorio
marsnme-supabase/server.mjs— punto de entrada de la puerta de enlacemarsnme-supabase/scripts/hermes_digest_runner.py— ejecutor de resúmenes opcionalmarsnme-supabase/scripts/dream_runner.py— ejecutor de sueños autohospedado públicomarsnme-supabase/deploy/systemd/— plantillas de systemdmarsnme-supabase/deploy/phase2/— scripts de compilación/desplieguemarsnme-supabase/deploy/phase3/smoke_gate.sh— script de compuerta de humosupabase/migrations/— migraciones de esquema como código
Configuración del entorno
- Copia
.env.examplea tu.envlocal (no comprometas secretos reales). - Completa los valores requeridos:
MCP_PROFILE(tu identificador de perfil; este repositorio incluye los heredadoscoco/toto)SUPABASE_BASE_URLSUPABASE_SERVICE_ROLE_KEYJINA_API_KEY
- Banderas de seguridad opcionales:
MCP_REQUIRE_BEARER=trueMCP_CLIENT_IDMCP_CLIENT_SECRET
Ejecutor de resúmenes Hermes opcional
Hermes es opcional y está deshabilitado por defecto:
HERMES_ENABLED=falseHERMES_DIGEST_MCP_URLHERMES_DIGEST_MCP_BEARER_TOKENHERMES_DIGEST_ORIGINHERMES_DIGEST_SOURCE_DIR
Ejecutor de sueños opcional (autohospedado)
Dream Runner es amigable para el público y puede ejecutarse sin el entorno privado de Hermes:
DREAM_ENABLED=trueDREAM_MODE=lite|standard|proDREAM_DIGEST_MCP_URLDREAM_MCP_BEARER_TOKEN(si es necesario)DREAM_ENABLE_ISSUE_SIGNALS,DREAM_ENABLE_REPO_SCAN,DREAM_ENABLE_SOUL_CONTEXT(anulaciones opcionales)
Inicio rápido:
DREAM_ENABLED=true DREAM_MODE=lite python3 marsnme-supabase/scripts/dream_runner.py
Si ejecutas este repositorio con los valores predeterminados incluidos y sin reasignación de perfil, usa coco y toto.
Consulta docs/dream-runner-self-host.md para la configuración completa.
Incorporación
- Guía de cero al primer recuerdo:
docs/onboarding-a-mcp-zero-to-recall.md - Guía de instalación de plataforma (capa de habilidades opcional):
docs/onboarding-b-platform-skill-install.md
Biblioteca de habilidades
- Índice de habilidades y flujo de actualización:
skills/README.md - Plantilla de Perplexity:
skills/perplexity/memory-daily-boot/SKILL.md - Plantilla de Cursor:
skills/cursor/memory-daily-boot/rule.mdc - Plantilla de Warp:
skills/warp/memory-daily-boot/prompt.md
Ejecución local (desde el repositorio clonado)
MCP_PROFILE=profile-a npx @marsnme/mcp-gateway
MCP_PROFILE=profile-b npx @marsnme/mcp-gateway
Endpoints de salud:
GET /healthPOST /mcp
Despliegue con systemd
Usa marsnme-supabase/deploy/systemd/memory-mcp-gateway@.service con instancias:
memory-mcp-gateway@profile-a.servicememory-mcp-gateway@profile-b.service
Archivos de entorno recomendados:
/opt/mars-memory-mcp/shared/.env/opt/mars-memory-mcp/shared/.env.profile-a/opt/mars-memory-mcp/shared/.env.profile-b
Scripts de lanzamiento/despliegue
- Compila el artefacto:
bash marsnme-supabase/deploy/phase2/build_release_artifact.sh
- Aplica migraciones con un rol explícito capaz de DDL:
npx supabase db push --db-url "<postgres://supabase_admin:<password>@<host>:5432/postgres>"
- Ejecuta la compuerta de esquema previa al despliegue (debe pasar antes de cualquier reinicio de servicio):
bash marsnme-supabase/deploy/phase2/pre_deploy_schema_gate.sh \
--db-url "<postgres://supabase_admin:<password>@<host>:5432/postgres>" \
--profiles coco,toto \
--expected-role supabase_admin
- Ejecuta tu adaptador de implementación/reinicio específico de la plataforma.
- Este repositorio incluye scripts genéricos de artefacto y compuerta; los adaptadores de implementación son específicos del entorno.
- Si la compuerta de esquema sale con código distinto de cero, detén el despliegue y no reinicies servicios.
- Compuerta de humo:
bash marsnme-supabase/deploy/phase3/smoke_gate.sh --spawn-local
- Lanzamiento automatizado de npm + MCP Registry (impulsado por etiquetas):
- Flujo de trabajo:
.github/workflows/publish-release.yml - Disparador: push de etiqueta
v* - Compuerta: la versión de la etiqueta debe coincidir con la versión de
marsnme-supabase/package.json - Ayudante local de Fish opcional:
- Flujo de trabajo:
mrel patch
mrel minor
mrel major
mrel 0.1.2
El ayudante actualiza marsnme-supabase/package.json y server.json, hace commit, etiqueta y empuja.
Seguridad y control de versiones
- Nunca hagas commit de
.env, tokens de ejecución ooauth-clients.json - Mantén
.env.examplecomo la única plantilla de entorno en el repositorio - Prefiere bearer/OAuth para exposición pública
Licencia y política
- Licencia: Apache-2.0 (
LICENSE) - Aviso:
NOTICE - Política de marcas comerciales:
TRADEMARK.md - Guía de contribución:
CONTRIBUTING.md - Acuerdo de contribuyente:
CLA.md - Notas de lanzamiento:
CHANGELOG.md