midas-memory-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MIDAS_MCP_DB | No | Path to the SQLite database file. Use ':memory:' for ephemeral. | ~/.midas/memory.sqlite3 |
| MIDAS_MCP_ANN | No | Set to '1' to enable sub-linear IVF for large stores. | |
| MIDAS_MCP_KEY | No | Encryption key for SQLCipher at-rest encryption. Requires 'midas-memory[encrypted]' extra. | |
| MIDAS_MCP_NLI | No | Set to '1' to enable NLI-gated revision. | |
| MIDAS_MCP_TTL | No | Per-kind retention in days. E.g., 'chat=30,note=90'. | |
| MIDAS_MCP_TOKEN | No | Bearer token for HTTP endpoint authentication. | |
| MIDAS_MCP_PINNED | No | Pin standing directives or important memory items. | |
| MIDAS_MCP_EMBEDDER | No | Embedding model backend: 'local' (default), 'hashing', 'multilingual', or any fastembed model ID. | |
| MIDAS_MCP_NAMESPACE | No | Memory namespace. Set to 'auto' for per-project scoping based on current working directory. | |
| MIDAS_MCP_SUPERSEDE | No | Enable evolution of memory via contradiction detection. Set to '1' or similar. | |
| MIDAS_MCP_MAX_RECORDS | No | Maximum number of records to keep in memory. | |
| MIDAS_MCP_AUTO_MAINTAIN | No | Idle-time upkeep interval. E.g., '5' for 5 minutes. | |
| MIDAS_MCP_MIN_IMPORTANCE | No | Minimum importance score for memory entries to be retained. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| rememberA | Store a memory for later recall. content: text to remember (a fact, decision, preference, or conversation turn). kind: note | chat | fact | preference | constraint | mission. importance: 1-5 (higher is weighted up in recall and protected from forgetting). 0 = auto-derive from content (no LLM) — concrete facts score higher than chit-chat. session: conversation/thread id used to group related memories. provenance: planning | action | observation | user_confirmation. Use user_confirmation only when the user explicitly confirmed the content; external actions may rely only on that provenance. actor: agent/process that produced the memory (default: MIDAS_MCP_ACTOR). namespace: scope tag (e.g. a project or user id); defaults to MIDAS_MCP_NAMESPACE. |
| captureA | Offer a turn to memory; Midas decides whether to keep it (no LLM). Forward anything that might be durable — a fact, decision, preference, constraint, or correction. Midas scores its importance and keeps it only if it clears the relevance policy and isn't a duplicate, so you can capture freely without polluting memory. Returns whether it was stored and why (so you learn the bar). This is the workhorse for hands-off, automatic remembering. kind: note | chat | fact | preference | constraint | mission. provenance: planning | action | observation | user_confirmation. |
| remember_codeA | Capture a CODE memory tagged by category + project, for the coding-agent views. code_kind: one of
architecture_decision | dependency_choice | convention | bug_fixed | recurring_failure |
forbidden_action | command_worked | command_failed. Use forbidden_action for rules the agent must not
violate (they gate |
| recallA | Retrieve relevant memories with deterministic, source-traceable evidence. Returns exact stored text plus provenance/source/timestamps and, by default, score components (relevance, importance_norm, recency). No LLM rewrites or rationales are generated. Set hybrid=true to fuse BM25 lexical matching with semantic recall — useful when the query is an exact identifier (an error code, a function name) rather than a paraphrase. as_of: ISO date (YYYY-MM-DD) for a HISTORICAL query — "what did memory say on that date": later records are excluded and revised beliefs resolve to the version valid then. |
| inspect_memoryA | Inspect one stored memory by id without search, mutation, or embedding exposure. |
| build_contextA | Assemble a budgeted, prompt-ready context block for a query. Highest-value memories first, with same-session neighbours pulled in, trimmed to token_budget.
Drop the returned string straight into an LLM prompt. It uses lean memory lines by default;
call |
| memory_stateA | The CURRENT durable state of a project/scope: the live (non-superseded) decisions, constraints,
facts, and preferences, newest first. Use this to ONBOARD into a project or before planning — when
a broad 'what's the current state?' has no single matching turn, so |
| memory_diffA | What CHANGED in memory in the last |
| resumeA | START OF SESSION: everything needed to pick up where the last session left off, in ONE call —
pinned standing directives, live forbidden rules, what changed in the last |
| memory_conflictsA | Live beliefs that CONTRADICT each other with neither superseding the other — the multi-agent
failure mode where two clients wrote opposite facts into the shared memory and both stayed live.
Returns ranked candidate pairs (NLI-scored when the local NLI model is enabled, else a same-slot
heuristic: numbers disagree / one side negates). Midas never resolves these silently: verify with
the user, then |
| open_loopsA | Unresolved commitments — work someone said WOULD be done and never closed — oldest (most
overdue) first. Continuity is not only facts: check this when resuming so promised work isn't
silently dropped. Record one with |
| remember_commitmentA | Record a commitment (an OPEN LOOP): work you or the user said WILL be done — a promised fix,
a follow-up, a migration to finish. It stays visible in |
| close_loopA | Close an open commitment: records the resolution and supersedes the open loop with it, so
|
| project_stateA | The current code-state of a project for a coding agent, grouped by code_kind
(architecture_decision, bug_fixed, convention, forbidden_action, dependency_choice, ...). Live
(non-superseded) memories only — call this to ONBOARD into a project, or to see what is decided and
what is forbidden before acting. Deterministic, no LLM. Capture code memories with the SDK's
|
| check_forbidden_actionA | Before a code action, check it against the project's live
|
| audit_useA | The compliance audit artifact for a memory-justified use: the guard decision + the full provenance and belief-revision history of every supporting memory + an attributability score (fraction of evidence with both a source and an actor). Hand this to an auditor to prove WHY an action is or isn't justified. Source-traceable, deterministic, no LLM. |
| memory_policyA | Return the exact MCP-injected memory policy text and guard parameters. |
| check_memory_useA | Decide whether recalled memory may justify the intended use. intended_use: planning | answer | external_action | destructive_action. External/destructive actions require user_confirmation provenance; otherwise ask the user first. |
| forgetA | Delete a single memory by id (ids come from |
| forget_matchingA | Topic-level erasure ("forget what you know about X") with a reviewable audit. Matches memories at relevance >= min_relevance. By default this is a DRY RUN: it returns what would be deleted so you (or the user) can review; call again with dry_run=false to delete. Deletion bypasses durability protections — an explicit erasure request outranks retention — and returns the full list of removed memories as the audit trail. |
| forget_allA | Clear all stored memories (fresh start). |
| maintainA | Run a no-LLM memory-maintenance pass and return the deletion audit. Bounds storage and keeps recall clean without sending anything to an LLM — the enterprise retention / "right to be forgotten" lever, with a full audit of exactly what was removed:
|
| statsA | Memory stats: total count, breakdown by kind, namespace, and the temporal-tier distribution. tiers: short (<= 1 day) / medium (<= 1 week) / long (older) — the short/medium/multi-day horizons. Pass namespace to scope the counts to one project/agent scope. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| memory_session | A drop-in prompt that switches an agent into Midas auto-memory mode for a session. Clients that don't surface server `instructions` automatically can pin this as a system prompt. |
| distill | Drive a no-Midas-LLM distillation pass: YOUR model turns the recent conversation into compact, self-contained memories. This is the architecturally-honest version of the frontier's LLM-at-ingest memory (Mem0/Letta/ LIGHT): the gains in those systems come from distilling raw turns into high-signal facts — but they pay a separate LLM per session. Here the model you're ALREADY running does it, and Midas stays no-LLM and $0. A distilled fact ("X's deploy target is staging, as of 2026-06") retrieves far better than the conversational fragment it came from. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- 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/vornicx/Midas'
If you have feedback or need assistance with the MCP directory API, please join our Discord server