opencode-mem MCP sunucusu
Commit 3 Kas 2026Hibrit arama ve hiyerarşik özetleme özelliklerine sahip PostgreSQL kullanarak yapay zeka kodlama ajanları için kalıcı bellek altyapısı sağlar.
Ayrıca bilinen adı Stranmor/opencode-mem
- Yıldızlar
- 3
- Araçlar
- 17
- İndirmeler, 30 gün
- —
- En son sürüm
- —
- Son commit
- 3 Kas 2026
- Lisans
- MIT
opencode-mem MCP nedir?
opencode-mem bir MCP sunucusudur. Hibrit arama ve hiyerarşik özetleme özelliklerine sahip PostgreSQL kullanarak yapay zeka kodlama ajanları için kalıcı bellek altyapısı sağlar. 17 araç sunar; örneğin search, timeline, get_observations.
Özet, projenin README dosyasından oluşturuldu
opencode-mem MCP sunucusu hakkında
Yapay zeka kodlama ajanları için kalıcı bellek sağlamak, bu Rust tabanlı MCP server'ın temel işlevidir. Geliştiricilerin, temel veri deposu olarak görev yapan bir PostgreSQL backend kullanarak ajan gözlemlerini depolamasına ve geri çağırmasına olanak tanır. IDE'lerle veya HTTP ve CLI giriş noktaları üzerinden entegre olarak, ajanların yapılandırılmış meta veri çıkarma ve hiyerarşik özetleme yoluyla uzun vadeli bağlamı korumasını sağlar.
Kullanıcılar, sistemi bir PostgreSQL bağlantı dizesi ve LLM tabanlı sıkıştırma için OpenAI uyumlu bir API anahtarı ile yapılandırabilirler. Sunucu, PostgreSQL tam metin aramasını pgvector eklentisi aracılığıyla vektör geri çağırma ile birleştirerek hibrit aramayı destekler. Bu sayede belirli dosyaları, fonksiyonları veya önceki kararları bulmak için semantik, anahtar kelime ve hibrit arama yolları kullanılabilir. Mimari, kuyruğa alınan gözlemleri işleyen bir bellek hattı (memory pipeline) ve bilgi yoğunluğunu yönetmek için bağlam duyarlı sıkıştırma içerir.
Neler yapabilirsiniz
- 1Geçmiş kodlama kararlarını geri çağırmaBir yapay zeka ajanı, belirli bir kütüphanenin veya desenin neden seçildiğini anlamak için geçmiş gözlemler arasında arama yapabilir.
- 2Semantik bellek aramaları gerçekleştirmeGeliştiriciler, tam anahtar kelimeler kullanılmasa bile ilgili geçmiş olayları bulmak için semantik anlamlandırmayı kullanabilirler.
- 3Oturum özetlerini detaylandırmaBir ajan, bir oturum sırasında gerçekleşen spesifik ve ayrıntılı olayları görüntülemek için üst düzey bir özeti genişletebilir.
- 4Global bir bilgi tabanını yönetmeKullanıcılar; yeniden kullanılabilir desenleri, becerileri veya yaygın hataları kalıcı bir bilgi deposunda kaydedebilir ve düzenleyebilirler.
Projenin README dosyasından alınmıştır. Her kullanım durumu, oradaki bir alıntı ile kontrol edilir.
opencode-mem MCP araçları 17
README dosyasından algılandısearchtimelineget_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 | — |
17 aracın tümünü gösterDaha az araç göster
knowledge_deleteinfinite_expandinfinite_time_rangeinfinite_drill_hourinfinite_drill_minute
| knowledge_delete | — | |
| infinite_expand | — | |
| infinite_time_range | — | |
| infinite_drill_hour | — | |
| infinite_drill_minute | — |
Yapılandırma
DATABASE_URLOPENCODE_MEM_API_KEYOPENCODE_MEM_API_URL
| Ad | Açıklama | Sunucu |
|---|---|---|
| DATABASE_URL | — | |
| OPENCODE_MEM_API_KEY | — | |
| OPENCODE_MEM_API_URL | — |
Otomatik kontroller
Çalıştırıldı 14 Kas 2026Tam rapor →Henüz doğrulanmadı. Bir sunucunun 80 puana, ciddi bir bulgu olmamasına ve kontrol edebilmemiz için yeterli veriye ihtiyacı vardır. Kontroller nasıl çalışır
- Kaynak deposu bağlantılı ve erişilebilirstranmor/opencode-mem is public and reachablegithub.com/stranmor/opencode-mem ↗Geçti
- Paket bu depoyu kaynak olarak gösteriyorKontrol edilmedi
- Derleme kaynağı (Sigstore onayı)Kontrol edilmedi
- Açık kaynak lisansı (OSI)MITspdx.org/licenses/MIT.html ↗Geçti
- Son bir yıl içinde commit veya sürüm mevcutLast commit or release 2026-11-03github.com/stranmor/opencode-mem ↗Geçti
- OpenSSF ScorecardKontrol edilmedi
- Paket adı popüler bir pakete yakın değilKontrol edilmedi
- Pakette ve bağımlılıklarında kritik uyarı yokKontrol edilmedi
- Modele yönelik gizli talimat yok17 tool descriptions and the README read; no override phrases, credential paths or hidden charactersGeçti
- Yıkıcı araçlar etiketlenmişNo tool named like delete, drop or execGeçti
- Uzak endpoint MCP el sıkışmasına yanıt veriyorKontrol edilmedi
opencode-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
opencode-mem MCP soruları
opencode-mem MCP hangi araçları sunar?
17 araç sunar; bunlar arasında search, timeline, get_observations, memory_get, memory_recent yer alır.
opencode-mem için birincil depolama birimi nedir?
PostgreSQL, sunucu için temel veri deposu olarak görev yapar.
Hangi farklı arama yöntemleri mevcuttur?
Sunucu; tam metin, anahtar kelime, semantik ve hibrit arama yollarını destekler.
IDE entegrasyonu için sunucuyu bir MCP server olarak nasıl çalıştırabilirim?
MCP stdio sunucusunu şu komutu kullanarak çalıştırabilirsiniz: opencode-mem-cli mcp.
Vektör gömmelerini (vector embeddings) destekliyor mu?
Evet, vektör geri çağırma için pgvector kullanır ve fastembed BGE-M3 aracılığıyla embedding desteği sunar.