Skip to main content
Glama
jgauffin

Relax Memory MCP

by jgauffin
README.md
# Relax! Memory MCP



---------------------------------

**Archived. Claude can now use multiple files for memories.**

-------------------------------

A persistent memory server for AI agents, built on the [Model Context Protocol](https://modelcontextprotocol.io/).

## Why this server?

Most AI agents lose context between sessions. Built-in memory features (like Claude Code's `MEMORY.md`) are plain files the agent must read and write manually — they have no structure, no categories, and no way to list or search entries without reading the entire file.

Relax! Memory MCP fixes this by giving agents **structured, persistent memory via tools**:

- **Categorised storage** — memories are grouped by category (e.g. `config`, `design`, `architecture`), so an agent can store and retrieve related facts without scanning everything.
- **Minimal token cost** — `list_memories` returns a lightweight hierarchical index. The agent only fetches full values when it needs them, keeping context windows small.
- **Upsert semantics** — storing a memory with the same `category + name` overwrites the previous value. No duplicates, no cleanup needed.
- **Instant persistence** — every write is flushed to a single JSON file on disk. Survives crashes, restarts, and agent re-connections.
- **Zero dependencies at runtime** — just Node.js and the MCP SDK. No database, no cloud service, no API key.
- **Multi-instance friendly** — use `--dir` and `--name` to run separate memory stores for different projects or agents from the same binary.

## Tools exposed

| Tool | Description |
|---|---|
| `add_memory` | Store or update a memory (category, name, description, value) |
| `get_memory` | Retrieve a specific memory by category and name |
| `delete_memory` | Delete a memory by category and name |
| `list_memories` | List all memories as a hierarchical index grouped by category |

## Installation

```bash
npm install
npm run build
```

This compiles TypeScript into `dist/` and makes `dist/index.js` the executable entry point.

## Configuration

Add the server to your MCP client config. Ommit `--dir` for currently running project.

### Claude Code (CLI)

```bash
claude mcp add --scope user memory -- node d:/installdir/dist/index.js --dir d:/my-project
```

### Claude Desktop / Claude Code (manual)

Add to your `claude_desktop_config.json` or `.claude.json`:

```json
{
  "mcpServers": {
    "memory": {
      "command": "node",
      "args": [
        "d:/src/AI/MCP/Memory/dist/index.js",
        "--name", "Project Memory",
        "--dir", "d:/my-project"
      ]
    }
  }
}
```

### CLI flags

| Flag | Default | Description |
|---|---|---|
| `--name` | `Memory MCP for current project` | Server name reported to the MCP client (set if you have a general server that all projects shpuld be able to access) |
| `--description` | `Persistent memory storage` | Server description |
| `--dir` | Current working directory | Directory where `memories.json` is stored |

## Running

Start the server directly (stdio transport):

```bash
node dist/index.js
```

Or with flags:

```bash
node dist/index.js --dir ./my-project --name "My Project Memory"
```

The server communicates over stdin/stdout using the MCP stdio transport. It is designed to be launched by an MCP client, not called directly from a browser or HTTP client.

## Debugging

### Run tests

```bash
npm test
```

Uses [Vitest](https://vitest.dev/). Tests create temporary directories and verify the full lifecycle: add, get, update, delete, persistence, and hierarchical indexing.

### Inspect the stored data

Memories are stored as plain JSON in `memories.json` inside the configured `--dir`:

```bash
cat memories.json
```

```json
[
  {
    "name": "tech-stack",
    "category": "architecture",
    "description": "Chosen technology stack",
    "value": "TypeScript, PostgreSQL, OpenLayers"
  }
]
```

### Debug with MCP Inspector

Use the [MCP Inspector](https://modelcontextprotocol.io/docs/tools/inspector) to interactively call tools:

```bash
npx @modelcontextprotocol/inspector node dist/index.js -- --dir .
```

This opens a web UI where you can invoke `add_memory`, `list_memories`, etc. and see the raw JSON responses.

### Attach a Node debugger

```bash
node --inspect dist/index.js --dir .
```

Then open `chrome://inspect` in Chrome or attach from VS Code using a launch configuration:

```json
{
  "type": "node",
  "request": "launch",
  "name": "Debug Memory MCP",
  "program": "${workspaceFolder}/dist/index.js",
  "args": ["--dir", "."],
  "outFiles": ["${workspaceFolder}/dist/**/*.js"]
}
```

## License

MIT

TDQS

A4.1/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: add/update, retrieve, delete, and list. No overlap or ambiguity exists.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (add_memory, get_memory, delete_memory, list_memories). The pluralization of 'list_memories' is a minor stylistic variance but does not break the pattern.

Tool Count5/5

With only 4 tools, the set is well-scoped and perfectly sized for a simple memory storage service. Each tool serves a necessary CRUD function.

Completeness5/5

The tool surface covers the complete lifecycle of memories: create/update, read, delete, and list. No obvious gaps exist for the stated domain.

Maintenance

ActivityInactive
ResponsivenessNo issues