MCP Memory SQLite
# mcp-memory-sqlite
A personal knowledge graph and memory system for AI assistants using
SQLite with optimized text search. Perfect for giving Claude (or any
MCP-compatible AI) persistent memory across conversations!
## Why Use This?
Give your AI assistant a memory! This tool lets Claude (or other AI
assistants) remember entities, concepts, and their relationships
across conversations. Perfect for:
- 📚 **Personal Knowledge Management** - Build your own knowledge
graph
- 🤖 **AI Assistant Memory** - Help Claude remember important
information about your projects, preferences, and context
- 🔗 **Relationship Tracking** - Connect ideas, people, projects, and
concepts
- 🔍 **Smart Text Search** - Find information using flexible,
relevance-ranked text search
## Features
- **100% Local & Private**: All your data stays on your machine
- **Easy Setup**: Works out-of-the-box with Claude Desktop
- **Flexible Text Search**: Case-insensitive search with fuzzy
matching that handles different naming conventions
- **Relevance Ranking**: Results prioritized by name match > type
match > observation match
- **Smart Deduplication**: Automatically prevents duplicate
relationships
- **Context-Optimized**: Designed specifically for LLM context
efficiency - no unnecessary data bloat
- **Simple API**: Intuitive tools for creating, searching, and
managing your knowledge graph
## Quick Start
**For Claude Desktop users** (recommended):
Add this to your Claude Desktop config:
```json
{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["-y", "mcp-memory-sqlite"]
}
}
}
```
That's it! Claude can now remember things across conversations.
## Installation
If you want to use it in your own project:
```bash
npm install mcp-memory-sqlite
# or
pnpm add mcp-memory-sqlite
```
## Configuration
**Optional**: Customize the database location with an environment
variable:
- `SQLITE_DB_PATH`: Where to store your data (default:
`./sqlite-memory.db`)
## MCP Tools
### create_entities
Create or update entities with observations.
**Parameters:**
- `entities`: Array of entity objects
- `name` (string): Unique entity identifier
- `entityType` (string): Type/category of the entity
- `observations` (string[]): Array of observation strings
**Example:**
```json
{
"entities": [
{
"name": "Claude",
"entityType": "AI Assistant",
"observations": [
"Created by Anthropic",
"Focuses on being helpful, harmless, and honest"
]
}
]
}
```
### search_nodes
Search for entities and their relations using text search with
relevance ranking.
**Parameters:**
- `query` (string): Text to search for
- `limit` (number, optional): Maximum results to return (default: 10,
max: 50)
**Example:**
```json
{
"query": "AI Assistant",
"limit": 5
}
```
**Text Search Features:**
- **Case-insensitive**: Searches ignore case differences
- **Flexible matching**: Automatically handles variations in spacing,
underscores, and hyphens
- "JavaScript framework" will match "javascript_framework"
- "web-development" will match "web_development" or "web
development"
- **Searches across**: Entity names, entity types, and all
observations
- **Relevance ranking**: Results prioritized by where match occurs
(name > type > observation)
### read_graph
Get recent entities and their relations (returns last 10 entities by
default).
**Parameters:** None
### create_relations
Create relationships between entities. Duplicate relations (same
source, target, and type) are automatically ignored.
**Parameters:**
- `relations`: Array of relation objects
- `source` (string): Source entity name
- `target` (string): Target entity name
- `type` (string): Relationship type
**Example:**
```json
{
"relations": [
{
"source": "Claude",
"target": "Anthropic",
"type": "created_by"
}
]
}
```
**Note:** If you attempt to create the same relation multiple times,
only the first one will be stored. This prevents duplicate
relationships in your knowledge graph.
### delete_entity
Delete an entity and all associated data (observations and relations).
**Parameters:**
- `name` (string): Entity name to delete
### delete_relation
Delete a specific relation between entities.
**Parameters:**
- `source` (string): Source entity name
- `target` (string): Target entity name
- `type` (string): Relationship type
### get_entity_with_relations
Get an entity along with all its relations and directly connected
entities. Perfect for exploring the knowledge graph around a specific
concept.
**Parameters:**
- `name` (string): Entity name to retrieve
**Returns:**
- `entity`: The requested entity
- `relations`: All relations where this entity is source or target
- `relatedEntities`: All entities connected to this one
**Example:**
```json
{
"name": "Claude"
}
```
## Usage with Claude Desktop
Add to your Claude Desktop configuration:
**Minimal configuration (uses default `./sqlite-memory.db`):**
```json
{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["-y", "mcp-memory-sqlite"]
}
}
}
```
**With custom database path:**
```json
{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["-y", "mcp-memory-sqlite"],
"env": {
"SQLITE_DB_PATH": "/path/to/your/memory.db"
}
}
}
}
```
## Database Schema
The tool uses pure SQLite for fast, reliable storage:
### Tables
- **entities**: Stores entity metadata (name, type, creation time)
- **observations**: Stores observations linked to entities
- **relations**: Stores relationships between entities (with unique
constraint to prevent duplicates)
All queries use optimized SQLite indexes for fast text search and
relationship traversal.
## Development
```bash
# Install dependencies
pnpm install
# Build
pnpm run build
# Run in development mode
pnpm run dev
# Run tests
pnpm test
```
## How It Works
Under the hood, this uses:
- **SQLite** for fast, reliable local storage
- **better-sqlite3** for Node.js integration
- **Optimized text search** with relevance ranking and fuzzy matching
Your data is stored in a single `.db` file on your computer - no
cloud, no external services, completely private.
## License
MIT
## Credits
Built with:
- [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) - Fast
SQLite driver
- [tmcp](https://github.com/tmcp-io/tmcp) - MCP server framework
TDQS
Scored across 7 tools
Each tool has a clearly distinct purpose: create_entities and create_relations handle creation of different graph components, delete_entity and delete_relation handle deletion of different components, get_entity_with_relations focuses on a specific entity's context, read_graph provides a general overview, and search_nodes enables text-based discovery. There is no overlap in functionality that would cause confusion.
All tools follow a consistent verb_noun pattern with snake_case: create_entities, create_relations, delete_entity, delete_relation, get_entity_with_relations, read_graph, and search_nodes. The naming is predictable and readable throughout the set.
With 7 tools, this is well-scoped for a knowledge graph management server. Each tool earns its place by covering essential operations like creation, deletion, retrieval, and search, without being overly sparse or bloated.
The tool set provides complete CRUD/lifecycle coverage for entities and relations in a knowledge graph domain: create, read (via get_entity_with_relations, read_graph, search_nodes), update (implied via create_entities for updates), and delete. There are no obvious gaps that would hinder agent workflows.