Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Las reseñas y las cuentas llegarán en una etapa posterior.
PopNx MCPServidores MCP para quienes usan IA · explicados con palabras sencillas

memex

de ayushagrawal288versión 0.1.0i★ –iSe ejecuta en tu computadora
Nombre en el registroio.github.ayushagrawal288/memex

Instalar

Resumen

Descripción del creador (original en inglés)

Persistent memory for AI agents — semantic + recency search, ONNX embeddings, Docker Compose.

Los tres pilares de PopNx MCP

Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.

Qué puedes hacer con él

Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.

  • Conexión: Se ejecuta en tu computadora
  • Transporte: Streamable HTTP
  • Categoría: Búsqueda y memoria de IA

Instalación

Elige la app de IA que usas y copia la configuración.

Antes de instalar

Necesitas

¿Qué app usas?

Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.

Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json

{
  "mcpServers": {
    "memex": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/ayushagrawal288/memex:v0.1.0"
      ]
    }
  }
}

Ejecuta esto en tu terminal

claude mcp add memex -- docker run -i --rm ghcr.io/ayushagrawal288/memex:v0.1.0

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

{
  "mcpServers": {
    "memex": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/ayushagrawal288/memex:v0.1.0"
      ]
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "memex": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/ayushagrawal288/memex:v0.1.0"
      ]
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.

Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

Qué puede hacer

Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.

Revisiones básicasi

Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con la cuenta de GitHub ayushagrawal288, dueña del repo

  • … Aún sin revisar

    Sigue en mantenimiento

    Todavía no hemos leído este repo en GitHub

  • … Aún sin revisar

    Tiene licencia

    Todavía no hemos leído este repo en GitHub

  • – No aplica

    El endpoint responde

    Este se ejecuta en tu computadora; no hay endpoint en internet

  • – No aplica

    Inicio de sesión con OAuth

    Se ejecuta en tu computadora y usa ajustes locales en su lugar

  • … Aún sin revisar

    Sin instrucciones ocultas en las descripciones de herramientas

    Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet

Comparado con otros en Búsqueda y memoria de IAi

  • Más estrellas que el 0% de los otros 7284 servidores de esta categoría
  • Publicado en el registro más recientemente que el 15% de los otros 7284 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 100% de los otros 7284 servidores de esta categoría

Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.

Preguntas frecuentes

¿Es seguro memex?

Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.

¿Qué claves o códigos necesita?

El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.

¿Se ejecuta en mi computadora o en la nube?

Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez –, y la última versión (0.1.0) llegó al registro hace 5 meses.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Docker en tu computadora.

¿Qué puedo usar en su lugar?

En la misma categoría: Context7, Codebase Memory, Exa

Alternativas

Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.

Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi

Context7

de upstash

Up-to-date docs for AI agents

Computadora o nube★ 64.224MITActualizado ayer
Instalar

Codebase Memory

de DeusData

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

Se ejecuta en tu computadora★ 48.148MITActualizado hace 21 días
Instalar

Exa

de exa-labs

Connect AI agents to Exa for web search, content fetching, and multi-step research.

Se ejecuta en la nube★ 5213MITActualizado el mes pasado
Instalar

README del creador

Abrir el README

Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.

memex

A production-grade persistent memory service for AI agents. Agents forget everything between sessions by default — memex fixes that. It stores, retrieves, and ranks conversation memory using semantic search with recency decay, so agents surface what's relevant *and* recent, not just what's semantically closest.

POST /v1/memories          → store a memory, embed it, persist to Postgres

POST /v1/memories/search → retrieve top-k memories ranked by similarity + recency DELETE /v1/memories/{id} → forget a specific memory GET /v1/memories/count → how many memories does this agent/user have GET /health → liveness + DB connectivity check GET /metrics → Prometheus metrics


Architecture

caller (agent / app)

│ ▼ FastAPI (async) │ ┌────┴────┐ │ │ embeddings asyncpg pool (min=5, max=20) (fastembed │ ONNX, ▼ local) PostgreSQL 16 pgvector extension ivfflat index (cosine)

Write path: content → fastembed ONNX inference (local, ~12 ms CPU, BAAI/bge-small-en-v1.5) → INSERT with 384-dim vector → return memory ID.

Read path: query → embed → pgvector cosine search (top_k × 3 candidates) → re-rank with recency decay in Python → return top_k results with scores.


Design decisions

1. Recency decay on top of semantic search

Pure vector similarity returns the most semantically similar memories, not the most useful ones. A fact from 90 days ago that's a 0.95 similarity match is often less useful than a 0.80 match from yesterday.

Score formula:

score = α × cosine_similarity + (1 − α) × exp(−λ × age_days)

Where λ = ln(2) / half_life_days (default: 30 days, so a 30-day-old memory has 50% recency weight).

α is configurable per request (default 0.7). Task-focused agents use higher α (semantic dominates). Conversational agents use lower α (recency matters more).

2. Fetch 3× candidates, re-rank in Python

The pgvector query returns top_k × 3 candidates sorted by pure similarity. Python re-ranks with the decay formula and slices to top_k. This prevents recency decay from starving high-similarity older memories — they're still in the candidate pool.

At 10× scale (>1M memories per agent): push the scoring into a Postgres function using pg_proc to eliminate the Python re-ranking round-trip.

3. asyncpg + explicit pool sizing over SQLAlchemy async

SQLAlchemy adds ORM overhead on every query. The hot retrieval path — embed, query, re-rank — needs to be tight. asyncpg gives direct control over pool min/max (same instinct as tuning HikariCP in Java). pgvector queries require raw SQL for the <=> operator anyway.

Pool defaults: min=5, max=20. Right-size for a single-instance deployment. Override via DB_MAX_POOL_SIZE env var.

4. Rate limiting in Postgres, not Redis

Sliding window counter via upsert. One fewer dependency. Correct under concurrent requests (transactional upsert). At 10× scale with distributed deployments: replace with Redis INCR + EXPIRE — atomic operations, no lock contention.

5. ivfflat index, not HNSW

ivfflat has lower build cost and lower memory footprint — the right tradeoff at small-to-medium scale (<1M vectors). lists=100 works well up to ~1M rows. At 10× scale: switch to HNSW (m=16, ef_construction=64) for better recall at the cost of higher memory and build time.


Running locally

Prerequisites: Docker and Docker Compose. No API keys required — the entire stack runs locally.

git clone https://github.com/ayushagrawal288/memex

cd memex docker compose up

The API is live at http://localhost:8000. Interactive docs at http://localhost:8000/docs.


API reference

Store a memory
curl -X POST http://localhost:8000/v1/memories \

-H "Content-Type: application/json" \ -d '{ "agent_id": "my-agent", "user_id": "user-123", "content": "User prefers concise responses and dislikes verbose explanations.", "memory_type": "semantic", "importance": 1.2 }'

{

"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "agent_id": "my-agent", "user_id": "user-123", "content": "User prefers concise responses and dislikes verbose explanations.", "importance": 1.2, "memory_type": "semantic", "created_at": "2026-05-26T10:30:00Z", "score": null }

Search memories
curl -X POST http://localhost:8000/v1/memories/search \

-H "Content-Type: application/json" \ -d '{ "agent_id": "my-agent", "user_id": "user-123", "query": "how does this user like to communicate", "top_k": 5, "alpha": 0.7 }'

{

"results": [ { "id": "3fa85f64-...", "content": "User prefers concise responses and dislikes verbose explanations.", "memory_type": "semantic", "created_at": "2026-05-26T10:30:00Z", "score": 0.8921 } ], "query": "how does this user like to communicate", "total": 1 }

Memory types
TypeUse for
episodicSpecific events, past conversations
semanticFacts, preferences, general knowledge
proceduralWorkflows, how-to instructions

Load test results

Run on a MacBook M-series, Docker Desktop, single Postgres instance:

locust -f scripts/load_test.py --host=http://localhost:8000 \

--headless -u 50 -r 10 -t 60s

Realistic load (50 users, 100–300 ms think time — models actual agent traffic):

EndpointRPSp50 (ms)p95 (ms)p99 (ms)Error rate
POST /v1/memories (write)271602703300%
POST /v1/memories/search831102002500%
Aggregated1131202303000%

Saturation test (500 users, minimal think time — finds the throughput ceiling):

EndpointRPS (plateau)p50 (ms)p99 (ms)Error rate
POST /v1/memories (write)283,9006,1000%
POST /v1/memories/search913,6005,8000%
Aggregated~1203,7005,9000%

Run on MacBook M-series, Docker Desktop (4 CPUs), 4 uvicorn workers, 16 threads/worker.

Embeddings: local ONNX (BAAI/bge-small-en-v1.5) — zero external API calls, zero cost.

Why the ceiling is ~120 RPS: Every write and every search requires one ONNX inference (~10–15 ms on CPU). With 4 Docker CPUs: 4 cores / 12 ms ≈ 333 embeddings/s theoretical max. After Python overhead, DB queries, and asyncio scheduling: ~120 RPS actual.

Path to higher throughput:

ApproachExpected gainComplexity
Embedding cache (Redis, key = SHA256 of text)2–3× (40–60% hit rate on repeated agent queries)Low
Horizontal scaling (N replicas behind a load balancer)N× linearMedium
GPU inference (swap ONNX runtime → CUDA)10–50×Medium
Voyage-3 API (offload to Anthropic's inference fleet)Scales to thousands of RPS, limited by API quotaLow code change

Project structure

memex/

├── app/ │ ├── main.py # REST API — FastAPI, lifespan, router registration │ ├── mcp_server.py # MCP server — single-worker FastAPI on port 8001 │ ├── core/ │ │ └── config.py # All settings, loaded from env │ ├── db/ │ │ └── pool.py # asyncpg pool, migrations │ ├── models/ │ │ └── schemas.py # Pydantic request/response models │ ├── services/ │ │ ├── embeddings.py # fastembed ONNX inference (local, zero API calls) │ │ ├── local_summarizer.py # Extractive summariser — Jaccard dedup + TF scoring │ │ ├── memory.py # Core write/search/scoring logic │ │ ├── metrics.py # Prometheus metric definitions │ │ ├── summarizer.py # Background summarisation job │ │ └── rate_limit.py # Sliding window rate limiter │ └── api/routes/ │ ├── memories.py # Memory endpoints │ ├── health.py # Health + readiness │ └── mcp_tools.py # MCP tool definitions (store, search, delete, count) ├── scripts/ │ └── load_test.py # Locust load test ├── docker-compose.yml ├── Dockerfile └── requirements.txt


Observability

docker compose up starts Prometheus and Grafana alongside the API:

ServiceURLCredentials
REST API docshttp://localhost:8000/docs—
MCP serverhttp://localhost:8001/mcp/—
Prometheushttp://localhost:9090—
Grafanahttp://localhost:3000admin / admin

The Grafana dashboard is provisioned automatically. Panels:

  • HTTP request rate + latency p50/p99 — from prometheus-fastapi-instrumentator
  • Embedding API latency p50/p99 — per-attempt histogram by operation (embed / embed_batch)
  • Memory operations/s — create, search, delete throughput
  • DB pool utilisation — active vs idle connections (update interval: 15 s)
  • Summariser activity — memories condensed per hour, run outcomes
  • Embedding errors/min — by operation and error type

Custom metrics are in app/services/metrics.py and exposed on /metrics alongside the standard FastAPI instrumentator metrics.


MCP endpoint

memex exposes itself as an MCP server so any MCP-aware agent (Claude Desktop, Claude Code, custom agents) can store and retrieve memories without custom HTTP integration.

Transport: Streamable HTTP (MCP 2024-11-05 spec). Single-worker process on port 8001 — session state is in-process, so a separate service avoids sticky-session complexity while keeping the REST API's multi-worker throughput.

Tools:

ToolDescription
store_memoryEmbed + persist a memory (type, importance configurable)
search_memoriesSemantic + recency ranked retrieval with configurable alpha
delete_memoryForget a specific memory by UUID
count_memoriesHow many memories an agent/user pair has
Connect from Claude Desktop

Add to ~/.config/claude/claude_desktop_config.json:

{

"mcpServers": { "memex": { "type": "streamable-http", "url": "http://localhost:8001/mcp/" } } }

Connect from Claude Code
claude mcp add --transport http memex http://localhost:8001/mcp/
Design: why a separate service

The MCP Streamable HTTP transport is session-stateful — initialize, tools/list, and tools/call must all reach the same server process. The REST API runs 4 uvicorn workers with round-robin routing; routing different MCP requests to different workers breaks session state.

Running a dedicated single-worker MCP service on port 8001 avoids sticky-session infrastructure (nginx ip_hash, Redis session store) while keeping the REST API fully multi-worker.


Memory summarisation

Runs as a background asyncio task on a configurable interval (default: every 5 minutes). Finds any (agent_id, user_id) pair where episodic memory count exceeds a threshold, condenses the oldest batch into a single semantic memory, then deletes the originals. Fully local — no LLM API calls.

**How it summari

Solo se muestra el principio; lee el resto en el repo

Pregunta a PopNx