Skip to main content
Glama

OpenMemory MCP Server

MCP (Model Context Protocol) server that provides Claude Desktop with access to your OpenMemory API running on Ubuntu server richard-XPS-15-9560.local:8892.

Architecture

Claude Desktop (Windows)
    ↓ stdio
MCP Server (Python - this package)
    ↓ HTTP REST
OpenMemory API (richard-XPS-15-9560.local:8892)
    ↓
Neo4j + Vector DB (Ubuntu Docker)

Related MCP server: KARP Graph Lite

Features

The MCP server provides Claude Desktop with the following tools:

  • search_memories - Semantic search across OpenMemory graph

  • add_memory - Store new memories with sector classification

  • list_memories - Browse recent memories with pagination

  • get_memory - Retrieve specific memory by ID

  • reinforce_memory - Boost importance of a memory

  • delete_memory - Remove a memory

  • health_check - Verify OpenMemory API connectivity

Windows Installation

Prerequisites

  1. Python 3.10 or higher installed on Windows

  2. Claude Desktop installed on Windows

  3. Network access to richard-XPS-15-9560.local:8892 from your Windows PC

    • Test with: curl http://richard-XPS-15-9560.local:8892/health in PowerShell

    • Or open http://richard-XPS-15-9560.local:8892/health in browser

Step 1: Copy Files to Windows

Transfer the entire openmemory-mcp folder to your Windows PC. You can use:

  • Network share

  • USB drive

  • Git clone (if you push this to a repo)

  • Any file transfer method

Suggested location: C:\Users\YourUsername\openmemory-mcp

Step 2: Install Python Dependencies

Open PowerShell or Command Prompt and navigate to the folder:

cd C:\Users\YourUsername\openmemory-mcp

Install the package and dependencies:

pip install -e .

This will install:

  • mcp - Model Context Protocol SDK

  • httpx - HTTP client for API calls

  • python-dotenv - Environment variable management

Step 3: Configure Claude Desktop

  1. Locate your Claude Desktop configuration file:

    • Path: %APPDATA%\Claude\claude_desktop_config.json

    • Full path example: C:\Users\YourUsername\AppData\Roaming\Claude\claude_desktop_config.json

  2. Open the file in a text editor (create it if it doesn't exist)

  3. Add the OpenMemory MCP server configuration:

{
  "mcpServers": {
    "openmemory": {
      "command": "python",
      "args": ["-m", "openmemory_mcp"],
      "env": {
        "OPENMEMORY_URL": "http://richard-XPS-15-9560.local:8892"
      }
    }
  }
}

If you already have other MCP servers configured, add the openmemory entry to the existing mcpServers object:

{
  "mcpServers": {
    "existing-server": {
      "command": "...",
      "args": ["..."]
    },
    "openmemory": {
      "command": "python",
      "args": ["-m", "openmemory_mcp"],
      "env": {
        "OPENMEMORY_URL": "http://richard-XPS-15-9560.local:8892"
      }
    }
  }
}
  1. Save the file

Step 4: Restart Claude Desktop

  1. Completely quit Claude Desktop (check system tray)

  2. Restart Claude Desktop

  3. The MCP server should now be available

Testing

Test 1: Network Connectivity

From Windows PowerShell, verify you can reach the OpenMemory API:

curl http://richard-XPS-15-9560.local:8892/health

Expected response:

{"status": "ok", "timestamp": "..."}

Test 2: MCP Server in Claude Desktop

In Claude Desktop, try asking:

"Can you check if OpenMemory is healthy?"

Claude should use the health_check tool and report success.

Test 3: Search Memories

"Search my memories for 'dashboard'"

Test 4: Add Memory

"Add a memory: 'Configured OpenMemory MCP server on Windows' to the semantic sector"

Troubleshooting

"Cannot connect to OpenMemory API"

  1. Check network connectivity from Windows:

    ping richard-XPS-15-9560.local
    curl http://richard-XPS-15-9560.local:8892/health
  2. Verify OpenMemory container is running on Ubuntu:

    docker ps | grep openmemory
    docker logs openmemory
  3. Check firewall settings on both Windows and Ubuntu

"Python not found" or "Module not found"

  1. Verify Python is installed:

    python --version
  2. Reinstall dependencies:

    cd C:\Users\YourUsername\openmemory-mcp
    pip install -e . --force-reinstall

MCP Server Not Showing in Claude Desktop

  1. Check the config file path is correct:

    • %APPDATA%\Claude\claude_desktop_config.json

  2. Verify JSON syntax is valid (no trailing commas, proper quotes)

  3. Check Claude Desktop logs (if available)

  4. Completely quit and restart Claude Desktop

Memory Sectors

OpenMemory uses hierarchical memory sectors:

  • episodic - Event-based memories (what happened)

  • semantic - Conceptual knowledge (facts, concepts)

  • procedural - How-to information (processes, workflows)

  • emotional - User preferences, sentiment

  • reflective - Meta-learnings, insights

When adding memories, choose the most appropriate sector.

Development

Running Server Manually (for testing)

cd C:\Users\YourUsername\openmemory-mcp
python -m openmemory_mcp

The server will run in stdio mode and wait for MCP protocol messages.

Project Structure

openmemory-mcp/
├── pyproject.toml              # Package configuration
├── README.md                   # This file
├── .env.example                # Environment template
└── src/
    └── openmemory_mcp/
        ├── __init__.py         # Package entry point
        ├── __main__.py         # CLI entry point
        ├── client.py           # OpenMemory API client
        └── server.py           # MCP server implementation

Advanced Configuration

Using API Key Authentication

If your OpenMemory API requires authentication:

  1. Set the API key in Claude Desktop config:

{
  "mcpServers": {
    "openmemory": {
      "command": "python",
      "args": ["-m", "openmemory_mcp"],
      "env": {
        "OPENMEMORY_URL": "http://richard-XPS-15-9560.local:8892",
        "OPENMEMORY_API_KEY": "your-api-key-here"
      }
    }
  }
}

Using Custom OpenMemory URL

If your OpenMemory runs on a different host/port, update the URL:

"env": {
  "OPENMEMORY_URL": "http://different-host:8892"
}

Support

For issues:

  1. Check the troubleshooting section above

  2. Verify OpenMemory API is working directly (curl/browser)

  3. Check Claude Desktop and MCP server logs

  4. Ensure Python dependencies are correctly installed

License

MIT

Available Tools

8 tools
add_memoryA

Store a new memory. content: one self-contained fact, with absolute dates. sector: optional override of the automatic classification (episodic, semantic, procedural, emotional, reflective). tags/metadata optional; a metadata 'type' such as system_info, preference, decision, troubleshooting helps later filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
sectorNo
contentYes
metadataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose a meaningful trait beyond the schema: that sector defaults to an automatic classification the caller can override, and that metadata 'type' improves later filtering. However, it says nothing about deduplication/uniqueness, permissions, or side effects, which matter for a write tool with no annotation coverage.

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

Conciseness4/5

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

Front-loaded with the core action, then a compact run-through of each parameter. No filler sentences, and the per-parameter notes are dense with useful guidance rather than padding.

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?

An output schema exists, so return values need not be described. With 0% schema description coverage across four params, the description compensates for all of them meaningfully. The main remaining gap is the absence of any durability/duplication or permission behavior for a write operation lacking annotations.

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?

Schema description coverage is 0%, so the description must carry parameter meaning, and it does: content is scoped to "one self-contained fact, with absolute dates," sector enumerates the five classification values as an override, and metadata 'type' is given concrete examples (system_info, preference, decision, troubleshooting). Only 'tags' is left with bare "optional" and no semantic guidance.

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?

Clear specific verb+resource: "Store a new memory." The action is unambiguous and easily distinguished from siblings like get_memory, delete_memory, search_memories, and reinforce_memory. It does not explicitly name or contrast with any sibling, so it stops short of the top band.

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?

Usage is implied by the purpose (use this to persist a new fact), but there is no explicit when-to-use/when-not guidance and no routing to alternatives. Notably it does not address when to add a fresh memory versus reinforcing an existing one (reinforce_memory), leaving a real ambiguity for the agent.

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

delete_memoryA

Permanently delete a memory and its vectors/links. Prefer adding a corrected memory over deleting.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that deletion is permanent and cascades to vectors and links, which is real value beyond the name. However, it omits permission requirements, behavior when the memory_id does not exist, and idempotency, which matter for an irreversible mutation.

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?

Two short sentences, front-loaded with the destructive action and followed immediately by the safer alternative. Every clause earns its place with no padding.

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?

An output schema exists, so return values need no explanation, and a single-parameter delete is well served by the stated permanence and cascade behavior plus the alternative-route guidance. Only edge-case behavior (missing id, permissions) is left uncovered.

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?

There is one required parameter whose schema description coverage is 0%, so the description should compensate but does not explain what memory_id accepts or how to obtain it. The meaning is largely inferable from the tool name, so this is adequate rather than deficient.

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?

States a specific verb+resource ('delete a memory') and adds the destructive scope ('its vectors/links'), which tells the agent this is a cascading hard delete rather than a soft flag. It also implicitly contrasts with add_memory by recommending correction over deletion. It does not name siblings by name, so it stops short of full differentiation.

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?

Explicitly advises 'Prefer adding a corrected memory over deleting,' which routes the agent to the add_memory alternative and gives a when-not-to-use condition. There is no guidance on confirmation, prerequisites, or when deletion is genuinely the right call, so it is clear but not complete.

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

get_memoryB

Fetch one memory by id, with full metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that retrieval returns 'full metadata', which is useful behavioral context, but says nothing about error behavior, whether missing ids raise or return empty, permissions, or rate limits. For a read tool this is partially adequate but thin.

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?

A single tight sentence with no waste, and the identifying action and scope are front-loaded.

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

Completeness3/5

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

An output schema exists, so return-value explanation is not required. However, with no annotations and an undocumented parameter, the definition leaves the agent without when-to-use routing or id-format guidance; it is minimal but not incorrect.

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 0% and the single parameter 'memory_id' is undocumented in the schema. The description names the lookup key ('by id') implying it must be an exact/memory id, but adds no format or source detail, so it only minimally compensates for the coverage gap. With 1 parameter the baseline is a 3.

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?

States a specific verb (Fetch) and resource (memory) with scope qualifier 'by id' and 'full metadata'. This distinguishes it from search_memories and semantic_search, which retrieve memories by query rather than by exact id, though it doesn't name those siblings explicitly.

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

Usage Guidelines2/5

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

No guidance on when to use this vs the sibling retrieval tools. An agent cannot tell from the description whether this is the right choice when it has an id versus needing to search; nothing addresses prerequisites or alternatives.

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

health_checkA

Backend health, embedding provider in use, and per-sector counts/average salience.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses what the report surfaces (backend status, embedding provider, sector counts/salience), but never states that it is a side-effect-free read, whether it requires auth, or whether it is expensive/rate-limited. A health check is conventionally safe to call, so this is a moderate rather than severe gap.

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?

A single front-loaded sentence that enumerates exactly the three things returned, with no filler or redundancy. Every clause earns its place.

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?

With no parameters and an output schema present, the description need not explain return values, and it correctly orients the agent to a read-only diagnostic. The only shortfall is the absence of any usage context, which is minor for a zero-argument health probe.

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 tool takes zero parameters, which is the baseline-4 case. Nothing about arguments needs explaining, and 100% schema coverage leaves no ambiguity.

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 names a specific resource (backend health) and enumerates the report's contents: embedding provider and per-sector counts/average salience. That clearly separates it from the CRUD/search siblings, though it reads as a noun-phrase output list rather than an explicit verb+resource statement.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of when a diagnostic check is appropriate (e.g. troubleshooting, startup validation), and no reference to alternatives. Usage is only implied by the tool name.

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

list_memoriesB

List memories newest first, with pagination. sector optionally filters by primary sector.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
sectorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose useful behavior: results are ordered newest-first and pagination is supported. It omits auth/permission requirements, default page size behavior beyond the schema default, and what happens at the end of the result set.

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

Conciseness4/5

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

Two short sentences, front-loading the ordering behavior an agent needs most. Nothing is wasted, though 'with pagination' is slightly redundant given the limit/offset parameters.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. Still, for a three-parameter tool at 0% schema coverage with several similar retrieval siblings, the description leaves limit/offset semantics and sibling routing unaddressed.

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 0%, leaving limit, offset, and sector undocumented in the schema. The description compensates partially by explaining that sector filters on the primary sector and that limit/offset drive pagination, but gives no defaults, ranges, or format guidance.

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?

States a specific verb+resource ('List memories') plus ordering ('newest first') and pagination support. It does not explicitly contrast itself with the sibling search_memories or semantic_search, so the distinction must be inferred from the verb.

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?

Usage is implied: this is the unfiltered enumeration path versus the sibling search tools, and 'sector optionally filters' hints at narrowing. However nothing states when to choose this over search_memories or semantic_search, and no exclusions are given.

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

reinforce_memoryB

Raise a memory's salience (importance) by boost (0..1, default 0.1) and mark it as seen now.

ParametersJSON Schema
NameRequiredDescriptionDefault
boostNo
memory_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses two behaviors: raising salience by a boost amount and marking as seen now. However, it doesn't clarify the scale of salience (is it 0-1? unbounded?), whether operations are idempotent, what happens if memory doesn't exist, or permission requirements. There's an output schema, so return values are covered elsewhere, but mutation semantics remain thin.

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?

Single, dense sentence that front-loads the action and includes the key parameter constraint inline. No wasted words; every part carries meaning.

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?

Given the simplicity (2 params, output schema exists), the description covers the core operation and the non-obvious boost constraint. It lacks usage context and the memory_id meaning, but for a simple reinforcement tool, it's largely complete. The main gap is not addressing what happens if the memory doesn't exist.

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 0%, so the description must compensate. It defines 'boost' as (0..1, default 0.1), which adds crucial constraint information not in the schema (schema just says number). However, 'memory_id' is completely undocumented in both places. Partial compensation for the coverage gap, but the required parameter is left unexplained.

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?

States a specific verb (raise) and resource (memory's salience/importance), with detail on the effect and timestamp marking. Clearly distinguishable from siblings like add_memory or searched_memories by its reinforcement semantics, though it doesn't name any alternatives explicitly.

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

Usage Guidelines2/5

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

No indication of when to use this versus alternatives. An agent must infer that this is for reinforcing existing memories, but there's no guidance on context, prerequisites (e.g., memory must exist), or when not to use it. No alternative tools mentioned.

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

search_memoriesA

Keyword (BM25) search over all memories: best for exact terms such as hostnames, ports, file paths, names. Works regardless of embedding provider; no side effects.

query: words to look for. sector: optional filter (episodic, semantic, procedural, emotional, reflective). require_all: if true, every query word must appear.

ParametersJSON Schema
NameRequiredDescriptionDefault
kNo
queryYes
sectorNo
require_allNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does address the key trait by declaring 'no side effects' (a read-only guarantee) plus provider independence. It omits any note on result ordering, scoring, or how k interacts with the result set, which keeps it short of a 5.

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?

Purpose and the key differentiator are front-loaded in the first sentence, followed by a tight per-parameter walkthrough. No filler sentences; every line adds information the agent needs.

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?

Return shape is covered by the existing output schema, so the description only needs selection and invocation guidance, which it largely provides. The only gap is the meaning of k and whether results are ranked or truncated.

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?

Schema description coverage is 0%, so the description must compensate, and it documents three of four parameters — query, sector (including the valid enum values not present in the schema), and require_all. Only k is left undocumented, a minor gap for an obvious result-count parameter.

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?

States a specific verb+resource ('Keyword (BM25) search over all memories') and immediately scopes it against the embedding-based sibling by noting it works regardless of embedding provider. An agent can distinguish it from semantic_search without opening either schema.

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?

Gives clear when-to-use guidance ('best for exact terms such as hostnames, ports, file paths, names'), which is a precise trigger condition. It does not explicitly name semantic_search as the contrasting alternative, but the BM25 framing makes the routing obvious.

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.

  1. 8 tool updatesv0.2.0
    • First observedadd_memory
    • First observeddelete_memory
    • First observedget_memory
    • First observedhealth_check
    • First observedlist_memories
    • First observedreinforce_memory
    • First observedsearch_memories
    • First observedsemantic_search

TDQS

A3.8/5.0

Scored across 8 tools

Disambiguation4/5

search_memories and semantic_search are clearly differentiated by keyword vs. meaning-based, though reinforce_memory overlaps with semantic_search's side effect of marking memories as seen and raising salience. The other tools (add, list, get, delete, health_check) are distinct.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern (search_memories, add_memory, list_memories, get_memory, delete_memory, reinforce_memory, health_check). health_check is a minor deviation but still clearly named.

Tool Count5/5

Eight tools form a well-scoped set for a memory management server, covering search, CRUD, and health checks without bloat.

Completeness4/5

Core lifecycle (create, read, list, delete, search) and utility (health_check, reinforce) are covered. Missing an explicit update_memory tool, though the description suggests adding a corrected memory as a workaround.

Maintenance

ActivityMaintained
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

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides a tiered, persistent memory architecture for Claude to automatically capture and retrieve user preferences, facts, and conversation history across sessions. It supports semantic search and seamless integration with the Claude desktop application using the Model Context Protocol.
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Provides persistent memory, identity, and context for Claude sessions through a memory graph, enabling recall, storage, and relationship management of entities and decisions.
    8
    -