SQLite-backed persistent memory MCP server with FTS5 search and project scoping.
- Project-scoped data - all tools take a
projectparameter to isolate data per project - FTS5 full-text search - BM25-ranked search across entity names, types, and observations
- Graph traversal - explore entity relationships with filtering by type
- Safe observation updates - append or delete individual observations without overwriting
- Entity status tracking - track entity lifecycle with status fields
- Migration framework - automatic schema upgrades
- HTTP transport - single server instance shared across all clients via streamable-http
uv tool install mcp-memory| Environment variable | Description | Default |
|---|---|---|
MCP_MEMORY_DB_PATH |
Database file path | ~/.local/share/mcp-memory/memory.db |
MCP_MEMORY_PORT |
HTTP server port | 8000 |
{
"mcpServers": {
"memory": {
"url": "http://localhost:8000/mcp"
}
}
}All tools require a project parameter to scope data.
Create or update entities with observations. Overwrites all existing observations for an entity - use add_observations to append instead. Non-exempt entity types (not user-preferences or pattern) must include at least one relation.
Append observations to an existing entity without overwriting. Skips duplicates. Throws if the entity does not exist.
Delete specific observations from an existing entity by exact content match. Returns the count deleted. Throws if the entity does not exist.
FTS5 full-text search with BM25 relevance ranking. Optional entity_type and status filters.
Returns the 10 most recent entities and their relations.
Create relationships between entities. Duplicates are ignored.
Get an entity with all its relations and connected entities via graph traversal.
Get an entity with directly related entities, optionally filtered by entityType and/or relationType.
Set or clear the status of an entity. Valid statuses: planned, in-progress, blocked, resolved, archived.
Delete an entity and all associated observations and relations.
Delete a specific relation between two entities.
# Run all checks (lint, type-check, test)
just
# Individual commands
just lint # ruff check + format
just type-check # mypy
just test # pytest