MCP server de opencode-mem
Commit 3 nov 2026Proporciona infraestructura de memoria persistente para agentes de codificación con IA utilizando PostgreSQL con búsqueda híbrida y resúmenes jerárquicos.
También conocido como Stranmor/opencode-mem
- Stars
- 3
- Herramientas
- 17
- Descargas, 30 días
- —
- Última versión
- —
- Último commit
- 3 nov 2026
- Licencia
- MIT
¿Qué es opencode-mem MCP?
opencode-mem es un MCP server. Proporciona infraestructura de memoria persistente para agentes de codificación con IA utilizando PostgreSQL con búsqueda híbrida y resúmenes jerárquicos. Expone 17 herramientas, como search, timeline, get_observations.
Resumen generado a partir del README del proyecto
Acerca del MCP server de opencode-mem
La función principal de este MCP server basado en Rust es proporcionar memoria persistente para agentes de codificación con IA. Permite a los desarrolladores almacenar y recuperar observaciones de agentes utilizando un backend de PostgreSQL, que actúa como el almacén de datos canónico. Al integrarse con IDEs o mediante puntos de entrada HTTP y CLI, permite que los agentes mantengan un contexto a largo plazo mediante la extracción de metadatos estructurados y resúmenes jerárquicos.
Los usuarios pueden configurar el sistema con una cadena de conexión de PostgreSQL y una clave de API compatible con OpenAI para la compresión impulsada por LLM. El servidor admite la búsqueda híbrida combinando la búsqueda de texto completo de PostgreSQL con la recuperación de vectores a través de la extensión pgvector. Esto permite rutas de búsqueda semántica, por palabras clave e híbridas para encontrar archivos, funciones o decisiones previas específicas. La arquitectura incluye un pipeline de memoria que gestiona observaciones en cola y compresión sensible al contexto para manejar la densidad de la información.
Qué puedes hacer con él
- 1Recuperar decisiones de codificación históricasUn agente de IA puede buscar entre observaciones pasadas para entender por qué se eligió una biblioteca o un patrón específico.
- 2Realizar búsquedas de memoria semánticaLos desarrolladores pueden utilizar la comprensión semántica para encontrar eventos pasados relevantes incluso cuando no se utilizan palabras clave exactas.
- 3Profundizar en los resúmenes de sesiónUn agente puede expandir un resumen de alto nivel para ver los eventos granulares específicos que ocurrieron durante una sesión.
- 4Gestionar una base de conocimientos globalLos usuarios pueden guardar y organizar patrones reutilizables, habilidades o errores comunes en un almacén de conocimiento persistente.
Escrito a partir del README del proyecto. Cada caso de uso se verifica con una cita del mismo.
Herramientas de opencode-mem MCP 17
Detectado desde el READMEsearchtimelineget_observationsmemory_getmemory_recentmemory_hybrid_searchmemory_semantic_searchsave_memoryknowledge_searchknowledge_saveknowledge_getknowledge_list
| search | — | |
| timeline | — | |
| get_observations | — | |
| memory_get | — | |
| memory_recent | — | |
| memory_hybrid_search | — | |
| memory_semantic_search | — | |
| save_memory | — | |
| knowledge_search | — | |
| knowledge_save | — | |
| knowledge_get | — | |
| knowledge_list | — |
Mostrar las 17 herramientasMostrar menos herramientas
knowledge_deleteinfinite_expandinfinite_time_rangeinfinite_drill_hourinfinite_drill_minute
| knowledge_delete | — | |
| infinite_expand | — | |
| infinite_time_range | — | |
| infinite_drill_hour | — | |
| infinite_drill_minute | — |
Configuración
DATABASE_URLOPENCODE_MEM_API_KEYOPENCODE_MEM_API_URL
| Nombre | Descripción | Tipo |
|---|---|---|
| DATABASE_URL | — | |
| OPENCODE_MEM_API_KEY | — | |
| OPENCODE_MEM_API_URL | — |
Verificaciones automáticas
Ejecutado 14 nov 2026Informe completo →Aún no verificado. Un servidor necesita una puntuación de 80, ningún hallazgo grave y suficientes datos para que podamos revisarlo. Cómo funcionan las verificaciones
- Repositorio de origen vinculado y accesiblestranmor/opencode-mem is public and reachablegithub.com/stranmor/opencode-mem ↗Aprobado
- El paquete cita este repositorio como fuenteNo verificado
- Procedencia de la compilación (atestación Sigstore)No verificado
- Licencia de código abierto (OSI)MITspdx.org/licenses/MIT.html ↗Aprobado
- Commit o lanzamiento en el último añoLast commit or release 2026-11-03github.com/stranmor/opencode-mem ↗Aprobado
- OpenSSF ScorecardNo verificado
- El nombre del paquete no es similar a un paquete popularNo verificado
- Sin avisos críticos en el paquete ni en sus dependenciasNo verificado
- Sin instrucciones ocultas para el modelo17 tool descriptions and the README read; no override phrases, credential paths or hidden charactersAprobado
- Las herramientas destructivas están etiquetadasNo tool named like delete, drop or execAprobado
- El endpoint remoto responde al handshake MCPNo verificado
README
Ver en GitHubopencode-mem
Persistent memory infrastructure for AI coding agents.
A Rust MCP server combining PostgreSQL full-text search, optional vector retrieval, and hierarchical summaries.
opencode-mem is a Rust MCP (Model Context Protocol) server for storing and retrieving agent observations. PostgreSQL is the canonical store; pgvector-backed embeddings and hierarchical summaries provide additional retrieval paths when configured.
Inspired by claude-mem, with a PostgreSQL-first architecture for OpenCode and MCP clients.
Core design
| Area | Current implementation |
|---|---|
| Runtime | Rust workspace with MCP stdio, HTTP, and CLI entrypoints |
| Storage | PostgreSQL, with pgvector used for vector retrieval |
| Retrieval | Full-text, keyword, semantic, and hybrid search paths |
| Memory pipeline | Queued observations, structured summaries, and drill-down |
| Privacy boundary | <private> filtering before persistence and model calls |
| Recovery | Visibility timeouts, dead-letter handling, and degraded-mode responses |
Implemented paths
- Hierarchical summaries can be expanded back to their stored source events.
- Hybrid retrieval combines PostgreSQL full-text results with vector similarity when embeddings are enabled.
- Structured metadata extraction records files, functions, libraries, errors, and decisions from model output.
- Context-aware compression can create a new observation, update a supplied candidate, or skip a low-value result.
- MCP, HTTP, and CLI entrypoints share the same PostgreSQL-backed service layer.
- Database connection failures are surfaced through circuit-breaker and degraded-mode paths.
Architecture
graph LR
A[AI Agent / IDE] -->|MCP stdio| B[opencode-mem]
A -->|HTTP :37777| B
B --> C[Queue Processor]
C --> D[LLM Compression]
D --> E[(PostgreSQL)]
E -->|pgvector| F[Semantic Search]
E -->|tsvector / GIN| G[Full-Text Search]
F & G --> H[Hybrid Results]
Crate Structure
crates/
├── core/ # Domain types (Observation, Session, Knowledge, etc.)
├── storage/ # PostgreSQL + pgvector + migrations + circuit breaker
├── embeddings/ # Vector embeddings (fastembed BGE-M3, 1024d, multilingual)
├── search/ # Hybrid search (FTS + keyword + semantic)
├── llm/ # LLM compression (OpenAI-compatible API)
├── service/ # Business logic (ObservationService, SessionService, QueueService)
├── http/ # HTTP API (Axum)
├── mcp/ # MCP server (stdio)
├── infinite-memory/ # Hierarchical infinite memory backend
└── cli/ # CLI binary
Installation
From source
git clone https://github.com/Stranmor/opencode-mem.git
cd opencode-mem
cargo build --release
# Binary: target/release/opencode-mem-cli
Quick Start
Prerequisites: latest stable Rust · PostgreSQL with pgvector extension
1. Configure
export DATABASE_URL="postgresql://localhost/opencode_mem"
read -rsp "Provider API key: " OPENCODE_MEM_API_KEY && printf '\n'
export OPENCODE_MEM_API_KEY
export OPENCODE_MEM_API_URL="https://api.openai.com" # or any compatible endpoint
Use a credential manager or protected environment file for persistent secrets;
do not commit database passwords or provider keys to opencode.json.
Migrations run automatically on first start.
2. Run
# MCP server (for IDE integration):
opencode-mem-cli mcp
# HTTP server (for dashboards and external integrations):
opencode-mem-cli serve
3. Integrate with OpenCode
Add to your opencode.json. OpenCode substitutes the already exported
environment variables at runtime, so the config remains safe to commit:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"memory": {
"type": "local",
"command": ["/path/to/opencode-mem-cli", "mcp"],
"environment": {
"DATABASE_URL": "{env:DATABASE_URL}",
"OPENCODE_MEM_API_KEY": "{env:OPENCODE_MEM_API_KEY}",
"OPENCODE_MEM_API_URL": "{env:OPENCODE_MEM_API_URL}"
}
}
}
}
MCP Tools
The server exposes MCP tools for search, retrieval, knowledge, and summary drill-down. The recommended workflow is Search → Timeline → Get Observations so clients fetch full records only when needed.
| Tool | Description |
|---|---|
search |
Search memory with semantic understanding. Returns index with IDs. |
timeline |
Get chronological context within a time range. |
get_observations |
Fetch full details for specific observation IDs. |
memory_get |
Get a single observation by ID. |
memory_recent |
Get the most recent observations. |
memory_hybrid_search |
Combined FTS + keyword search. |
memory_semantic_search |
Pure semantic search with hybrid fallback. |
save_memory |
Save memory directly (bypasses LLM compression). |
knowledge_search |
Search the global knowledge base. |
knowledge_save |
Save a new knowledge entry (skill, pattern, gotcha). |
knowledge_get |
Get a knowledge entry by ID. |
knowledge_list |
List knowledge entries by type. |
knowledge_delete |
Delete a knowledge entry. |
infinite_expand |
Expand a summary to see child events. |
infinite_time_range |
Get events within a time range. |
infinite_drill_hour |
Drill from day summary to hour summaries. |
infinite_drill_minute |
Drill from hour summary to 5-minute summaries. |
__IMPORTANT |
Workflow documentation (3-Layer Pattern). |
HTTP API
HTTP endpoints are organized across the following handler modules:
observations— CRUD and bulk operations for observationssessions/sessions_api— Session lifecycle, summaries, retrievalsession_ops— Advanced operations (merge, split, archive)infinite— Deep-zoom endpoints (expand_summary,time_range,drill_hour,drill_minute)search— Semantic, FTS, and hybrid searchknowledge— Global knowledge base managementqueue— Pending queue and DLQ inspectioncontext— Context compilation for agent injectionadmin— Health checks, configuration, diagnostics
CLI
# Server
opencode-mem-cli serve # HTTP API server (port 37777)
opencode-mem-cli mcp # MCP stdio server
# Maintenance
opencode-mem-cli backfill-embeddings # Generate missing vector embeddings
opencode-mem-cli import-insights # Import legacy JSON insights
# Data Access
opencode-mem-cli search <query> # Search observations
opencode-mem-cli get <id> # Get observation by UUID
opencode-mem-cli recent # Recent observations
opencode-mem-cli projects # List tracked projects
opencode-mem-cli stats # Database statistics and queue health
# IDE Hooks
opencode-mem-cli hook context # Retrieve context for prompt injection
opencode-mem-cli hook session-init # Initialize a new session
opencode-mem-cli hook observe # Record an observation
opencode-mem-cli hook summarize # Trigger session summarization
Configuration
All configuration is via environment variables:
| Variable | Required | Default | Description |
|---|---|---|---|
DATABASE_URL |
Yes | — | PostgreSQL connection string |
OPENCODE_MEM_API_KEY |
Yes | — | API key for the LLM provider |
OPENCODE_MEM_API_URL |
No | https://api.openai.com |
OpenAI-compatible API base URL |
OPENCODE_MEM_MODEL |
No | — | Model for compression (e.g., gpt-4o) |
OPENCODE_MEM_DISABLE_EMBEDDINGS |
No | false |
Disable vector embeddings (1 or true) |
INFINITE_MEMORY_URL |
No | DATABASE_URL |
Separate DB for infinite memory |
OPENCODE_MEM_EXCLUDED_PROJECTS |
No | — | Glob patterns for excluded projects |
OPENCODE_MEM_FILTER_PATTERNS |
No | — | Custom noise filter patterns (regex) |
OPENCODE_MEM_DEDUP_THRESHOLD |
No | 0.85 |
Cosine similarity for dedup [0.0, 1.0] |
OPENCODE_MEM_INJECTION_DEDUP_THRESHOLD |
No | 0.80 |
IDE injection loop detection [0.0, 1.0] |
OPENCODE_MEM_EMBEDDING_THREADS |
No | cores - 1 |
ONNX embedding threads |
OPENCODE_MEM_MAX_RETRY |
No | 3 |
LLM compression retries |
OPENCODE_MEM_VISIBILITY_TIMEOUT |
No | 300s |
Queue visibility timeout |
OPENCODE_MEM_QUEUE_WORKERS |
No | 10 |
Concurrent queue workers |
OPENCODE_MEM_DLQ_TTL_DAYS |
No | 7 |
Dead letter queue retention |
OPENCODE_MEM_MAX_CONTENT_CHARS |
No | 500 |
Max chars per observation field |
OPENCODE_MEM_MAX_TOTAL_CHARS |
No | 8000 |
Max chars for LLM prompt |
OPENCODE_MEM_MAX_EVENTS |
No | 200 |
Max raw events per memory chunk |
Development
Prerequisites
- latest stable Rust
- PostgreSQL with
pgvectorextension - An OpenAI-compatible LLM API (for compression features)
Running Tests
export DATABASE_URL="postgresql://localhost/opencode_mem_test"
# Unit tests (no DB required)
cargo test --workspace
# Integration tests (requires running PostgreSQL)
cargo test --workspace -- --ignored
Code Quality
cargo fmt --all
cargo clippy --workspace -- -D warnings
Development constraints
- PostgreSQL remains the canonical persistence path.
- Missing or invalid data returns an explicit error or absence, not a fabricated value.
- Schema changes use forward migrations and preserve existing data.
- Privacy filtering must remain ahead of persistence, queues, embeddings, summaries, logs, and external model calls.
Project Status
Active pre-release project. Core MCP, HTTP, PostgreSQL, queue, and search paths are implemented, but release readiness depends on the current CI result and validation against a real OpenCode consumer. IDE-specific hooks remain outside the current scope. Infinite memory and semantic search should be treated as experimental until their deployment requirements and failure modes are documented and exercised end to end.
Contributing
Contributions welcome! See CONTRIBUTING.md for development setup and guidelines.
License
Preguntas sobre opencode-mem MCP
¿Qué herramientas proporciona opencode-mem MCP?
Expone 17 herramientas, incluidas search, timeline, get_observations, memory_get, memory_recent.
¿Cuál es el almacenamiento principal de opencode-mem?
PostgreSQL funciona como el almacén canónico para el servidor.
¿Qué métodos de búsqueda diferentes están disponibles?
El servidor admite rutas de búsqueda de texto completo, por palabras clave, semántica e híbrida.
¿Cómo puedo ejecutar el servidor como un MCP server para la integración con IDEs?
Puedes ejecutar el MCP stdio server usando el comando: opencode-mem-cli mcp.
¿Es compatible con vector embeddings?
Sí, utiliza pgvector para la recuperación de vectores y admite embeddings a través de fastembed BGE-M3.