# MCP AutoMem (npm · @verygoodplugins/mcp-automem)

Graph-vector memory for AI assistants using FalkorDB and Qdrant

- Trust score: 62/100 (medium)
- Change this week: +21
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `{endpoint}`: 0/100, [markdown](https://verifymcp.io/servers/verygoodplugins-mcp-automem/https-endpoint-mcp.md), [page](https://verifymcp.io/servers/verygoodplugins-mcp-automem/https-endpoint-mcp)
- remote · `{endpoint}`: 0/100, [markdown](https://verifymcp.io/servers/verygoodplugins-mcp-automem/https-endpoint-mcp-sse.md), [page](https://verifymcp.io/servers/verygoodplugins-mcp-automem/https-endpoint-mcp-sse)
- npm · `@verygoodplugins/mcp-automem`: 62/100 (this document), [markdown](https://verifymcp.io/servers/verygoodplugins-mcp-automem/verygoodplugins-mcp-automem.md), [page](https://verifymcp.io/servers/verygoodplugins-mcp-automem/verygoodplugins-mcp-automem)

## Channel facts

- Registry: `npm`
- Package: `@verygoodplugins/mcp-automem`
- Version: `0.10.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (101 of 105), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (101 of 105), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 37 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 58/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2153 tokens (~358/item across 6 items; 6 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add verygoodplugins-mcp-automem -- npx -y @verygoodplugins/mcp-automem
```

### Codex

```bash
codex mcp add verygoodplugins-mcp-automem -- npx -y @verygoodplugins/mcp-automem
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "verygoodplugins-mcp-automem": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@verygoodplugins/mcp-automem"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add verygoodplugins-mcp-automem --command npx --arg -y --arg @verygoodplugins/mcp-automem
```

### Hermes

```yaml
mcp_servers:
  verygoodplugins-mcp-automem:
    command: "npx"
    args: ["-y", "@verygoodplugins/mcp-automem"]
```

### Other

```json
{
  "mcpServers": {
    "verygoodplugins-mcp-automem": {
      "command": "npx",
      "args": [
        "-y",
        "@verygoodplugins/mcp-automem"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 62, +56)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional regression] Dependency health: partial → unverified
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] License: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional] Licence: MIT

### 2026-08-01 (score 6, −11)

- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Dependency health: unverified → partial

### 2026-07-31 (score 17, −6)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 23, −1)

- [security regression] Malware scan: pass → unverified
- [functional improvement] Tool coverage: unverified → 100

### 2026-07-28 (score 24, −17)

- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 41)

First indexed and scored.

## MCP tools (6)

### `store_memory` (~418 tokens)

Store Memory

Store a memory with optional tags, importance score, and metadata. Use this to persist important information for future recall.

\**Content size guidelines:**
\- Target: 150-300 characters (one meaningful paragraph)
\- Maximum: 500 characters (auto-summarized if exceeded)
\- Hard limit: 2000 characters (rejected)
\- Format: "Brief title. Context and details. Impact/outcome."

\**When to use:**
\- After making a decision: store the reasoning and outcome
\- When discovering a pattern: store the pattern and where it applies
\- After fixing a bug: store the root cause and solution
\- When learning user preferences: store what they prefer and why

\**Examples:**
\- store_memory({ content: "Chose PostgreSQL over MongoDB for user service. Need ACID for transactions.", tags: ["architecture", "database"], importance: 0.9 })
\- store_memory({ content: "User prefers early returns over nested conditionals in validation code.", tags: ["code-style", "preferences"], importance: 0.7 })
\- store_memory({ content: "Auth timeout fixed by adding retry with exponential backoff. Root cause: flaky network.", tags: ["bug-fix", "auth"], importance: 0.8 })

Input parameters:

- `content` (string, required): The memory content to store. Be specific: include context, reasoning, and outcome.
- `embedding` (array): Optional embedding vector for semantic search (auto-generated if omitted)
- `importance` (number): Importance score: 0.9+ critical decisions, 0.7-0.9 patterns/bugs, 0.5-0.7 minor notes
- `metadata` (object): Optional structured metadata (e.g., { files_modified: ["auth.ts"], error_type: "timeout" })
- `tags` (array): Tags to categorize the memory (e.g., ["project-name", "bug-fix", "auth"])
- `timestamp` (string): Optional ISO timestamp (defaults to now)

Output parameters:

- `memory_id` (string): Unique ID of the stored memory (use this for associations)
- `message` (string): Confirmation message

### `recall_memory` (~884 tokens)

Recall Memory

Search and retrieve relevant memories using semantic search, keywords, tags, time filters, and graph expansion. This is the primary tool for accessing stored knowledge.

\**When to use:**
\- At conversation start: recall context about the current project/topic
\- Before making decisions: check for past decisions on similar topics
\- When debugging: search for similar past errors and their solutions
\- When implementing: find established patterns and preferences
\- For complex questions: use expand_entities for multi-hop reasoning

\**Search strategies:**
\- Semantic: Use natural language queries like "authentication timeout issues"
\- Tags: Filter by project or category with tags: ["my-project", "bug-fix"]
\- Time: Use time_query for recency like "last 7 days" or "today"
\- Multi-query: Pass multiple queries in 'queries' array for broader recall
\- Multi-hop: Use expand_entities=true for questions requiring connected reasoning

\**Examples:**
\- recall_memory({ query: "database architecture decisions", tags: ["my-project"], limit: 5 })
\- recall_memory({ queries: ["auth patterns", "login flow", "JWT tokens"], limit: 10 })
\- recall_memory({ tags: ["bug-fix"], time_query: "last 30 days", limit: 5 })
\- recall_memory({ query: "What is Sarah's sister's job?", expand_entities: true })  // Multi-hop
\- recall_memory({ query: "Python style preferences", language: "python", context: "coding-style" })

Input parameters:

- `active_path` (string): Current file path for language auto-detection (e.g., "src/auth.ts")
- `auto_decompose` (boolean): Auto-extract entities and topics from query to generate supplementary searches.
- `context` (string): Context label (e.g., "coding-style", "architecture"). Boosts matching preferences.
- `context_tags` (array): Priority tags to boost in results (e.g., ["coding-style", "preferences"])
- `context_types` (array): Priority memory types to boost (e.g., ["Style", "Preference"])
- `embedding` (array): Optional embedding vector for direct similarity search
- `end` (string): ISO timestamp upper bound
- `expand_entities` (boolean): Enable multi-hop reasoning via entity expansion. Finds memories about people/places mentioned in seed results. Use for "What is X's sister's job?" type questions.
- `expand_min_importance` (number): Minimum importance score for expanded results. Filters out low-relevance memories during graph/entity expansion. Recommended: 0.3-0.5 for broad context, 0.6-0.8 for focused results. Seed results are…
- `expand_min_strength` (number): Minimum relation strength to follow during graph expansion. Only traverses edges above this threshold. Recommended: 0.3 for exploratory, 0.6+ for high-confidence connections only. Does not affect ent…
- `expand_relations` (boolean): Follow graph relationships from seed results to find related memories.
- `expansion_limit` (integer): Max total expanded memories (default: 25)
- `language` (string): Programming language hint (e.g., "python", "typescript"). Prioritizes language-specific memories.
- `limit` (integer): Max memories to return (default: 5, increase for broader context)
- `priority_ids` (array): Specific memory IDs to ensure are included in results
- `queries` (array): Multiple queries for broader recall. Results are deduplicated server-side.
- `query` (string): Semantic search query (natural language). Describe what you're looking for.
- `relation_limit` (integer): Max relations to follow per seed memory (default: 5)
- `start` (string): ISO timestamp lower bound (alternative to time_query)
- `tag_match` (string): "exact" for exact tag match (default), "prefix" for starts-with matching
- `tag_mode` (string): "any" matches memories with any tag (default), "all" requires all tags
- `tags` (array): Filter by tags. Use project name as first tag for scoping.
- `time_query` (string): Natural language time filter: "today", "yesterday", "last week", "last 30 days"

Output parameters:

- `count` (integer): Number of memories returned
- `dedup_removed` (integer): Number of duplicate results removed (when using multiple queries)
- `results` (array): Array of matching memories with scores

### `associate_memories` (~389 tokens)

Associate Memories

Create a typed relationship between two memories. This builds a knowledge graph that improves recall by surfacing related context.

\**When to use:**
\- After storing a new memory: link it to related existing memories
\- When a bug fix relates to an original feature implementation
\- When a new decision updates or invalidates a previous one
\- To connect patterns with their concrete examples

\**Relationship types:**
\- RELATES_TO: General relationship (default)
\- LEADS_TO: Causal relationship (A caused B)
\- DERIVED_FROM: Implementation of a decision/pattern
\- EXEMPLIFIES: Concrete example of a pattern
\- EVOLVED_INTO: Updated version of a concept
\- INVALIDATED_BY: Superseded by another memory
\- CONTRADICTS: Conflicts with another memory
\- REINFORCES: Strengthens another memory's validity
\- PART_OF: Component of a larger effort
\- PREFERS_OVER: Chosen alternative
\- OCCURRED_BEFORE: Temporal ordering

\**Examples:**
\- associate_memories({ memory1_id: "bug-fix-123", memory2_id: "feature-456", type: "RELATES_TO", strength: 0.9 })
\- associate_memories({ memory1_id: "new-decision", memory2_id: "old-decision", type: "EVOLVED_INTO", strength: 0.8 })

Input parameters:

- `memory1_id` (string, required): ID of the source memory (from store_memory response or recall results)
- `memory2_id` (string, required): ID of the target memory to link to
- `strength` (number, required): Relationship strength: 0.9+ direct causation, 0.7-0.9 strong relation, 0.5-0.7 moderate
- `type` (string, required): Relationship type (see tool description for meanings)

Output parameters:

- `message` (string): Confirmation message
- `success` (boolean): Whether the association was created

### `update_memory` (~282 tokens)

Update Memory

Update an existing memory's content, tags, importance, or metadata. Use this to correct or enhance memories rather than storing duplicates.

\**When to use:**
\- To correct inaccurate information in a memory
\- To add tags that were forgotten
\- To adjust importance based on new understanding
\- To add metadata after the fact

\**Examples:**
\- update_memory({ memory_id: "abc123", importance: 0.95 })  // Increase importance
\- update_memory({ memory_id: "abc123", tags: ["project-x", "critical", "auth"] })  // Add tags
\- update_memory({ memory_id: "abc123", content: "Updated: PostgreSQL chosen for ACID + team expertise" })

Input parameters:

- `confidence` (number): Confidence score for the memory
- `content` (string): New content (replaces existing)
- `importance` (number): New importance score
- `last_accessed` (string): Last access timestamp
- `memory_id` (string, required): ID of the memory to update (from store_memory or recall results)
- `metadata` (object): New metadata (merged with existing)
- `tags` (array): New tags (replaces existing)
- `timestamp` (string): Override creation timestamp
- `type` (string): Memory type classification
- `updated_at` (string): Explicit update timestamp

Output parameters:

- `memory_id` (string): ID of the updated memory
- `message` (string): Confirmation message

### `delete_memory` (~105 tokens)

Delete Memory

Permanently delete a memory and its embedding. Use sparingly - consider updating instead.

\**When to use:**
\- Memory contains incorrect information that can't be corrected
\- Memory is a duplicate
\- Memory contains sensitive information that shouldn't persist
\- Memory is no longer relevant and clutters recall results

\**Example:**
\- delete_memory({ memory_id: "abc123" })

Input parameters:

- `memory_id` (string, required): ID of the memory to delete (from store_memory or recall results)

Output parameters:

- `memory_id` (string): ID of the deleted memory
- `message` (string): Confirmation message

### `check_database_health` (~75 tokens)

Check Database Health

Check the health status of the AutoMem service and its connected databases (FalkorDB graph + Qdrant vectors).

\**When to use:**
\- Before a session to verify the memory service is available
\- When memory operations are failing unexpectedly
\- To check storage statistics

\**Example:**
\- check_database_health({})

Output parameters:

- `backend` (string): Backend type (automem)
- `error` (string): Error message if status is error
- `statistics` (object): Database statistics (memory counts, etc.)
- `status` (string): Overall health status

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/verygoodplugins-mcp-automem/verygoodplugins-mcp-automem#diagnostics

## Score history

- 2026-08-03: 62
- 2026-08-02: 62
- 2026-08-01: 6
- 2026-07-31: 17
- 2026-07-30: 23
- 2026-07-28: 24
- 2026-07-27: 41

## Links

- npm package: https://www.npmjs.com/package/@verygoodplugins/mcp-automem
- Socket report: https://socket.dev/npm/package/@verygoodplugins/mcp-automem
- Repository: https://github.com/verygoodplugins/mcp-automem
- Website: https://automem.ai/?utm_source=mcp-registry
- Changelog RSS feed: https://verifymcp.io/servers/verygoodplugins-mcp-automem/verygoodplugins-mcp-automem/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/verygoodplugins-mcp-automem/verygoodplugins-mcp-automem/changelog.json
- HTML version of this page: https://verifymcp.io/servers/verygoodplugins-mcp-automem/verygoodplugins-mcp-automem
