Overview
Self-hosted MCP server providing persistent semantic memory for AI coding agents across sessions.
Setup
Run with npx:
npm install -g @friday-mcp/serverConfiguration
FRIDAY_DATA_DIR, FRIDAY_SCOPING (project|global) environment variablesDocumentation
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
| Tool | Description |
|---|---|
friday.remember | Store a memory with title, content, categories, tags |
friday.recall | Semantic search over stored memories |
friday.search | Keyword/BM25 search with category/tag filters |
friday.forget | Delete a memory by ID |
friday.list | List all memories, optionally filtered |
friday.stats | Return 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):
| Category | Purpose |
|---|---|
decision | Architectural or design decisions |
lesson | Things learned from incidents |
context | Persistent facts about the codebase |
preference | User 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
