hybrid-rag-memory
English | 日本語
Hybrid RAG — 에이전트 장기 기억 시스템
밀집(dense) 검색과 희소(sparse) 검색을 결합한 하이브리드 RAG 시스템으로, 태그 기반 메모리 메커니즘(중요도, knowledge_type별 노후화율, 접근 빈도)이 리랭킹에 내장되어 있습니다. 설계 근거는 hybrid_rag_agent_spec.en.md를 참조하세요.
MCP 서버로 실행하면 Claude Code와 같은 에이전트가 이를 "장기 기억"으로 직접 사용할 수 있습니다.
이 메커니즘의 작동 방식
스펙에 따라 처리는 두 종류로 나뉩니다.
분류 | 내용 | 구현 |
① 모델 의존(추론) | 중요도 태깅, 쿼리 확장/충분성 판단, 오케스트레이션 | 에이전트 측(LLM 판단) |
② 구조 의존(결정적 처리) | 청킹, 임베딩 생성, 하이브리드 검색, 단계적 리랭킹, 망각/아카이빙 | RAG 측(이 라이브러리 / MCP 서버) |
"중요도"와 "knowledge_type별 노후화율"은 별개의 축으로 취급되며, 단순한 선형 결합이 아니라 ① 중요도에 의한 컷오프 → ② knowledge_type별 시간 감쇠 → ③ 접근 빈도 부스트의 단계로 적용됩니다(자세한 내용은 스펙 2.3절 참조).
principle : no decay (MBSE design principles, math/algorithms)
paper : re-evaluated roughly every half year (papers, technical articles)
news : decays significantly over weeks to months (news, model-release info)
experiment : decays according to project duration (experiment logs, run records)knowledge_type은 청크 내용을 LLM이 판단하는 것이 아니라 수집 소스에서 결정적으로 결정되도록 설계되었습니다(예: 사람이 명시적으로 등록한 설계 문서 → principle; arXiv 논문/기술 기사 → paper; 뉴스/웹 검색 결과 → news; 실행 로그 → experiment).
참고:
principle(감쇠 없음)은 청크가 "run_forgetting_batch에 의해 절대 망각되지 않는다"는 것을 보장하지 않습니다. 단계적 리랭킹이 ① 중요도 컷오프를 먼저 적용하므로,knowledge_type=principle청크라도importance가 낮게 설정되어importance_threshold아래로 떨어지면 아카이브 대상이 될 수 있습니다(tests/test_archival.py에서 확인됨). "감쇠 없음"은 ② 시간 감쇠 단계에만 적용되며, 전체 ①②③ 파이프라인에서 "절대 망각되지 않음"을 보장하는 것은 아닙니다.
참고: 메모리 메커니즘(knowledge_type/importance/단계적 리랭킹/망각 배치/MCP 서버)은 FAISS 백엔드(
HybridRAGSystem)에만 구현되어 있습니다. Qdrant/Chroma/PostgreSQL 버전은 일반 하이브리드 검색 라이브러리로만 제공됩니다.
Related MCP server: mnemostack
설치
pip install -r requirements.txt개발/테스트용:
pip install -r requirements-dev.txt사용법 ① MCP 서버로 실행(권장)
서버 시작
python mcp_server/server.py저장 위치는 환경 변수로 설정할 수 있습니다(기본값: hybrid_rag.db / indices).
HYBRID_RAG_DB_PATH=my_memory.db HYBRID_RAG_INDEX_PATH=my_indices python mcp_server/server.pyClaude Code에 등록
프로젝트 루트의 .mcp.json은 이미 다음과 같이 설정되어 있습니다. Claude Code는 이 저장소를 열 때 자동으로 인식합니다.
{
"mcpServers": {
"hybrid-rag-memory": {
"type": "stdio",
"command": "python",
"args": ["mcp_server/server.py"],
"env": {
"HYBRID_RAG_DB_PATH": "hybrid_rag.db",
"HYBRID_RAG_INDEX_PATH": "indices"
}
}
}
}가상 환경을 사용하는 경우 command를 venv 내 Python 인터프리터의 절대 경로로 변경하세요(예: "command": "./.venv/Scripts/python.exe").
제공되는 도구
스펙 5절에서 요구하는 최소 3개 도구(①–③) 외에도, 이 서버는 데이터 수집, 태깅, 중복 방지, 망각 배치, 상태 확인을 위한 10개 도구(④–⑬, 스펙 확장)를 추가로 제공합니다.
# | 도구 | 설명 |
① |
| 고정 임베딩 모델로 텍스트를 벡터화합니다(결정적 처리) |
② |
| 하이브리드 벡터+BM25 검색. 관련성 리랭킹(Cross-encoder)을 이미 거친 청크를 반환합니다. |
③ |
| 단계적 리랭킹: 중요도 컷오프 → |
④ |
| 문서를 수집합니다. |
⑤ |
| 중요도 태그를 할당하거나 |
⑥ |
| 정확 일치 태그 조회(의미 검색 우회). 동일 소스의 문서가 이미 수집되었는지 확인하는 데 사용됩니다 [스펙 확장] |
⑦ |
| 동일 문서 내 인접 청크를 가져옵니다(의미 검색을 우회하는 직접 조회). 청크 경계에서 손실된 맥락을 보완합니다 [스펙 확장] |
⑧ |
| 문서와 해당 문서의 모든 청크를 삭제합니다. 재수집 시 "교체" 흐름에서 사용됩니다 [스펙 확장] |
⑨ |
| 마지막 인덱스 업데이트 이후 추가된 청크만 증분적으로 반영하는 경량 인덱스 업데이트 [스펙 확장, 2026-07-30 추가] |
⑩ |
| DB의 모든 청크에서 FAISS/BM25 인덱스를 전체 재구축합니다. 삭제(⑧ 또는 |
⑪ |
| 망각/아카이브 배치 작업. 자주 실행하지 않는 용도로만 설계되었습니다 [스펙 확장] |
⑫ |
| 인덱스와 DB 간의 일관성을 확인하고 보고합니다(변경 없음). 삭제 후 |
⑬ |
| DB의 메모리 메커니즘 태깅 적용 범위를 보고합니다(변경 없음). |
④–⑬이 없으면 ①–③ 도구만으로는 데이터 수집, 중요도 태그 확정, 동일 소스 중복 등록 방지가 모두 불가능하여 시스템이 실용적이지 않으므로 추가되었습니다.
여러 파일을 연속으로 수집할 때의 주의사항(중요)
배경(2026-07-30에 수정된 과거 이슈): ingest는 기본적으로 "호출할 때마다 DB의 모든 청크를 재임베딩하고 인덱스를 재구축"하는 방식이었기 때문에, 단일 호출 비용이 말뭉치 크기에 따라 선형적으로 증가했고, 파일을 한 번에 하나씩 순차적으로 ingest하면 타임아웃이 발생했습니다. ingest(rebuild_index=True)(기본값)는 이제 내부적으로 update_index()를 호출합니다 — 마지막 업데이트 이후 새로 추가된 청크만 임베딩하고 이를 FAISS 인덱스에 .add()하는 증분 방식입니다 — 따라서 이제 전체 말뭉치 크기와 무관하게 빠릅니다(BM25 쪽은 여전히 매번 가벼운 전체 재구축을 수행하는데, IDF 통계가 전체 말뭉치에 의존하기 때문이지만, 신경망 임베딩이 포함되지 않아 비용이 저렴합니다).
그렇다고 해도, 모든 단일 파일에 대해 증분 업데이트를 실행하는 것은 여전히 불필요한 오버헤드이므로, 여러 파일을 연속으로 ingest할 때는 각 ingest 호출에 rebuild_index=False를 전달하고 배치 끝에서 update_index()를 한 번 호출하여 모든 것을 한 번에 정리하는 것이 좋습니다. .claude/agents/doc-to-memory.md와 .claude/agents/session-to-memory.md는 이미 이 패턴으로 구현되어 있습니다. find_by_tag를 통한 DB 확인(중복 방지/진행 상황 검증용)은 SQLite를 직접 쿼리하므로 인덱스가 따라잡을 때까지 기다릴 필요 없이 동작합니다.
전체 rebuild_index()가 필요한 경우: 배치에 delete_document 호출이 하나라도 포함되거나 run_forgetting_batch의 아카이브 패스(즉, 벡터 삭제)가 포함된 경우입니다. 증분 추가(update_index)는 FAISS에 추가만 지원하고 제거는 지원하지 않으므로, 삭제가 포함된 배치는 반드시 전체 rebuild_index()로 끝나야 합니다. 순수하게 새 추가만으로 구성된 배치는 update_index()로 충분합니다.
동일 소스를 재등록할 때 중복 방지
ingest는 파일 내용의 해시에서 doc_id를 파생하므로, 바이트 단위로 동일한 콘텐츠를 다시 ingest하면 자동으로 건너뜁니다(diff 기반 업데이트). 그러나 동일한 소스(예: 동일한 세션)가 LLM에 의해 매번 재요약되고 재-ingest되는 경우, 매번 요약 텍스트의 약간의 변형으로 인해 다른 문서로 취급되어 중복이 생성될 수 있습니다.
이를 방지하려면 고유 식별자 태그(예: session_id:xxx)와 업데이트 시각 태그(예: session_last_activity:2026-07-28T15:59:49Z)로 ingest하고, 이후 실행에서는:
find_by_tag("session_id:xxx")로 문서가 이미 존재하는지 확인기존 업데이트 시각 태그가 현재 값과 일치하면 건너뜀 — 아무것도 하지 않음
값이 다른 경우에만(소스가 변경된 경우)
ingest로 새 콘텐츠를 넣기 전에delete_document(doc_id, rebuild_index=False)로 기존 문서를 제거
이 "변경 없으면 건너뛰고, 변경되면 교체" 패턴을 구현하는 것이 권장됩니다. .claude/agents/session-to-memory.md가 이 패턴의 참조 구현입니다.
사용 예시(개념적)
1. ingest(["design_doc.md"], metadata={"knowledge_type": "principle", "tags": ["mbse"]})
2. hybrid_search("about consistency between requirements and architecture", top_k=5)
-> [{"doc_id": ..., "chunk_index": ..., "content": ..., "knowledge_type": "principle",
"importance": null, "access_count": 0, "score": 0.87}, ...]
3. set_chunk_tags(doc_id, chunk_index, importance=0.9)
4. rerank(chunks, time_weight=0.5, freq_weight=0.1, importance_threshold=0.3)
-> chunks reordered along the memory axis (staleness, frequency, importance)사용법 ② Claude Code 에이전트로 사용
.claude/agents/rag-memory.md는 이 메모리 메커니즘의 "에이전트 측(클래스 ①)"을 담당하는 서브 에이전트 정의를 제공합니다. .mcp.json이 등록되면 Claude Code에서 다음과 같이 호출할 수 있습니다:
Use the rag-memory agent to look into past design decisions인간의 의도 확인이 필요한 작업(중요도 태깅, knowledge_type 재태깅, 망각 배치 실행 시점 결정)에 대한 운영 규칙도 이 에이전트 정의에 작성되어 있습니다.
또한 .claude/agents/session-to-memory.md는 과거 Claude Code 세션(채팅 기록)을 요약하여 knowledge_type="experiment"로 장기 메모리에 ingest하는 전용 에이전트입니다. 비용 절감을 위해 Haiku 모델로 실행되며, 동일 세션을 재처리할 때 session_id/업데이트 시각 태그를 통해 기존 항목과 비교합니다 — 변경 없으면 건너뛰고, 변경되면 교체합니다(이전 섹션 참조). 호출자는 대상 세션을 명시적으로 지정해야 하며, 무제한으로 모든 세션을 대상으로 하지 않습니다.
사용법 ③ Python 라이브러리로 직접 사용
MCP 서버를 거치지 않고 Python 코드에서 직접 호출할 수도 있습니다.
from hybrid_rag import HybridRAGSystem
rag = HybridRAGSystem(db_path="hybrid_rag.db", index_path="indices")
rag.ingest_documents(
["design_doc.md"],
metadata={"knowledge_type": "principle", "importance": 0.9, "tags": ["mbse"]},
)
result = rag.query(
"about consistency between requirements and architecture",
top_k=5,
enable_memory_rerank=True, # enable the memory mechanism's staged reranking
memory_time_weight=0.5,
memory_freq_weight=0.1,
memory_importance_threshold=0.3,
)
print(result["context"])
# assign an importance tag after the fact (no vector rebuild needed)
rag.set_chunk_tags(doc_id="design_doc_xxxx", chunk_index=0, importance=0.9)
# forgetting/archival batch (normally run infrequently)
report = rag.run_forgetting_batch(score_threshold=0.05, dry_run=True)CLI에서 망각 배치 실행
드물게 실행되는 배치용 스크립트입니다 — 예: 3개월 주기 또는 새 모델이 출시되었을 때(서버 내에서 자동으로 실행되지 않음).
python scripts/run_forgetting_batch.py --dry-run
python scripts/run_forgetting_batch.py --score-threshold 0.1 --time-weight 0.8주요 옵션: --db-path --index-path --archive-path --time-weight --freq-weight --importance-threshold --score-threshold --dry-run
아카이브된 청크는 archive/chunks_archive.jsonl(원문 텍스트 + 메타데이터 + 점수 + 삭제 사유 + 삭제 타임스탬프)로 이관되며, 해당 벡터 표현은 폐기됩니다.
CLI에서 검색 정확도 자동 평가
수동 쿼리와 Cursor/Claude Code로 결과를 눈으로 확인하는 대신, 골든 쿼리 세트에 대한 검색 정확도(Precision@k/Recall@k/MRR/NDCG@k/Hit Rate@k, 권위 문서 순위, 노이즈 비율)를 재현 가능한 방식으로 측정하는 스크립트입니다.
cp eval/golden_queries.example.yaml eval/golden_queries.yaml # once, at first use — rewrite the doc_ids for your own corpus
python scripts/run_evaluation.py --db-path mcp_server/hybrid_rag.db --index-path mcp_server/hybrid_rag_indices주요 옵션: --db-path --index-path --golden-set(기본값 eval/golden_queries.yaml) --k-values(기본값 1,3,5,10) --authority-window(기본값 20) --output
근사 중복 ingest 감사
ingest의 중복 감지는 동일한 콘텐츠가 다른 파일(다른 경로/파일명 — 위의 "동일 소스를 재등록할 때 중복 방지" 참조)을 통해 유입되는 경우를 잡아낼 수 없습니다. 이 스크립트는 기존 말뭉치에 이미 들어간 근사 중복을 나열만 합니다. 어떤 것도 삭제하지 않습니다.
python scripts/find_near_duplicates.py --db-path mcp_server/hybrid_rag.db
python scripts/find_near_duplicates.py --db-path mcp_server/hybrid_rag.db --output eval/duplicates_report.json정규화된 콘텐츠 해시(documents.content_hash)가 일치하는 문서를 그룹화합니다. 어떤 것을 유지할지 — 그리고 무엇을 삭제할지 — 는 사용자에게 맡겨집니다. delete_document(doc_id, rebuild_index=False)를 수동으로 호출하고(배치 끝에 반드시 rebuild_index를 호출해야 합니다).
eval/golden_queries.yaml은 실제 말뭉치에 특화된 doc_id를 포함하는 개인 데이터이므로 .gitignore 처리되어 있습니다. 보고서는 eval/eval_report_<date>.md(동일 이름의 .json 포함)로 작성되며, 이 역시 .gitignore 처리됩니다(지속적인 추적을 위해 로컬 머신에 유지됩니다).
메모리 메커니즘 필드
ingest/Python API의 metadata 또는 청크별로 전달되는 필드:
필드 | 유형 | 설명 |
|
|
|
|
| 에이전트가 사후에 부여하는 중요도. 설정되지 않음( |
|
| 임의 태그. |
|
| 접근 빈도. 청크가 쿼리에서 실제로 반환될 때마다 자동 증가함 |
|
| 마지막 접근/생성 타임스탬프. 시간 감쇠의 기초가 됨 |
테스트
pytest tests/ -vtest_metadata_pipeline.py:knowledge_type/importance/tags가 ingest → build_index → query 파이프라인을 통과하는지 검증하는 회귀 테스트test_memory_scoring.py: 단계별 재랭킹(컷오프, 감쇠, 빈도 부스트) 단위 테스트test_archival.py: 망각/아카이브 배치 단위 테스트test_index_health.py:index_health(인덱스/DB 일관성 검사) 단위 테스트
다른 테스트 파일의 전체 목록과 역할은 파일 구조를 참조하세요.
기본 라이브러리 기능(백엔드 공통)
기본 RAG 기능 — 밀집/희소 하이브리드 검색, RRF, Cross-encoder 재랭킹, MMR 다양성 선택, 쿼리 확장, 캐싱 등 — 은 모든 백엔드(FAISS/Qdrant/Chroma/PostgreSQL)에 공통입니다.
from hybrid_rag import create_rag_system
rag = create_rag_system(backend="faiss") # "qdrant" / "chroma" / "postgres" are also available
rag.ingest_documents(["document1.pdf", "document2.md"])
result = rag.query("What is machine learning?", top_k=5)측면 | FAISS | Qdrant | ChromaDB | PostgreSQL |
필터링된 검색 | 후처리 | 빠름(단일 단계) | 후처리 | 후처리 |
서버 필요 | 아니요 | 아니요 | 아니요 | 예 |
규모 | 최대 ~20M | 최대 ~50M | 중간 규모 | 대규모 |
메모리 메커니즘(이 README) | ✓ | ✗ | ✗ | ✗ |
선택적 설치: 이 저장소에는 pyproject.toml/setup.py가 없으므로 pip install hybrid-rag[...] 형태로 배포되지 않습니다. Qdrant/Chroma/PostgreSQL 버전을 사용하려면 해당 클라이언트 라이브러리를 직접 설치하세요(pip install qdrant-client / pip install chromadb / pip install "psycopg[binary]" pgvector — 모두 requirements.txt에 이미 나열되어 있으므로 pip install -r requirements.txt만으로 충분합니다).
주요 추가 설정(FAISS 버전의 HybridRAGSystem 생성자 인자의 일부):
rag = HybridRAGSystem(
dense_model="paraphrase-multilingual-MiniLM-L12-v2",
rerank_model="BAAI/bge-reranker-v2-m3",
max_chunk_size=512,
index_type="hnsw", # "flat" / "ivf" / "hnsw"
enable_mmr=True, mmr_lambda=0.6,
enable_cache=True, cache_ttl_seconds=3600,
query_expander=None, # pass a QueryExpander instance for LLM-based query expansion
memory_half_life_overrides=None, # override the half-life (days) per knowledge_type
enable_guaranteed_candidates=True, # always add principle/high-importance chunks to the candidate pool (default True)
guaranteed_knowledge_types=None, # defaults to ["principle"]
guaranteed_importance_threshold=0.7,
guaranteed_candidates_limit=50,
)enable_guaranteed_candidates(기본값 True)는 knowledge_type=principle 청크(또는 importance>=0.7인 청크)가 처음부터 검색 후보 풀에 포함되지 않아 단계별 재랭킹이 이를 구제할 수 없었던 문제(RAG_EVALUATION_REPORT_2026-07-30.md/RAG_精度テスト_2026-07-31.md에 보고된 "principle 문서가 묻히는 문제")를 해결합니다. 검색 직후 일치하는 청크를 항상 후보 풀에 추가하고 Cross-encoder가 관련성을 점수화하도록 하는 방식으로 작동합니다 — 상위로 강제하지는 않습니다. metadata_filters(filters)를 전달하는 query()/hybrid_search 호출은 이 병합을 건너뜁니다.
문서화(Sphinx) / 다이어그램(PlantUML)
pip install sphinx sphinx-rtd-theme
python -m sphinx -b html docs/source docs/builddocs/uml/는 클래스 다이어그램, 시퀀스 다이어그램, 상태 머신 다이어그램용 PlantUML 소스를 보관하기 위한 디렉터리입니다(이 글을 쓰는 시점에는 아직 채워지지 않음).
파일 구조
hybrid_rag_agent_spec.md # design spec for the memory mechanism
.mcp.json # MCP server registration for Claude Code
.claude/agents/rag-memory.md # sub-agent definition for Claude Code
mcp_server/
└── server.py # the MCP server itself (13 tools, see the table above)
scripts/
├── run_forgetting_batch.py # CLI for the forgetting/archival batch
├── run_evaluation.py # CLI that automatically evaluates retrieval accuracy against a golden query set
├── find_near_duplicates.py # CLI that audits near-duplicate ingests in the existing corpus (report-only, never deletes)
├── backfill_source_date.py # bulk-backfills source_date on existing chunks
├── list_md_files.py # lists candidate Markdown files for ingestion
├── manage_ingest_status.py # tracks ingest progress against list_md_files.py's listing
├── manage_conv_ingest_status.py # tracks ingest progress against convert_conversations.py's output
└── convert_conversations.py # converts a Claude.ai export (JSON) into Markdown
hybrid_rag/
├── __init__.py
├── ingestion.py # document processing
├── chunking.py # semantic chunking
├── indexing.py # dense & sparse index (FAISS)
├── indexing_bm25.py # BM25 index
├── indexing_sparse_tfidf.py # TF-IDF sparse index (shared by the Chroma/Postgres/Qdrant backends)
├── indexing_qdrant.py / indexing_chroma.py / indexing_postgres.py
├── retrieval.py # RRF search
├── reranking.py # Cross-encoder reranking (relevance axis)
├── memory_scoring.py # staged reranking (memory axis: importance/decay/frequency)
├── archival.py # forgetting/archival batch processing
├── index_health.py # index/DB consistency checking (backs the ⑫ index_health tool)
├── caching.py / embedding_cache.py
├── context.py / diversity.py / evaluation.py
├── storage.py # SQLite database (including memory-mechanism fields)
├── query_expansion.py
├── rag_system.py # main orchestrator (FAISS version, implements the memory mechanism)
├── _rag_system_indexing.py # ^ ingest/build/incremental-update/load (mixin)
├── _rag_system_query.py # ^ query pipeline (mixin)
├── _rag_system_memory.py # ^ tags/neighboring chunks/forgetting batch (mixin)
├── _rag_system_stats.py # ^ stats & cache management (mixin)
├── _rag_system_docops.py # ^ embedding/delete/lightweight search (mixin)
├── rag_system_base.py # base class shared by the Chroma/Postgres/Qdrant backends
├── rag_system_qdrant.py / rag_system_chroma.py / rag_system_postgres.py
└── rag_system_factory.py
tests/
├── test_metadata_pipeline.py # metadata regression test across ingest → build_index → query
├── test_memory_scoring.py # unit tests for staged reranking
├── test_archival.py # unit tests for the forgetting/archival batch
├── test_incremental_index.py # unit/integration tests for update_index (incremental updates)
├── test_index_health.py # unit tests for index_health (index/DB consistency check)
├── test_result_dedup.py # unit tests for RRF fusion-key stability and search-result dedup
├── test_diversity.py # unit tests for MMR diversity selection
├── test_reranking.py # unit tests for Cross-encoder reranking stats
├── test_retriever_shutdown.py # tests for RRFRetriever resource cleanup (thread leaks)
├── test_indexing_bm25.py # unit tests for the BM25 index
├── test_storage_concurrency.py # unit tests for concurrent SQLite writes
├── test_source_date.py # unit tests for source_date derivation (time-decay reference point)
├── test_document_chunks.py # unit tests for get_document_chunks (fetching neighboring chunks)
├── test_evaluation.py # unit tests for RAGEvaluator (Precision@k, etc.)
├── test_database_stats.py # unit tests for get_database_stats / duplicate-ingest detection
├── test_guaranteed_candidates.py # unit tests for guaranteed candidate-pool merging (the fix for principle burial)
├── test_rag_system_factory.py # unit tests for create_rag_system (backend switching)
└── conftest.py # shared pytest configuration라이선스
MIT License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
Shared long-term memory vault for AI agents with 20 MCP tools.
Related MCP Servers
- AlicenseBqualityFmaintenancePersistent memory, teams, and projects for AI agents. 76 MCP tools for storing, recalling, and sharing knowledge across sessions with 4-strategy hybrid search.332301MIT
- AlicenseAqualityAmaintenanceDurable hybrid memory for AI agents. Combines vector search, BM25, temporal retrieval, and optional Memgraph knowledge graph via reciprocal rank fusion. 6 MCP tools: health, search, answer, feedback, graph_query, graph_add_triple. Self-hosted with Qdrant backend.77Apache 2.0
- AlicenseNot gradedqualityAmaintenanceProvides AI agents with persistent knowledge storage, enabling them to store, search, and retrieve text, documents, and files using semantic and keyword search via MCP tools.32Apache 2.0
- AlicenseNot gradedqualityDmaintenanceLocal-first AI memory layer with hybrid retrieval and brain-inspired namespaces. Enables agents to save, search, and manage memories directly via MCP tools.5MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/masaki-kato-119/hybrid-rag-memory'
If you have feedback or need assistance with the MCP directory API, please join our Discord server