Skip to main content
Glama
Turbo Quant Memory MCP Server

Turbo Quant Memory MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TQMEMORY_EMBEDDING_BACKENDNoThe embedding backend to use. Set to 'fastembed' to use ONNX Runtime instead of PyTorch.sentence-transformers
TQMEMORY_SECRETS_PASSPHRASENoPassphrase for the secrets vault. Must be a passphrase, not a raw key. Used only if you intend to use the secrets vault.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

Use remember_note(..., kind=..., scope="project") to store typed project notes, promote reusable knowledge into global scope, deprecate stale notes without deleting history, retrieve compact project/global/hybrid memory, hydrate fuller local context through hydrate(...), index Markdown roots through index_paths(...), and run lint_knowledge_base(...) to detect broken links, orphans, and duplicate titles. To exclude directories or files from indexing, create a .tqmemoryignore file in the project root with glob patterns (one per line, # for comments). Example patterns: 'workspace-' skips dirs matching the glob, 'data/reports/.md' skips specific paths. When several agents share one working tree: call workspace_status at session start, announce_work when starting a feature and finish_work when done; read the workspace field whenever a response carries it and re-read any file another session changed before writing it; file_history and restore_file recover overwritten files. Call workspace_status before editing a file another session may have touched, and before every commit while other sessions are live. While other sessions are live, never run destructive git commands (checkout -- ., reset --hard, stash, clean, branch switch) without the human's explicit confirmation. A session under idle_sessions made no tqmemory call for 30+ minutes and is not an active peer; a session's mere presence or old last_activity_at is never a reason to postpone work, only overlaps and recent_changes are.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
healthD–
server_infoD–
list_scopesD–
list_projectsB

List saved projects with labels and explicitly bound folders.

select_projectB

Select an existing project by ID for this connection; omit ID to reset.

Вибирає наявний проєкт для цього підключення; без ідентифікатора скидає вибір.

set_project_labelsB

Set display-only labels for an existing project id.

bind_projectA

Bind a folder to an existing project and use it in this MCP session.

The folder must already exist. This does not index its files. Use the exact project_id from list_projects; labels are never identifiers.

unbind_projectB

Remove an exact folder binding; reset this session if it used it.

self_testD–
remember_noteA

Store a typed project note. kind must be exactly one of: lesson, decision, pattern, handoff.

tags: 2-3 lowercase tags are strongly recommended — tags are the only way to FILTER notes; an untagged note is reachable by semantic_search alone. source_refs: the files / notes / issues this note is about. Pass them as entity URIs (note://, file://<relative/path>, issue://KEY, https://...) and they are auto-linked into the knowledge graph as references relations, so get_related_entities can later surface them. provenance: who originated the note. Use "human-explicit" when the USER asked to remember something ("remember this", "save that"); "agent" for your own observations (the default); "external-tool" for API/tool data; "system" for automatic processes. tier: normally derived from kind (handoff -> episodic, every other kind -> durable). Override e.g. tier="durable" to keep a handoff in the default-searchable set, or tier="episodic" to keep a noisy lesson out of regular search.

After storing, connect the note with link_entities(source_uri="note://", ...) when it relates to a file, issue, or prior note — the response echoes the note's uri and hints this when the note still has no relations.

promote_noteD–
deprecate_noteD–
semantic_searchA

Compact memory retrieval (dense vector + BM25, fused via RRF).

By default only the durable and reference tiers are searched, so session handoff notes (which live in the episodic tier) are NOT returned. To recover handoffs / session summaries pass tier_filter=["episodic"] (or list every tier to opt everything in). For a query-free "where did I leave off" bootstrap at session start, prefer the recent_context tool instead.

source_filter narrows results by source type: "notes" returns only memory notes (decisions/lessons/patterns/handoffs), "markdown" only indexed doc blocks. In doc-heavy projects the reference blocks often crowd notes out of the top ranks on question-shaped queries — when you are asking "what did we decide/learn about X", pass source_filter="notes".

hydrateD–
index_pathsC

Register and index Markdown directories into project memory.

Supports .tqmemoryignore files (placed in project root or any indexed directory) with glob patterns to exclude paths from indexing. One pattern per line, # for comments. Example patterns: workspace-* skips any directory matching the glob; data/reports/*.md skips files matching a path pattern; backups/ (trailing slash, as in .gitignore) skips a directory. Agent worktrees under .claude/worktrees are skipped by default.

lint_knowledge_baseD–
link_entitiesC

Create a Knowledge Graph link between two entities.

Entities are specified using URIs:

  • Note: note://<note_id>

  • File: file://<relative_path> (relative to project root)

  • External: e.g. issue://BUG-404, task://TASK-101

unlink_entitiesB

Remove a Knowledge Graph link between two entities.

source_uri / target_uri use the same URI forms as link_entities: note://<note_id>, file://<relative/path>, issue://KEY, https://...

get_related_entitiesA

Query relations involving a specific entity URI.

uri: the entity to look up, as note://<note_id>, file://<relative/path>, issue://KEY, task://KEY, or https://... — the same URI forms link_entities accepts. Returns nothing for an entity that has no links yet.

set_secretA

Store an encrypted secret in the active project's vault.

The value is encrypted with AES-256-GCM under a per-project master key resolved from TQMEMORY_SECRETS_PASSPHRASE or the OS keyring. Secrets are NEVER indexed, embedded, or returned via semantic_search / hydrate. They live in ~/.turbo-quant-memory/projects/<project_id>/secrets/vault.tqv and stay on this machine.

get_secretA

Fetch a project secret by exact name.

Returns the value in a dedicated secret_value field (never in descriptive text). Status is "ok" on hit, "missing" when no such name exists, or "error" with setup_hint when no master key is configured yet.

list_secretsA

List secret names in the active project. Never returns values.

delete_secretC

Delete a project secret by exact name.

recent_contextA

Query-free session bootstrap: the most recently updated notes.

Call this FIRST when starting a new session or resuming after a context compaction, when you do not yet know what to search for. Returns notes ordered by recency (newest first), NOT by relevance — including handoff notes (episodic tier), which a plain semantic_search hides by default. This is the reliable "where did I leave off" entry point.

scope: 'project' (default), 'global', or 'hybrid'. Use 'hybrid' to also surface promoted cross-project knowledge. tier_filter: defaults to all tiers (so handoffs are included). Pass e.g. ["durable"] to exclude episodic session notes. format: 'json' (default); 'text' — compact plain text, one line per note with its hydrate handle (about 20% of the JSON size); 'hook' — the same text as Claude Code SessionStart hook output. Use 'hook' from a SessionStart mcp_tool hook: Claude Code shows the model only an mcp_tool hook's JSON additionalContext, never its plain text.

announce_workC

Tell the other agents in this working tree what you are changing.

feature: short name of the work. areas: workspace-relative files or directories (globs allowed). Returns the peers whose announced areas overlap yours and recent changes inside them. Inferred writers are guesses from announced areas, never facts.

finish_workB

Clear the work this session announced with announce_work.

workspace_statusA

Overview of the sessions sharing this working tree: peers, overlaps and recent file changes.

Call it at session start. Inferred writers are guesses from announced areas, never facts. Peers that made no tqmemory call for a long time are listed under idle_sessions, not in sessions, and their announced areas are left out of overlaps.

file_historyA

Journaled versions of one file in this working tree, newest first.

Versions are snapshots taken while several sessions share the tree. Use restore_file with a version id to bring one back; the overwritten content is kept as a new version.

restore_fileA

Write a journaled version of one file back into the working tree.

version: a version id from file_history, or "HEAD" for the committed content. The content being overwritten is kept as a new version, so the restore can be undone.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

C2.5/5.0

Scored across 29 tools

Disambiguation3/5

Core clusters (notes, secrets, knowledge-graph links, multi-agent work) are reasonably distinct and the richer descriptions clarify boundaries like semantic_search vs recent_context. However, several tools have no description at all (self_test, health, server_info, list_scopes, hydrate, promote_note, deprecate_note, lint_knowledge_base), and the diagnostics trio plus list_scopes/list_projects and select_project/bind_project invite confusion. select_project's description is partially non-English, further reducing clarity.

Naming Consistency4/5

Names are overwhelmingly snake_case with a verb_noun or noun_state pattern (remember_note, link_entities, set_secret, list_secrets, index_paths, restore_file). Minor deviations are noun-only forms like health, hydrate, server_info, workspace_status, file_history, which are still readable and idiomatic. No camelCase/snake_case mixing.

Tool Count3/5

29 tools is heavy and spans five subdomains (notes, secrets, projects/indexing, multi-agent coordination, file journaling, plus diagnostics). Each cluster mostly earns its place, but the three overlapping diagnostics tools (self_test, health, server_info) look like padding that inflates the surface. It borders on too many for a 'memory' server.

Completeness4/5

Coverage is strong: full secret CRUD, note lifecycle (remember/promote/deprecate) plus retrieval and KG links, project bind/unbind/label/index, and coordination with file history/restore. Gaps exist, notably no update/edit or delete operation for notes and no explicit project creation tool (only binding to an existing project_id).

Maintenance

ActivityActive
ResponsivenessLimited data