Skip to main content
Glama
renzynx

@renzynx/memory-mcp

by renzynx

@renzynx/memory-mcp

A persistent memory MCP server with FTS5 fuzzy search. Compatible with Bun and Node.js.

Features

  • Persistent Storage: Data stored in ~/.mcp-memory/memory.db survives npx/bunx cache clears

  • Fuzzy Search: FTS5 with trigram tokenization for substring matching (pythpython)

  • Token Efficient: Results in TOON format for minimal token usage

  • Auto Maintenance: Prunes entries older than 30 days, creates backups on startup

  • Cross Runtime: Works with both Bun and Node.js

Related MCP server: agent-memory

Installation

npx @renzynx/memory-mcp
# or
bunx @renzynx/memory-mcp

Configuration

OpenCode

Add to ~/.config/opencode/opencode.jsonc:

{
  "mcp": {
    "memory": {
      "type": "local",
      "command": ["bunx", "@renzynx/memory-mcp"]
    }
  }
}

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["@renzynx/memory-mcp"]
    }
  }
}

Tools

save_memory

Store information with a category.

save_memory(content: string, category: string)

Categories: preferences, facts, context, projects, conventions

search_memories

Fuzzy search stored memories. Returns TOON format or Ø if empty.

search_memories(query: string)

list_categories

List all unique categories. Returns TOON format or Ø if empty.

list_categories()

Agent Instructions

Add to your agent system prompt:

## Memory System

You have access to a persistent memory system via MCP tools. Use it proactively to remember important information across sessions.

### Tools Available
- `save_memory(content, category)` - Store information with a category
- `search_memories(query)` - Fuzzy search (supports partial matches like "pyth" → "python")
- `list_categories()` - View all memory categories

### When to Save Memories
- User preferences (coding style, tools, frameworks, communication preferences)
- Project context (architecture decisions, file structures, conventions)
- Facts about the user (name, role, team, timezone)
- Recurring tasks or workflows
- Corrections or clarifications the user provides
- Important decisions and their rationale

### Categories to Use
- `preferences` - User preferences and settings
- `facts` - Information about the user or their environment
- `projects` - Project-specific context and decisions
- `conventions` - Coding standards and patterns
- `context` - Session or task context worth preserving

### When to Search Memories
- At the start of conversations to recall user context
- Before making assumptions about preferences
- When the user references something previously discussed
- Before suggesting tools, patterns, or approaches

### Output Format
Results return in TOON format for token efficiency. "Ø" means no results found.

### Best Practices
- Save incrementally, not everything at once
- Use specific, searchable content
- Search before asking the user to repeat themselves
- Update memories when information changes (save new version)

License

MIT

Available Tools

3 tools
list_categoriesA

List all unique memory categories. Returns TOON-formatted list or 'Ø' if empty.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the burden of disclosing behavior. It explicitly states the return format ('TOON-formatted list') and the empty-case sentinel ('Ø'), which is useful behavioral context. The verb 'List' also implies a read-only operation, though it does not elaborate on authentication, side effects, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly written sentence that states the action, the resource scope, and the return behavior with no wasted words. Every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with no output schema, the description is complete: it names what is returned and the special empty result. The sibling tools are sufficiently different that no additional routing or prerequisite information is necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so no parameter documentation is needed. The description does not need to add parameter semantics, and the baseline of 4 for a tool with no parameters is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' with the resource 'all unique memory categories', making the tool's purpose immediately clear. It is distinguishable from siblings save_memory and search_memories because it targets categories rather than individual memories or memory search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for retrieving all unique categories, so an agent can infer when to use it. However, it does not explicitly state when to use it versus search_memories or save_memory, nor does it provide any exclusion criteria or alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_memoryA

Persist a memory with categorization. Use for storing facts, preferences, context, or any information that should be recalled later.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe memory content to store
categoryYesCategory for organization (e.g., 'preferences', 'facts', 'context', 'projects')

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden of behavioral disclosure. It only restates the persist action and mentions categorization; it does not disclose whether saving overwrites or duplicates existing memories, whether categories must pre-exist, or what response/confirmation is returned. This adds little beyond what the schema already communicates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded: the action is stated in the first sentence, followed by concrete use cases in the second. There is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a low-complexity tool: two scalar required parameters, no nested objects, no output schema. The description plus schema are sufficient for an agent to understand what to pass and why. The main missing context is behavior around duplicates or overwrites, but for selecting and invoking the tool, the information is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both content and category adequately described and category examples provided. The description adds no new parameter-level meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('persist') and resource ('a memory') and clarifies the kinds of information to store (facts, preferences, context). It does not explicitly contrast with sibling tools, but 'search' and 'list' are clearly different operations, so differentiation is implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context: use for storing facts, preferences, context, or any information that should be recalled later. It doesn't explicitly say when not to use it or direct users to search_memories for retrieval, but the storing-vs-searching relationship is implied clearly enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_memoriesA

Search stored memories using fuzzy substring matching. Supports partial words and phrases. Returns results in TOON format for token efficiency. Returns 'Ø' if no matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query - supports substring matching (e.g., 'pyth' matches 'python')

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden and does it well: it discloses the matching algorithm, partial-word support, the TOON return format, and the 'Ø' no-match sentinel. It does not discuss side effects, but as a search operation the read-only nature is reasonably implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences that front-load the operation, then add matching semantics, return format, and no-match behavior. Every sentence carries useful, non-redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter search with no output schema, this definition is complete: it states what to pass, how matching works, what the response format is, and the sentinel for no matches. No critical operational gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the query parameter already includes a substring-matching example. The description reinforces fuzzy matching but adds little parameter-specific meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches stored memories using fuzzy substring matching, with support for partial words and phrases. This distinguishes it from siblings save_memory and list_categories, which are write and list operations respectively.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use this tool when needing to retrieve memories by text query with fuzzy/partial matching. It does not explicitly name alternatives, but the search semantics are self-evident and do not conflict with the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv1.1.0
    • First observedlist_categories
    • First observedsave_memory
    • First observedsearch_memories

TDQS

A4.1/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: storing memories, searching them, and listing categories. There is no functional overlap between the three operations.

Naming Consistency5/5

All tool names follow a predictable verb_noun snake_case pattern: save_memory, search_memories, list_categories. The singular/plural noun variation is natural and does not create confusion.

Tool Count5/5

Three tools is a minimal but well-scoped set for a focused memory server. Each tool covers a distinct core operation without unnecessary bloat.

Completeness3/5

The server supports saving, searching, and listing categories, but lacks update and delete operations for memories. This creates a notable lifecycle gap where incorrect or obsolete memories cannot be corrected or removed.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Persistent memory MCP server for AI coding agents. Stores, searches, and retrieves context across sessions using SQLite and FTS5.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server providing persistent memory management for AI agents using SQLite and FTS5, enabling storage, full-text search, and recall of memories with namespace isolation.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for personal and shared memory with full-text search (SQLite FTS5) and outcome tracking, compatible with any MCP agent like Claude Code, Cursor, and Codex CLI.
    15
    MIT

Latest Blog Posts

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/renzynx/memory-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server