🔌

Friday MCP

Memory•⭐ 80

Self-hosted MCP server providing persistent semantic memory for AI coding agents across sessions.

Claude CodeCursorZedWindsurf

Overview

Self-hosted MCP server providing persistent semantic memory for AI coding agents across sessions.

Setup

Run with npx:

npm install -g @friday-mcp/server

Configuration

FRIDAY_DATA_DIR, FRIDAY_SCOPING (project|global) environment variables

Documentation

Friday MCP

Overview

Friday MCP is a self-hosted MCP server for persistent memory of AI coding agents. Launched on September 16, 2026 (9 HN points), it fills a specific gap in the MCP ecosystem: giving coding agents long-term memory that persists across sessions, projects, and tool invocations.

Friday stores agent context — prior decisions, codebase patterns, user preferences, and resolved issues — in a local SQLite + vector-index backend, exposing everything through MCP tools that any MCP client (Claude Code, Cursor, Zed, Windsurf) can use.

The design philosophy: memory as a first-class MCP primitive. Rather than each agent reinventing memory, Friday provides a shared, queryable store that agents can both write to and read from.

Features

  • Self-hosted: Runs entirely on your machine; no cloud dependency
  • MCP-native: Designed as an MCP server from the ground up
  • Semantic memory: Vector-indexed for semantic search over past context
  • Structured queries: Category- and tag-filtered retrieval
  • Cross-session persistence: Memory survives session restarts
  • Project-scoped or global: Choose per-project or global memory stores
  • Privacy-first: All data stays local; nothing leaves your machine
  • Fast local storage: SQLite backend with in-memory vector index

Installation

# Install via npm
npm install -g @friday-mcp/server

# Or via Docker
docker pull friday-mcp/server
docker run -p 8080:8080 friday-mcp/server

# Initialize local data store
friday-mcp init --path ~/.friday/data

Configuration

{
  "mcpServers": {
    "friday": {
      "command": "friday-mcp",
      "args": ["serve"],
      "env": {
        "FRIDAY_DATA_DIR": "~/.friday/data",
        "FRIDAY_SCOPING": "project"
      }
    }
  }
}

Available Tools

ToolDescription
friday.rememberStore a memory with title, content, categories, tags
friday.recallSemantic search over stored memories
friday.searchKeyword/BM25 search with category/tag filters
friday.forgetDelete a memory by ID
friday.listList all memories, optionally filtered
friday.statsReturn memory counts and metadata

Usage Examples

From Claude Code

/friday.remember "We chose LangGraph for state management because of time-travel debugging"
/friday.recall "why did we pick the state management framework?"

From Cursor

/friday.recall "auth middleware decisions"

From the CLI

friday-mcp remember \
  --title "Use exponential backoff on API retries" \
  --content "Chose exponential backoff with jitter for the OpenAI client. Linear backoff was causing thundering herds." \
  --category lesson \
  --tags retry,openai,infra

friday-mcp recall "retry strategy" --top 5

Programmatic (Python SDK)

from friday_mcp import FridayClient

client = FridayClient()

# Store memory
mem_id = client.remember(
    title="Pinned Python version for CI",
    content="CI runs on Python 3.12. Switched from 3.11 due to typing deprecations.",
    categories=["decision", "infra"],
    tags=["ci", "python"]
)

# Recall with semantic search
results = client.recall("python version", top_k=5)
for r in results:
    print(r.title, r.score, r.categories)

# Filtered search
recent = client.search("retry", categories=["lesson"], since="2026-09-01")

Memory Categories

By convention, Friday uses these categories (configurable):

CategoryPurpose
decisionArchitectural or design decisions
lessonThings learned from incidents
contextPersistent facts about the codebase
preferenceUser preferences and coding style

Pros

  • ✅ Self-hosted; full data privacy
  • ✅ Standard MCP interface works with any MCP client
  • ✅ Semantic + keyword retrieval modes
  • ✅ Cross-session persistence
  • ✅ Configurable scoping (project vs. global)
  • ✅ Lightweight SQLite backend

Cons

  • ❌ Early-stage project (small community)
  • ❌ SQLite has scaling limits for very large memory stores
  • ❌ No built-in memory compaction or pruning
  • ❌ No multi-user/permissions model

When to Use

  • Use when: You want persistent agent memory that survives session restarts; you use multiple MCP clients and want shared memory; privacy is critical
  • Avoid when: You need multi-user collaboration on memory, or if you need enterprise-scale vector search

Resources