PluginBench
MCP Server
Active
Apache-2.0

io.github.Lyellr88/marm-mcp-server MCP Server

io.github.Lyellr88/marm-mcp-server

Local-first persistent memory for MCP agents with hybrid semantic recall and write-safe storage.

What is the io.github.Lyellr88/marm-mcp-server MCP server?

The MARM MCP server (marm-mcp-server) is a local-first, persistent memory layer for MCP clients like Claude, Codex, Gemini, Qwen, Cursor, and other IDE agents. It exposes 7 focused MCP tools for logging sessions, notebooks, summaries, and semantic/hybrid recall, backed by SQLite with write-queue safety, rate-limit presets, and write-time consolidation so AI agents retain project context across sessions instead of forgetting it.

MARM (Memory Accurate Response Mode) MCP server gives AI agents a persistent, local memory infrastructure so decisions, notebooks, and conversation context survive across sessions instead of being trapped in a single chat. It keeps the MCP tool surface small (7 tools) while handling heavy lifting server-side: session routing, hybrid FTS+semantic recall, serialized writes, rate-limit presets for multi-agent "swarm" use, write-time deduplication, and agent-assisted compaction. It can run via pip or Docker, over HTTP or STDIO, and includes a separate local web dashboard for browsing and managing the same SQLite memory database.

How to install io.github.Lyellr88/marm-mcp-server

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "marm-mcp-server": {
      "command": "uvx",
      "args": [
        "marm-mcp-server"
      ]
    }
  }
}
Cursor
~/.cursor/mcp.json
{
  "mcpServers": {
    "marm-mcp-server": {
      "command": "uvx",
      "args": [
        "marm-mcp-server"
      ]
    }
  }
}
Windsurf
~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "marm-mcp-server": {
      "command": "uvx",
      "args": [
        "marm-mcp-server"
      ]
    }
  }
}
VS Code
.vscode/mcp.json
{
  "servers": {
    "marm-mcp-server": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "marm-mcp-server"
      ]
    }
  }
}
Claude Code
claude mcp add marm-mcp-server -- uvx marm-mcp-server

Tools & capabilities

Tools this server exposes to the agent.

  • marm_smart_recallHybrid recall with FTS5 filtering, semantic reranking, bounded fallback search, and chunk-aware scoring for long memories; supports search_all, project/platform filters, and detail=1/2/3 depth controls.
  • marm_log_entryAdd structured session log entries with session/topic routing, summary-cache invalidation, and context summary preparation handled by the server.
  • marm_log_showDisplay all log entries and sessions, with filtering support.
  • marm_deleteDelete a log session, log entry, or notebook entry via type="log"|"notebook".
  • marm_summaryGenerate cached session summaries with intelligent truncation for LLM conversations.
  • marm_notebookUnified notebook tool to add, use, show, check status, or clear entries via action parameter.
  • marm_compactionUnified compaction workflow with action="status"|"candidates"|"review"|"stage"|"apply"|"discard" for agent-assisted memory cleanup.

Use cases

  • Persist session logs and project decisions across multiple AI conversations
  • Recall past context with hybrid full-text + semantic search filtered by project/platform
  • Maintain a notebook of code snippets or notes reusable across sessions
  • Run a shared memory server for multiple agents/clients (swarm mode) with rate-limit presets
  • Clean up and consolidate duplicate memories via agent-assisted compaction workflow
  • Browse and edit stored memories through a local web dashboard

io.github.Lyellr88/marm-mcp-server MCP server FAQ

What does the MARM MCP server do?

It provides a persistent, local memory layer for AI agents connected via MCP, storing sessions, logs, notebooks, and semantic memories so agents can recall project context across conversations instead of forgetting it.

Is MARM MCP server free?

Yes, it's open source under the Apache-2.0 license and installable via pip (marm-mcp-server) or as a Docker/OCI image.

How do I install MARM in Claude or Cursor?

Install with `pip install marm-mcp-server`, run it with `python -m marm_mcp_server` (HTTP) or `marm-mcp-stdio` (STDIO), then add it to your client, e.g. `"agent" mcp add --transport http marm-memory http://localhost:8001/mcp`. There's also a guided `marm-init` skill that walks you through setup for Claude, Codex, Gemini, Qwen, Cursor, and VS Code.

Does it require authentication?

Local pip and Docker STDIO setups run keyless. Docker HTTP deployments require a generated MARM_API_KEY since they expose the server over the network, passed via Authorization header.

Can multiple AI agents share the same memory?

Yes, using `--swarm` (200 RPM) or `--swarm-max` (600 RPM) flags for shared HTTP servers with a serialized write queue; `--trusted` disables rate limiting for private deployments.

Is there a UI to browse stored memories?

Yes, a separate local MARM Dashboard (port 8002) provides a web UI to browse, search, edit, and delete memories, sessions, and notebook entries directly against the same SQLite database.

README (reference)

Source of truth, from the repository.

<div align="center"> <picture> <img src="https://raw.githubusercontent.com/Lyellr88/MARM-Systems/MARM-main/assets/marm-logo.svg" width="700" height="400"> </picture> <h1 align="center">MARM: Local-First Persistent Multi-Agent Memory Layer for MCP Clients v2.15.0</h1>

License Python FastAPI Docker Pulls PyPI Downloads PyPI Version MCP Registry

Discord Publish CodeQL MARM-Systems MCP server

Contributions welcome! Browse open issues to contribute, or join the MARM Discord to share workflows, get setup help, and connect with other builders.

</div>

Table of Contents

Why MARM MCP: The Problem & Solution

Your AI forgets everything. MARM MCP doesn't.

MARM MCP is a local memory infrastructure layer for AI agents. It gives Claude, Codex, Gemini, Qwen, IDE agents, and other MCP clients one persistent place to store decisions, retrieve context, reuse notebooks, and keep long-running work from drifting.

The point is not "more tools." MARM exposes 7 focused MCP tools and moves the heavy work behind the server: session routing, protocol delivery, hybrid recall, serialized writes, rate-limit presets, write-time consolidation, and agent-assisted compaction. Because the tool surface stays small, re-ranking filters results before they reach the model, and consolidation catches duplicates at write time, token spend stays low and predictable as workloads grow.

How It Works

LayerWhat it doesWhy it matters
Memory modelSessions, structured logs, notebooks, summaries, and semantic memoriesKeeps project history searchable instead of trapped in one chat
Scale layerSQLite WAL mode, connection pooling, serialized write queue, and HTTP rate-limit presetsLets one server support solo use, multi-agent work, and swarm-style bursts
Intelligence layerFTS filter, semantic re-rank, bounded semantic fallback, auto-classification, write-time consolidation, and compaction candidatesKeeps recall useful as memory grows instead of letting duplicates pile up
Token layerLightweight 7-tool surface, semantic re-rank before retrieval, and write-time deduplicationReduces tokens sent to the model on every recall and cost stays predictable as memory scales
Deployment layerPip, Docker, STDIO, HTTP, --swarm, --swarm-max, and --trustedLets you run private local memory or shared multi-agent memory with the same MCP surface

See Performance & Scaling Benchmarks for retrieval latency, concurrency, and write-cost numbers.

MARM Demo

https://github.com/user-attachments/assets/dabfe44f-689d-404f-a2c7-dcf8fa4ef0c1

MARM gives AI agents persistent local memory, shared context, write-queue safety, swarm presets, and hybrid recall so commands, config keys, and project meaning all stay reachable.

Start Now

Recommended: guided setup with marm-init

The easiest way to install MARM is to let your agent do the setup with you. marm-init turns the usual MCP setup mess into one guided conversation: Python or Docker, HTTP or STDIO, local or remote server, API keys, config paths, dashboard startup, and multi-agent linking for Claude, Codex, Gemini, Qwen, Cursor, VS Code, and other MCP clients. No hunting through install docs, no guessing which config file your client uses, and no rewriting the same connection by hand for every agent.

npx degit Lyellr88/MARM-Systems/skills

Then tell your agent: "Use the marm-init skill to set up MARM."

Manual pip install

pip install marm-mcp-server
If you are...Start the serverConnect your MCP client
Solo developer / researcherpython -m marm_mcp_server"agent" mcp add --transport http marm-memory http://localhost:8001/mcp
Private local STDIO usermarm-mcp-stdio"agent" mcp add --transport stdio marm-memory-stdio marm-mcp-stdio
Multiple agents sharing memorypython -m marm_mcp_server --swarm"agent" mcp add --transport http marm-memory http://localhost:8001/mcp
Private high-throughput swarmpython -m marm_mcp_server --swarm-max"agent" mcp add --transport http marm-memory http://localhost:8001/mcp
Trusted private lab/serverpython -m marm_mcp_server --trusted"agent" mcp add --transport http marm-memory http://localhost:8001/mcp

🚀 Quick Start for MCP (HTTP & STDIO)

Use this quick rule of thumb to choose your setup

  • Local HTTP/STDIO = fastest single-machine setup.
  • Docker HTTP = shared/always-on server (key required).
  • Docker STDIO = private containerized local use (no HTTP key).

Swarm / multi-agent note: The write queue is enabled by default to serialize memory writes through one worker. For shared HTTP deployments, use --swarm (200 RPM) or --swarm-max (600 RPM) when starting the server. --trusted disables rate limiting entirely for private deployments. STDIO is still best for private single-agent/local use. See MCP-HANDBOOK.md for more info.

<details> <summary><strong>Local pip HTTP (zero config)</strong></summary>

Local pip HTTP (zero config)

"agent" refers to claude, gemini, grok, qwen, or any MCP client. Codex uses --url instead of --transport to add MCP tools.

pip install marm-mcp-server
python -m marm_mcp_server
# Stuck on client setup? Open a Q&A thread: https://github.com/Lyellr88/MARM-Systems/discussions
# most agents use this --transport command
"agent" mcp add --transport http marm-memory http://localhost:8001/mcp
codex mcp add marm-memory --url http://localhost:8001/mcp

</details>

<details>
<summary><strong>Local pip STDIO</strong></summary>

#### Local pip STDIO

```bash
pip install marm-mcp-server
python -m marm_mcp_server.server_stdio
# most agents use this --transport command
"agent" mcp add --transport stdio marm-memory-stdio marm-mcp-stdio
codex mcp add marm-memory-stdio -- marm-mcp-stdio
</details> <details> <summary><strong>Local Python swarm modes (HTTP & STDIO)</strong></summary>

Local Python swarm modes (HTTP & STDIO)

Use HTTP when multiple agents need to share one live MARM server. STDIO is still best for private single-agent use because each client owns its own local process.

# HTTP shared server, normal multi-agent use
python -m marm_mcp_server --swarm

# HTTP shared server, heavier private swarm
python -m marm_mcp_server --swarm-max

# HTTP trusted private lab/server, rate limiting disabled
python -m marm_mcp_server --trusted

# STDIO remains keyless/private and does not use swarm flags
marm-mcp-stdio
</details>
<details> <summary><strong>Docker HTTP (key required)</strong></summary>

Docker HTTP (key required)

Docker HTTP requires an API key because it exposes MARM as a network server; STDIO stays local to the client process and does not need one.

# Step 1: generate key (do not add < > around the key)
docker run --rm lyellr88/marm-mcp-server:latest --generate-key

# Step 2: run server
docker pull lyellr88/marm-mcp-server:latest
docker run -d --name marm-mcp-server \
  -p 127.0.0.1:8001:8001 \
  -e SERVER_HOST=0.0.0.0 \
  -e MARM_API_KEY=your-generated-key \
  -v ~/.marm:/home/marm/.marm \
  lyellr88/marm-mcp-server:latest

# Step 3: connect client
"agent" mcp add --transport http marm-memory http://localhost:8001/mcp --header "Authorization: Bearer your-generated-key"
codex mcp add marm-memory --url http://localhost:8001/mcp --bearer-token-env-var MARM_API_KEY
</details> <details> <summary><strong>Docker HTTP swarm mode</strong></summary>

Docker HTTP swarm mode

# --swarm: write queue on, 200 RPM - recommended for multi-agent shared servers
docker run -d --name marm-mcp-server \
  -p 127.0.0.1:8001:8001 \
  -e SERVER_HOST=0.0.0.0 \
  -e MARM_API_KEY=your-generated-key \
  -v ~/.marm:/home/marm/.marm \
  lyellr88/marm-mcp-server:latest --swarm
</details> <details> <summary><strong>Docker STDIO (no HTTP key)</strong></summary>

Docker STDIO (no HTTP key)

docker run --rm -i \
  -v ~/.marm:/home/marm/.marm \
  --entrypoint python \
  lyellr88/marm-mcp-server:latest \
  -m marm_mcp_server.server_stdio
</details>
<details> <summary><strong>Support notes</strong></summary>

Most useful support info:

  • Docker HTTP requires a key; Docker STDIO does not.
  • If you get 401, verify key match and client restart after env var changes.
  • For full key setup, rotation, and troubleshooting: INSTALL-DOCKER.md
</details> <details> <summary><strong>Connect your client fast</strong></summary>

Connect Your Client Fast

Claude Code remains the recommended first setup path, but MARM also works with other MCP clients and IDE agents.

CLI clients - Claude Code · Codex · Gemini CLI · Qwen CLI · Linux variants · Docker/key

IDE agents - VS Code / Copilot Agent · Cursor · Docker/key IDE setup

Remote/API platforms - xAI / Grok Remote MCP · Platform integration

Using a client that isn't listed? Open an issue and let us know; client adapters are a first-class feature request.

</details>

MARM Dashboard

<div align="center"> <picture> <img src="https://raw.githubusercontent.com/Lyellr88/MARM-Systems/MARM-main/assets/marm-dashboard.png" width="700" height="400" </picture> </div>

A local web UI for browsing and managing your MARM memory; separate from the MCP server, reads and writes the same ~/.marm/marm_memory.db.

What it gives youHow it works
Browse/search/edit all memoriesDirect SQLite, no MCP required
Manage sessions and protocol logsRuns on port :8002 alongside MCP on :8001
Notebook CRUD with inline editorSame auth model (MARM_API_KEY) as the MCP server
Delete-all with count confirmationDocker image included; WAL mode handles concurrent access
View the write queue in real timePulls live data from the write queue
# Quick start (pip)
cd marm-dashboard
pip install -e .
python -m marm_dashboard --open
# Docker (same key and volume as MCP)
docker build -t marm-dashboard:local ./marm-dashboard
docker run --rm -p 127.0.0.1:8002:8002 \
  -e MARM_API_KEY=your-key \
  -v ~/.marm:/home/marm/.marm \
  marm-dashboard:local

See marm-dashboard/README.md for the full guide.

Complete MCP Tool Suite (7 Tools)

<div align="center"> <picture> <img src="https://raw.githubusercontent.com/Lyellr88/MARM-Systems/MARM-main/assets/mcp-tools.png" width="700" height="400" </picture> </div>

💡 Pro Tip: You don't need to manually call these tools! Just tell your AI agent what you want in natural language:

  • "Claude, log this session as 'Project Alpha' and add this conversation as 'database design discussion'"
  • "Remember this code snippet in your notebook for later"
  • "Search for what we discussed about authentication yesterday"

The AI agent will automatically use the appropriate tools. Manual tool access is available for power users who want direct control.

CategoryToolDescription
Memory Intelligencemarm_smart_recallHybrid recall with FTS5 filtering, semantic reranking, bounded fallback search, and chunk-aware scoring for long memories. Supports search_all=True, project/platform filters, and detail=1/2/3 depth controls
Logging Systemmarm_log_entryAdd structured session log entries. Session/topic routing, summary-cache invalidation, and context summary preparation are handled by the server
marm_log_showDisplay all entries and sessions (filterable)
marm_deleteDelete a log session, log entry, or notebook entry (type="log"|"notebook")
Reasoning & Workflowmarm_summaryGenerate cached session summaries with intelligent truncation for LLM conversations
Notebook Managementmarm_notebookUnified notebook tool: add, use, show, status, or clear entries with action="add"|"use"|"show"|"status"|"clear"
Memory Maintenancemarm_compactionUnified compaction workflow with action="status"|"candidates"|"review"|"stage"|"apply"|"discard" for agent-assisted memory cleanup

A Deeper Look

MARM keeps MCP discovery lean with 7 tools by grouping domain operations behind explicit parameters like marm_notebook(action=...), marm_delete(type=...), and marm_compaction(action=...). Behind those tools, the server handles lifecycle setup, protocol refresh, docs indexing, date context, summary-cache maintenance, write queue handling, project/platform attribution, and health checks.

Under the hood, MARM uses SQLite WAL mode, connection pooling, serialized writes, HTTP swarm presets, safe local defaults, FTS→semantic reranking, bounded fallback search, chunk-aware long-memory recall, and summary/context/full recall depths to keep memory fast, stable, and token-efficient as projects grow.

For a deeper look into the MCP behavior, tool parameters, automation, and workflows, see MCP-HANDBOOK.md and FAQ.md.

Performance & Scaling Benchmarks

<div align="center"> <picture> <img src="https://raw.githubusercontent.com/Lyellr88/MARM-Systems/MARM-main/assets/marm-bench.png" width="700" height="400" </picture> </div>

MARM is tuned for fast recall first, even as memory grows and multiple agents hit the same server.

1. Retrieval Latency Scaling

Session Size ($N$)Min LatencyMedian Latencyp95 Latency
N = 10012.0 ms17.4 ms20.8 ms
N = 50012.4 ms20.5 ms22.6 ms
N = 1,00015.9 ms23.3 ms25.1 ms
N = 4,00023.1 ms30.4 ms31.3 ms

2. Multi-Agent Concurrency

  • Parallel recall wins: 10 concurrent recalls completed in 316.3ms vs 647.0ms serial, a 51% time reduction.

3. Write-Time Ingestion Cost

  • Write-time tradeoff: consolidation raises median ingest from 20.3ms to 85.2ms (4.2x) so dedupe/clustering cost stays off the hot recall path.

Benchmarks used a real SQLite database and the live all-MiniLM-L6-v2 encoder on local hardware. Reproduce them: marm-mcp-server/scripts/bench_hotpath.py

⭐ Star the Project

If MARM helps with your AI memory needs, please star the repository to support development!

<div align="center"> <a href="https://star-history.com/#Lyellr88/MARM-Systems&Date"> <img src="https://api.star-history.com/svg?repos=Lyellr88/MARM-Systems&type=Date" width="700" height="400" alt="MARM Systems star history chart"> </a> </div>

Contributing

MARM welcomes contributors at every level. Code helps, but so do docs, setup notes, client testing, bug reports, benchmarks, and real workflow feedback from people using AI tools every day.

Good places to help:

  • Test MARM with more MCP clients, IDE agents, and operating systems
  • Improve docs, screenshots, examples, and platform-specific setup notes
  • Report bugs or confusing install steps with clear reproduction details
  • Share memory workflows, agent habits, and tool ideas from real use
  • Check out open issues

💡 Want to get your name on this list? Check out our CONTRIBUTING.md guide to get started!

Join the MARM Community

Help build the future of AI memory - no coding required!

Connect: MARM Discord | GitHub Discussions

License & Usage Notice

MARM is released under the Apache 2.0 License, and forks, experiments, and integrations are welcome. If you build on it, please make unofficial versions easy to distinguish from releases published by the official MARM repository so users know what they are installing.

Project Documentation

Usage Guides

  • MCP-HANDBOOK.md - Complete MCP server usage guide with commands, workflows, and examples
  • PROTOCOL.md - MCP operating protocol
  • FAQ.md - Answers to common questions about using MARM

MCP Server Installation

Project Information

Related MCP servers

Claude Code creature collection game. Hatch buddies, pet to boost roll luck, complete the BuddyDex.

0
TypeScript
MIT
View repository →