Memory
Integrates with
Ollama
Memory MCP Server
A long-term memory storage system for LLMs using the Model Context Protocol (MCP) standard. This system helps LLMs remember the context of work done over the entire history of a project, even across multiple sessions. It uses semantic search with embeddings to provide relevant context from past interactions and development decisions.
Features
- Project-based memory organization
- Semantic search using Ollama embeddings (nomic-embed-text model, 768 dimensions)
- Multiple memory types:
- Conversations: Dialog context and important discussions
- Code: Implementation details and changes
- Decisions: Key architectural and design choices
- References: Links to external resources and documentation
- Rich metadata storage including:
- Implementation status
- Key decisions
- Files created/modified
- Code changes
- Dependencies added
- Tagging system for memory organization
- Relationship tracking between memories
Prerequisites
- Node.js (v18 or later)
- Ollama running locally (for embeddings)
- Must have the
nomic-embed-text
model installed
- Must have the
- SQLite3
Installation
- Clone the repository
- Install dependencies:
npm install
- Build the project:
npm run build
- Create a
.env
file with required configuration:OLLAMA_HOST=http://localhost:11434 DB_PATH=memory.db
Usage
-
Start the server in development mode:
npm run dev
This will:
- Compile TypeScript
- Copy schema files
- Start the server with auto-reload
-
The server connects via stdio for Cursor compatibility
Database Schema
The system uses SQLite with the following tables:
Core Tables
projects
: Project information and metadatamemories
: Memory entries storing various types of development contextembeddings
: Vector embeddings (768d) for semantic search capabilities
Organization Tables
tags
: Memory organization tagsmemory_tags
: Many-to-many relationships between memories and tagsmemory_relationships
: Directed relationships between memory entries
MCP Tools
The following tools are available through the MCP protocol:
Memory Management
store-dev-memory
: Create new development memories with:- Content
- Type (conversation/code/decision/reference)
- Tags
- Code changes
- Files created/modified
- Key decisions
- Implementation status
list-dev-memories
: List existing memories with optional tag filteringget-dev-memory
: Retrieve specific memory by IDsearch
: Semantic search across memories using embeddings
Development
For development:
npm run dev
This will:
- Kill any existing server instances
- Rebuild the TypeScript code
- Copy the schema.sql to the dist directory
- Start the server in development mode
Dependencies
Key dependencies:
@modelcontextprotocol/sdk@^1.7.0
: MCP protocol implementationbetter-sqlite3@^9.4.3
: SQLite database interfacenode-fetch@^3.3.2
: HTTP client for Ollama APIzod@^3.22.4
: Runtime type checking and validation
Project Structure
memory-mcp-server/
├── src/
│ ├── db/
│ │ ├── init.ts # Database initialization
│ │ └── service.ts # Database service layer
│ ├── dev-memory.ts # Development memory helpers
│ ├── index.ts # Main server implementation
│ └── schema.sql # Database schema
├── dist/ # Compiled JavaScript
├── package.json # Project configuration
└── tsconfig.json # TypeScript configuration
Contributing
Contributions are welcome! Please ensure you:
- Write clear commit messages
- Add appropriate documentation
- Follow the existing code style
- Add/update tests as needed