Memory Bank MCP

Un servidor del Protocolo de Contexto de Modelo (MCP) listo para producción que proporciona un banco de memoria vectorial nativo y potente para agentes de IA. Construido con el Protocol-Lattice Go Agent Framework, este servidor ofrece memoria persistente, buscable y compartible con múltiples backends de base de datos.

Documentación

Memory Bank MCP Server

Un servidor Model Context Protocol (MCP) listo para producción que proporciona un banco de memoria vectorial nativo y potente para agentes de IA. Construido con el Protocol-Lattice Go Agent Framework, este servidor ofrece memoria persistente, buscable y compartible con múltiples backends de bases de datos.

  • Nombre del servidor: memory-bank-mcp
  • Versión: 0.1.0

Características

  • Múltiples backends de almacenamiento vectorial: Persiste memorias en tu base de datos preferida.

    • En memoria: Para pruebas rápidas y almacenamiento efímero.
    • PostgreSQL: Usando la extensión pgvector.
    • Qdrant: Una base de datos vectorial dedicada.
    • MongoDB: Usando Atlas Vector Search.
  • Gestión de memoria enriquecida:

    • Buffer de corto plazo: Almacena temporalmente memorias para una sesión antes de comprometerlas al almacenamiento de largo plazo.
    • Persistencia de largo plazo: Incrusta y almacena memorias para recuperación semántica entre sesiones.
    • Recuperación contextual: Obtén memorias relevantes basadas en una consulta, combinando resultados de corto y largo plazo.
  • Memoria compartida con "Espacios":

    • Crea "espacios" de memoria compartida donde múltiples agentes o usuarios pueden colaborar.
    • Control de acceso fino (ACLs) con roles reader, writer y admin.
    • Soporte de tiempo de vida (TTL) para concesiones y espacios.
  • Incrustaciones dinámicas: Usa AutoEmbedder del Go Agent Framework, permitiéndote configurar el modelo de incrustación mediante variables de entorno (por ejemplo, OpenAI, Gemini, modelos locales).

Configuración

Configura el servidor usando variables de entorno.

Almacenamiento de memoria

Establece MEMORY_STORE a uno de inmemory, postgres, qdrant o mongo.

  • PostgreSQL:
    export MEMORY_STORE="postgres"
    export POSTGRES_DSN="postgres://user:pass@host:port/db?sslmode=disable"
    
  • Qdrant:
    export MEMORY_STORE="qdrant"
    export QDRANT_URL="http://localhost:6333"
    export QDRANT_COLLECTION="memories"
    export QDRANT_API_KEY="..." # Optional
    
  • MongoDB:
    export MEMORY_STORE="mongo"
    export MONGO_URI="mongodb+srv://..."
    export MONGO_DATABASE="main"
    export MONGO_COLLECTION="memories"
    

Otras configuraciones

  • SHORT_TERM_SIZE: Máximo de elementos en el buffer de corto plazo por sesión. (Por defecto: 20)
  • DEFAULT_SPACE_TTL_SEC: TTL por defecto para espacios en segundos. (Por defecto: 86400 / 24 horas)

Modelo de incrustación

El servidor usa AutoEmbedder, que respeta las variables de entorno ADK_EMBED_* del Go Agent Framework. Por ejemplo, para usar Gemini:

export ADK_EMBED_PROVIDER="gemini"
export ADK_EMBED_MODEL="text-embedding-004"
export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"

Inicio rápido

go install github.com/Protocol-Lattice/memory-bank-mcp@latest
# Run the server (defaults to stdio transport)
memory-bank-mcp

Herramientas MCP disponibles

El servidor expone un conjunto completo de herramientas para la manipulación de memoria.

Memoria principal

  • health.ping: Verifica si el servidor está en ejecución.
  • memory.embed: Obtén la incrustación vectorial de un texto.
  • memory.add_short: Agrega una memoria al buffer de corto plazo de una sesión.
  • memory.flush: Persiste el buffer de corto plazo de una sesión en el almacén vectorial de largo plazo.
  • memory.store_long: Incrusta y almacena directamente una memoria en el almacén de largo plazo.
  • memory.retrieve_context: Recupera memorias relevantes para una consulta de una sesión.

Espacios (memoria compartida)

  • spaces.upsert: Crea o actualiza un espacio compartido con un TTL y ACL.
  • spaces.grant: Otorga un rol (reader, writer, admin) a un principal para un espacio.
  • spaces.revoke: Revoca el acceso de un principal a un espacio.
  • spaces.list: Lista todos los espacios a los que un principal tiene acceso.

Sesiones compartidas

  • shared.join: Hace que la vista de sesión de un principal incluya un espacio específico.
  • shared.leave: Elimina un espacio de la vista de sesión de un principal.
  • shared.add_short_to: Agrega una memoria de corto plazo directamente a un espacio compartido.
  • shared.retrieve: Recupera memorias de la vista combinada de un principal (local + espacios unidos).

Configuración de MCP:

{
	"servers": {
    "memory-bank": {
      "command": "/usr/local/bin/memory-bank-mcp",
      "args": ["-transport", "http", "-addr", ":8080"]
    }
	},
	"inputs": []
}

Diagnóstico

  • engine.metrics: Obtén una instantánea de las métricas de rendimiento del motor de memoria.